Leggere stringa "1" o "0" con i2c... errore!

Ciao a tutti, sto provando a fare un piccolo allarme con due arduino...

Uno mini che pilota la il display e il pannellino per inserire/disinserire l'allarme, e un UNO (o eventualmente un MEGA, vedrò dopo) che gestisce la centrale.

Quando il codice immesso sulla centrale è corretto, l'antifurto deve attivarsi. Quindi arduino mini deve comunicare ad UNO o al MEGA (come ho detto si vedrà) il cambio di stato.

Pensavo di far inviare tramite i2c dal mini all'UNO un carattere "1" o "0" rispettivamente per acceso/spento...

Questo il pezzo di codice, che però non mi vuole compilare:

// L'allarme è stato inserito? (1=ON - 0=OFF)
 Wire.requestFrom(1, 1);
 Serial.println("Sistema inserito ?\n");

 char stato = Wire.read();
 
 if (stato == ("1"))
 {  
 // qui il codice è stato tagliato.

L'errore mi viene dato su "if stato" ecc ecc. e il messaggio è questo:

error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
* if (stato == ("1")*
* ^*

...posso capire dove sta l'errore? Ho letto la reference ma non ne sono venuto a capo... grazie!

stato è un char, e tu lo hai confrontato cun una stringa (o meglio array di char)

'1' - singolo apice -> char
"1" - doppio apice -> stringa

per cui dovrai fare il confronto in questo modo:

 if (stato == ('1'))
 {

o meglio

 if (stato == '1')
 {

..visto che quelle parentesi non hanno nessun significato

Ciao!

In C la comparazione di stringa non ha senso (per verificare uguaglianza di due stringhe si usano metodi quali strcmp). Devi definire 1 come char scrivendo '1' oppure ancora meglio usare byte e non char, stato == 1 oppure stato != 1.

Ciao,
scusa, perché usare i2c se devi trasmettere solo un 1 e uno 0? Non puoi semplicemente collegare un pin del mini all'UNO e impostare il pin a HIGH quando è acceso e LOW quando è spento? Ti risparmi pure un cavo.

ciao, Giovicavalla