Utilizzo del telecomando con Arduino
In questo progetto viene mostrato come sia possibile accende e spegnere alcuni led tramite telecomando.
Per far questo è necessario un sensore a infrarossi, e - naturalmente - un telecomando. Un qualsiasi telecomando. Nel codice che segue viene utilizzato il monitor seriale per visualizzare il codice inviato dal telecomando. Questa funzione non è solo utile in sede di test, ma anche per scrivere il codice stesso, se non si conoscono, a priori, le specifiche del telecomando stesso.
Azionamento di attuatori tramite telecomando
modificaIl progetto, così come si presenta, accende e spegne alcuni led. Tuttavia ogni led ha un significato. In questa sede rappresenta il controllo verso una lampada, un termostato, o qualsiasi altra cosa si desideri automatizzare. Sarà sufficiente sostituire il led con un relè e si potrà controllare anche un dispositivo ad alta tensione.
Schema di montaggio
modificaLo schema seguente rappresenta i collegamenti necessari per far sì che il circuito funzioni. Il microcontrollore fornisce tensione anche al sensore a infrarossi (il componente rappresentato in color nero nella breaboard) il quale restituisce il codice inviato dal telecomando alla scheda.
Dopodiché si collegano i led (in questo caso cinque) con le opportune resistenze per limitare la corrente, come illustrato in figura.
Codice
modifica// Parametri per la gestione del controllo remoto
int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
// Codici del telecomando
#define code1 16724175
#define code2 16718055
#define code3 16743045
#define code4 16716015
#define code5 16726215
// Uscite di Arduino
#define pin1 2
#define pin2 3
#define pin3 4
#define pin4 5
#define pin5 6
// Parametri in uscita iniziali
boolean i1 = LOW;
boolean i2 = LOW;
boolean i3 = LOW;
boolean i4 = LOW;
boolean i5 = LOW;
void setup()
{
Serial.begin(9600);
// Abilita il controllo remoto
irrecv.enableIRIn();
// Modalità di utilizzo dei pin
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
// Mostra ogni dato nel monitor seriale
Serial.println(results.value, HEX);
Serial.println(results.value);
irrecv.resume();
// Se è un dato atteso modifica l'output corrispondente
switch (results.value) {
case code1:
i1 = !i1;
digitalWrite(pin1, i1);
break;
case code2:
i2 = !i2;
digitalWrite(pin2, i2);
break;
case code3:
i3 = !i3;
digitalWrite(pin3, i3);
break;
case code4:
i4 = !i4;
digitalWrite(pin4, i4);
break;
case code5:
i5 = !i5;
digitalWrite(pin5, i5);
break;
default:
break;
}
}
Espansioni suggerite
modificaCome anticipato, lo scopo non è accendere o spegnere un led a distanza, ma dare un significato a questa azione. Cosa rappresenta il led? Rispondendo a questa domanda si svilupperanno progetti decisamente più interessanti.