Salve, mi chiamo Stefano e sono nuovo in questo forum ho un problema con arduino 1.
Vorrei accendere e spegnere un led con un solo pulsante di un telecomando qualcuno riesce ad aiutarmi ?
Per il momento sono riuscito solo ad accendere e spegnere il led con 2 pulsanti diversi con questo programma :
#include <IRremote.h> #include <IRremoteInt.h>
int receiver = 8; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
void setup()
{
Serial.begin(9600); // for serial monitor output
irrecv.enableIRIn(); // Start the receiver
pinMode(9, OUTPUT); // Pin 9 output
}
void loop()
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
irrecv.resume();// receive the next value
}
if ( results.value == 0xFFA25D){ //tasto 6 sul telecomando
digitalWrite(9, HIGH); // set the LED on
}
if ( results.value == 0xFF629D){ //tasto 4 sul telecomando
digitalWrite(9, LOW); // set the LED 0ff
}
}
Per il tuo programma puoi farlo tranquillamente con un pulsante, devi semplicemente appoggiarti ad una variabile...
Esempio, se il codice è 0xFFA25D && statoLed == false Allora accendi e imposti statoLed = true
se il codice è 0xFFA25D && statoLed == true Allora spegni e imposti statoLed = false
Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.
Per il tuo programma puoi farlo tranquillamente con un pulsante, devi semplicemente appoggiarti ad una variabile...
Esempio, se il codice è 0xFFA25D && statoLed == false Allora accendi e imposti statoLed = true
se il codice è 0xFFA25D && statoLed == true Allora spegni e imposti statoLed = false
Ora mi sono presentato nella sezione apposita
Grazie per l'info.
Quindi ora come diventerebbe il mio codice postato sopra ?
nid69ita:
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.
nid69ita:
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.
if ( results.value == 0xFFA25D){ //tasto 6 sul telecomando
stato=(stato==LOW ? HIGH : LOW); // inverte stato con if in linea del C
digitalWrite(9, stato);
}
dovrai anche dichiarare la variabile stato ad inizio programma e nella setup inizializzarla a LOW
Grazie dei consigli di entrambi ho risolto allego il codice funzionante per l'accesnsione di 4 led distinti ognuno con 1 suo pulsante del telecomando che accende e spegne il led.
#include <IRremote.h>
#include <IRremoteInt.h>
int receiver = 8; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
char stato;
void setup()
{
Serial.begin(9600); // for serial monitor output
irrecv.enableIRIn(); // Start the receiver
pinMode(9, OUTPUT); // Pin 9 output
pinMode(10, OUTPUT); // Pin 9 output
pinMode(11, OUTPUT); // Pin 9 output
pinMode(12, OUTPUT); // Pin 9 output
stato==LOW;
}
void loop()
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
irrecv.resume();// receive the next value
}
if ( results.value == 0xFFA25D){ //tasto 6 sul telecomando
stato=!stato; // inverte stato con if in linea del C
digitalWrite(9, stato);
delay(250);
}
else if ( results.value == 0xFF629D){ //tasto 6 sul telecomando
stato=!stato; // inverte stato con if in linea del C
digitalWrite(10, stato);
delay(250);
}
else if ( results.value == 0xFFE21D){ //tasto 6 sul telecomando
stato=!stato; // inverte stato con if in linea del C
digitalWrite(11, stato);
delay(250);
}
else if ( results.value == 0xFF22DD){ //tasto 6 sul telecomando
stato=!stato; // inverte stato con if in linea del C
digitalWrite(12, stato);
delay(250);
}
}