venerdì 12 ottobre 2012
Arduino controllo IR 2° Parte
Adesso, arriva la parte interessante, vediamo come accendere e spegnere un led, tramite il telecomando.
Avete salvato il codice esadecimale del telecomando, spiegato nella 1°parte?
Bene.
In questa immagine si vede il circuito, il sensore IR è collegato al Pin2 e il lede che lampeggia ad ogni tasto premuto sul pin 13.
i PIN di arduino che ci serviranno sono: Pin 4 led, Pin 2 uscita sensore IR, Pin 5 led, Pin13 led.
veniamo al codice adesso
#include <IRremote.h>
int RECV_PIN = 2;//uscita IR
int RELAY_PIN = 4;//Led
IRrecv irrecv(RECV_PIN);
decode_results results;
// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) {
// decode_results *results = (decode_results *)v
void dump(decode_results *results) {
int count = results->rawlen;
if (results->decode_type == UNKNOWN) {
Serial.println("Could not decode message");//non riesce a codificare
}
else if (results->decode_type == NEC) {
Serial.print("Orion: ");
}
Serial.print(results->value, HEX);//visualizza il codice esadecimale
Serial.print(" (");
Serial.print(results->bits, DEC);
Serial.println(" bits)");
}
void setup()
{
pinMode(RELAY_PIN, OUTPUT);
pinMode(13, OUTPUT);//Led che lampeggia ad ogni segnale ricevuto
pinMode(5, OUTPUT);//Led
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
int on = 0;
unsigned long last = millis();
void loop() {
if (irrecv.decode(&results)) {
// If it's been at least 1/4 second since the last
// Led IR lampeggia ad ogni tasto premuto
if (millis() - last > 250) {
on = !on;
digitalWrite(13, HIGH );
delay(200);
digitalWrite(13, LOW );
delay(200);
dump(&results);
}
last = millis();
irrecv.resume(); // Receive the next value
}
if (results.value==0x1){Serial.println("Amstrad 1");//tasto 1 blink led Pin5
digitalWrite(5, HIGH);
delay(100);
digitalWrite(5, LOW);
delay(100);
};
if (results.value==0x2){Serial.println("Amstrad 2");//tasto 2 Led on/of
digitalWrite(RELAY_PIN, on ? HIGH : LOW);
};
}
Il led sul Pin13 lampeggia ad ogni tasto premuto, segno che il sensore funziona ma bisogna specificare il codice ad arduino affinchè esegua il comando desiderato.
if (results.value==0x1): 0x1 è il codice esadecimale del tasto 1 del mio telecomando, sostituitelo con il vostro codice.
f (results.value==0x2): 0x2 è il codice esadecimale del tasto 2 del mio telecomando, sostituitelo con il vostro codice.
Sbizzarritevi e divertitevi con questo esempio, e al prossimo Tutorial.
giovedì 11 ottobre 2012
Arduino controllo IR 1°Parte
In questo tutorial, vedremo come controllare le uscite di arduino con il telecomando della tv.
Per prima cosa scaricate la libreria Arduino-IRremote per arduino 1.0.
Scompattatela rinominatela: IRremote e fate copia/incolla nella cartella: arduino-1.0/libraries, poi aprite l'ide di arduino e cercate tra gli esempi, la voce IRremote, per trovare alcuni esempi.
Per poter permettere la comunicazione tra il telecomando e arduino,per prima cosa davrete caricare lo sketch che vi permetterà di associare un tasto al relativo codice esadecimale.
Sketch: IRrecvdemo
#include <IRremote.h>
int RECV_PIN = 11;//uscita del sensore collegato al pin 11
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);//visualizza nel monitor seriale il codice esadecimale*
irrecv.resume(); // Receive the next value
}
}
*siccome il telecomando invia 2 codici dello stesso tasto,una volta uno e una volta l'altro segnateli entrambi, che potranno tornare utili.
Per prima cosa scaricate la libreria Arduino-IRremote per arduino 1.0.
Scompattatela rinominatela: IRremote e fate copia/incolla nella cartella: arduino-1.0/libraries, poi aprite l'ide di arduino e cercate tra gli esempi, la voce IRremote, per trovare alcuni esempi.
Per poter permettere la comunicazione tra il telecomando e arduino,per prima cosa davrete caricare lo sketch che vi permetterà di associare un tasto al relativo codice esadecimale.
Sketch: IRrecvdemo
#include <IRremote.h>
int RECV_PIN = 11;//uscita del sensore collegato al pin 11
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);//visualizza nel monitor seriale il codice esadecimale*
irrecv.resume(); // Receive the next value
}
}
*siccome il telecomando invia 2 codici dello stesso tasto,una volta uno e una volta l'altro segnateli entrambi, che potranno tornare utili.
mercoledì 10 ottobre 2012
arduino Blink led rgb
In questo esempio vedremo come effettuare un blink con un led RGB e arduino, un intervallo di colori di 1 secondo ciascuno, rosso, verde, blu.
int red=9,
green=10,
blue=11,
i=0,
j=0,
color[]={red, green, blue}, // since array counts start a 0, color[0]=9, color[1]=10, color[2]=11
intensity[]={0, 0,0}; // one intensity level for each color
void setup()
{
// set pins as outputs
pinMode(red,OUTPUT);
pinMode(green,OUTPUT);
pinMode(blue,OUTPUT);
// turn off all colors
analogWrite(red,0);
analogWrite(green,0);
analogWrite(blue,0);
}
void loop()
{
analogWrite(red,255); // turn on red
delay(1000); // wait a sec
analogWrite(red,0); // turn off red
analogWrite(green,255); // turn on green
delay(1000); // wait a sec
analogWrite(green,0); // turn off green
analogWrite(blue,255); // turn on blue
delay(1000); // wait a sec
analogWrite(blue,0); // turn off blue
}
martedì 9 ottobre 2012
Comandare 2 servo motore con arduino
In questo esempio vedremo come pilotare due servo motore con arduino dal monitor seriale tramite la tastiera del pc.
il codice arduino:
#include <Servo.h>//include la libreria del servo
int minPulse1 = 0; // posizione minima o°
int maxPulse1 = 180; // posizione massima 180°
int turnRate1 = 10; // ruota di 10° alla volta
int minPulse2 = 0; // posizione minima o°
int maxPulse2 = 180; // posizione massima 180°
int turnRate2 = 10; // ruota di 10° alla volta
int buttonPin = 13; // pin that the trigger will be connected to
/** The Arduino will calculate these values for you **/
int centerServo1;
int centerServo2;
int pulseWidth1; // servo pulse width
int pulseWidth2; // servo pulse width
Servo servo1;
Servo servo2;
void setup() {
pinMode(buttonPin, OUTPUT);
servo1.attach(3);//dichiara il servo nel pin 3 PWM
servo2.attach(2);//dichiara il servo nel pin 2 PWM
centerServo1 = maxPulse1 - ((maxPulse1 - minPulse1)/2);
centerServo2 = maxPulse2 - ((maxPulse2 - minPulse2)/2);
pulseWidth1 = centerServo1;
pulseWidth2 = centerServo2;
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
Serial.println(" Arduino Serial Servo Control");
Serial.println("Press a, s, d, or w to move, spacebar to center, and f to fire");
Serial.println();
}
void loop() {
// check for serial input
if (Serial.available() > 0) {
int data = Serial.read(); // read the incoming byte:
digitalWrite(buttonPin, LOW); // turn the pin off on any incoming data
switch(data)
{
case 'a' : pulseWidth1 = pulseWidth1 - turnRate1; break;
case 'd' : pulseWidth1 = pulseWidth1 + turnRate1; break ;
case ' ' : pulseWidth1 = pulseWidth2 = centerServo1; break;
case 's' : pulseWidth2 = pulseWidth2 - turnRate1; break;
case 'w' : pulseWidth2 = pulseWidth2 + turnRate1; break ;
case 'f' : digitalWrite(buttonPin, HIGH); delay (1000); digitalWrite(buttonPin, LOW); break;
}
// stop servo pulse at min and max
if (pulseWidth1 > maxPulse1) { pulseWidth1 = maxPulse1; }
if (pulseWidth1 < minPulse1) { pulseWidth1 = minPulse1; }
// stop servo pulse at min and max
if (pulseWidth2 > maxPulse2) { pulseWidth2 = maxPulse2; }
if (pulseWidth2 < minPulse2) { pulseWidth2 = minPulse2; }
servo1.write(pulseWidth1);
servo2.write(pulseWidth2);
// print pulseWidth back to the Serial Monitor (uncomment to debug)
Serial.print("Servo 1: ");
Serial.print(pulseWidth1);
Serial.print(" Servo 2: ");
Serial.print(pulseWidth2);
Serial.println("degrees");
}
}
Adesso aprendo il monitor seriale visualizzerete il seguente testo:
Arduino Serial Servo Control
Press a, s, d, or w to move, spacebar to center, and f to fire
digitando uno dei tasti indicati sopra e premendo invio, vedrete il vostro servo muoversi
il codice arduino:
#include <Servo.h>//include la libreria del servo
int minPulse1 = 0; // posizione minima o°
int maxPulse1 = 180; // posizione massima 180°
int turnRate1 = 10; // ruota di 10° alla volta
int minPulse2 = 0; // posizione minima o°
int maxPulse2 = 180; // posizione massima 180°
int turnRate2 = 10; // ruota di 10° alla volta
int buttonPin = 13; // pin that the trigger will be connected to
/** The Arduino will calculate these values for you **/
int centerServo1;
int centerServo2;
int pulseWidth1; // servo pulse width
int pulseWidth2; // servo pulse width
Servo servo1;
Servo servo2;
void setup() {
pinMode(buttonPin, OUTPUT);
servo1.attach(3);//dichiara il servo nel pin 3 PWM
servo2.attach(2);//dichiara il servo nel pin 2 PWM
centerServo1 = maxPulse1 - ((maxPulse1 - minPulse1)/2);
centerServo2 = maxPulse2 - ((maxPulse2 - minPulse2)/2);
pulseWidth1 = centerServo1;
pulseWidth2 = centerServo2;
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
Serial.println(" Arduino Serial Servo Control");
Serial.println("Press a, s, d, or w to move, spacebar to center, and f to fire");
Serial.println();
}
void loop() {
// check for serial input
if (Serial.available() > 0) {
int data = Serial.read(); // read the incoming byte:
digitalWrite(buttonPin, LOW); // turn the pin off on any incoming data
switch(data)
{
case 'a' : pulseWidth1 = pulseWidth1 - turnRate1; break;
case 'd' : pulseWidth1 = pulseWidth1 + turnRate1; break ;
case ' ' : pulseWidth1 = pulseWidth2 = centerServo1; break;
case 's' : pulseWidth2 = pulseWidth2 - turnRate1; break;
case 'w' : pulseWidth2 = pulseWidth2 + turnRate1; break ;
case 'f' : digitalWrite(buttonPin, HIGH); delay (1000); digitalWrite(buttonPin, LOW); break;
}
// stop servo pulse at min and max
if (pulseWidth1 > maxPulse1) { pulseWidth1 = maxPulse1; }
if (pulseWidth1 < minPulse1) { pulseWidth1 = minPulse1; }
// stop servo pulse at min and max
if (pulseWidth2 > maxPulse2) { pulseWidth2 = maxPulse2; }
if (pulseWidth2 < minPulse2) { pulseWidth2 = minPulse2; }
servo1.write(pulseWidth1);
servo2.write(pulseWidth2);
// print pulseWidth back to the Serial Monitor (uncomment to debug)
Serial.print("Servo 1: ");
Serial.print(pulseWidth1);
Serial.print(" Servo 2: ");
Serial.print(pulseWidth2);
Serial.println("degrees");
}
}
Adesso aprendo il monitor seriale visualizzerete il seguente testo:
Arduino Serial Servo Control
Press a, s, d, or w to move, spacebar to center, and f to fire
digitando uno dei tasti indicati sopra e premendo invio, vedrete il vostro servo muoversi
lunedì 8 ottobre 2012
Ubuntu server webmin
Installare Webmin su Ubuntu
Webmin è un interfaccia web-based per l'amministrazione del sistema per Unix.
L'utilizzo di qualsiasi moderno browser, è possibile impostare gli account utente, Apache, DNS, condivisione di file e molto altro. Webmin elimina la necessità di modificare manualmente i file di configurazione di Unix, come / etc / passwd, e consente di gestire un sistema da console o remotely. Currently Non c'è nessun pacchetto Webmin nel tutorial Ubuntu repositories.
È possibile installare webmin per l'interfaccia web server, configurare apache2, mysql, server FTP etc...
vedremo come installare webmin in Ubuntu 12.04
Preparazione del sistema
Prima di tutto bisogna installare i seguenti pacchetti
sudo aptitude install perl libnet-SSLeay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl-perl libmd5
Ora scaricare l'ultima webmin utilizzando il seguente comando:
installare il pacchetto con il seguente comando:
sudo dpkg-i webmin_1.470_all.deb
Se volete installare e aggiornare Webmin tramite APT, modificare il file / etc / apt / sources.list sul sistema
sudo vi / etc / apt / sources.list
aggiungere la riga
deb http://download.webmin.com/download/repository sarge contrib
Salvare e chiudere il file
È inoltre necessario scaricare ed installare la chiave GPG con cui viene firmato il repository, con i comandi: cd / root
wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add-jcameron key.asc
A questo punto è possibile installare con i comandi:
sudo apt-get update
sudo apt-get install webmin
Ora è necessario aprire il browser Web e digitare quanto segue
https://your-server-ip:10000/
Ora si dovrebbe vedere simile alla schermata seguente
Ubuntu server gui
Per poter installare la parte grafica al vostro server dovete, per prima cosa dopo aver effettuato il login
digitare: sudo apt-get update (per aggiornare i pacchetti software)
poi: sudo apt-get install ubuntu-desktop
per installare l'interfaccia grafica di ubuntu
sudo apt-get install xubuntu-desktop
per installare l'interfaccia grafica di xubuntu
sudo apt-get install kubuntu-desktop
per installare l'interfaccia grafica di kubuntu
domenica 7 ottobre 2012
Arduino Web Server GUI
Adesso, dopo aver visto come realizzare un web server con arduino e visualizzare l'output su un browser, vediamo come realizzare un'interfaccia grafica per interagire con il nostro arduino.
In questo esempio accenderemo un led collegato ad arduino tramite un pulsante sul nostro browser.
//ARDUINO 1.0
//include tutti i pacchetti necessari
String readString;
#include <Ethernet.h>
#include <SPI.h>
boolean reading = false;
////////////////////////////////////////////////////////////////////////
//configurazione della rete
////////////////////////////////////////////////////////////////////////
byte ip[] = { 192, 168, 1, 17 }; //ip:modificabile, da digitare nel browser
byte gateway[] = { 192, 168, 1, 1 }; //non modificare
byte subnet[] = { 255, 255, 255, 255 }; //non modificare
// MAC address
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server = EthernetServer(80); //port 80
////////////////////////////////////////////////////////////////////////
void setup(){
Serial.begin(9600);
pinMode(2, OUTPUT);//Pin 2 led
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.println(Ethernet.localIP());
}
void loop(){
checkForClient();
}
void checkForClient(){
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
boolean sentHeader = false;
while (client.connected()) {
if (client.available()) {
if(!sentHeader){
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html>");
client.println("<head><title>Arduino accendere e spegnere LED</title>");
client.println("<center><h1>Accendere e spegnere LED</h1></center> </head>");
client.println("<body>");
client.println("<center>");
client.println("<table width=100>");
client.println("<form METHOD=get action=\"\">");
client.println("<input type=hidden name=\"c\" value=\"2\">");
client.println("<input type=submit value=\"LED On\">");
client.println("</form>");
client.println();
client.println("<form METHOD=get action=\"\">");
client.println("<input type=hidden name=\"c\" value=\"3\">");
client.println("<input type=submit value=\"LED Off\">");
client.println("</form>");
client.println();
client.println("</table>");
client.println("</center>");
client.println("</body>");
client.println("</html>");
sentHeader = true;
}
char c = client.read();
if(reading && c == ' ') reading = false;
if(c == '?') reading = true;
if(reading){
Serial.print(c);
switch (c) {
case '2':
//add code here to trigger on 2
digitalWrite(2, HIGH);
break;
case '3':
//add code here to trigger on 3
digitalWrite(2, LOW);
break;
}
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n') {
currentLineIsBlank = true;
}else if (c != '\r') {
currentLineIsBlank = false;
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n') {
currentLineIsBlank = true;
}else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop(); // chiude la connessione
}
}
In questo esempio accenderemo un led collegato ad arduino tramite un pulsante sul nostro browser.
//ARDUINO 1.0
//include tutti i pacchetti necessari
String readString;
#include <Ethernet.h>
#include <SPI.h>
boolean reading = false;
////////////////////////////////////////////////////////////////////////
//configurazione della rete
////////////////////////////////////////////////////////////////////////
byte ip[] = { 192, 168, 1, 17 }; //ip:modificabile, da digitare nel browser
byte gateway[] = { 192, 168, 1, 1 }; //non modificare
byte subnet[] = { 255, 255, 255, 255 }; //non modificare
// MAC address
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server = EthernetServer(80); //port 80
////////////////////////////////////////////////////////////////////////
void setup(){
Serial.begin(9600);
pinMode(2, OUTPUT);//Pin 2 led
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.println(Ethernet.localIP());
}
void loop(){
checkForClient();
}
void checkForClient(){
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
boolean sentHeader = false;
while (client.connected()) {
if (client.available()) {
if(!sentHeader){
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html>");
client.println("<head><title>Arduino accendere e spegnere LED</title>");
client.println("<center><h1>Accendere e spegnere LED</h1></center> </head>");
client.println("<body>");
client.println("<center>");
client.println("<table width=100>");
client.println("<form METHOD=get action=\"\">");
client.println("<input type=hidden name=\"c\" value=\"2\">");
client.println("<input type=submit value=\"LED On\">");
client.println("</form>");
client.println();
client.println("<form METHOD=get action=\"\">");
client.println("<input type=hidden name=\"c\" value=\"3\">");
client.println("<input type=submit value=\"LED Off\">");
client.println("</form>");
client.println();
client.println("</table>");
client.println("</center>");
client.println("</body>");
client.println("</html>");
sentHeader = true;
}
char c = client.read();
if(reading && c == ' ') reading = false;
if(c == '?') reading = true;
if(reading){
Serial.print(c);
switch (c) {
case '2':
//add code here to trigger on 2
digitalWrite(2, HIGH);
break;
case '3':
//add code here to trigger on 3
digitalWrite(2, LOW);
break;
}
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n') {
currentLineIsBlank = true;
}else if (c != '\r') {
currentLineIsBlank = false;
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n') {
currentLineIsBlank = true;
}else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop(); // chiude la connessione
}
}
Iscriviti a:
Post (Atom)




