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.
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento