salve,
ho utilizzato un VS0038 per leggere tramite il seguente sketch i valori generati da alcuni pulsanti di un normale telecomando. I valori che ottengo sono del tipo: "CF2F9DAB"
#include <IRremote.h>
int RECV_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);
irrecv.resume(); // Receive the next value
}
}
Ora quello che ora vorrei fare è riuscire ad accendere e spegnere un led tramite l'utilizzo di due pulsanti e quindi di due codici che ricevo in ingresso.
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int led = 4;
int val = 0; //led spento di default
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(led, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume();
if (results.value == CF2F9DAB ) {(val <= 1);}
if (results.value == B2BBAC69) {(val <= 0);}
}
if (val = 0){digitalWrite(led, LOW);}
if (val = 1){digitalWrite(led, HIGH);}
}
.
Quando compilo mi dice che quei numeri in esadecimale non sono stati dichiarati, cosa che non accade se li metto due numeri binari a caso. Cosa ho sbagliato?
Mi pare che quella libreria restituisca degli oggetti di tipo stringa, quindi non c'entra la notazione esadecimale (a proposito, un numero è riconosciuto come esadecimale se anteponi il prefisso 0x). Quindi il confronto dovresti farlo con "CF2F9DAB", se non ricordo male.
No, errato. Restituisce un unsigned long, quindi hai solo omesso il prefisso 0x.
Esempio: 0xCF2F9DAB
Non sono sicuro (non sono un programmatore), ma i decimali gli esadecimali li ho sempre visti usati con la dichiarazione di genere "0x" davanti ... non e' che per caso manca quella ?
EDIT: ecco, come al solito Leo mi frega per un'incollatura XD
ti ringrazio (ancora?! XD) perché questi link sono sempre utili...
la verità è che sto studiando anche altri linguaggi e questo porta a confondermi le idee :.
leo72:
... cambiando linguaggio ti incarti sempre con la sintassi
Ecco lo spunto per una nuova idea di progetto ... un linguaggio di programmazione che accetti qualsiasi sintassi di qualsiasi altro linguaggio ... facile facile ... XD XD XD
Studiati un linguaggio esotico, allora... poi ne riparliamo..
Questo è un HelloWorld in Brainfuck (il nome è tutto un programma):
++++++++++
[
>+++++++>++++++++++>+++>+<<<<-
]
>++. Loop iniziale (dopo viene stampata una H)
>+. e
+++++++. l
. l
+++. o
>++.
<<+++++++++++++++.
>.
+++.
------.
--------.
>+.
>.
Non preoccuparti ... pochi mesi sul forum, e anche per te' la pazzia diventera' una condizione normale ... XD ]
(ok, magari non al livello di lock o altri come lui ... loro hanno studiato duro e si sono impegnati per anni, per riuscire ad arrivare a quei livelli ... ])
lock: a quante "miglia di ingranaggi virtuali" corrisponde Pepita ? ... )
leo72:
... cambiando linguaggio ti incarti sempre con la sintassi
Ecco lo spunto per una nuova idea di progetto ... un linguaggio di programmazione che accetti qualsiasi sintassi di qualsiasi altro linguaggio ... facile facile ... XD XD XD
Buona idea allora la funzione buonaidea Stampa sulla seriale "buona idea" oppure fa lampeggiare 4 volte il LED 13?