stringhe

char val= mySerial.read();
    if (val=='A')               //accendi luce1
      digitalWrite(15,HIGH);
    if(val=='B')                //spegni luce1
      digitalWrite(15,LOW);
      
      if (val=='C')             //accendi luce2
      digitalWrite(16,HIGH);

salve a tutti ho buttato giu queste righe di programma ed è sorto un problema, io vorrei mettere anzichè un solo carattere come A o B, ecc vorrei poter scrivere una parola intera.
come devo fare? grazie a tutti per l'aiuto

Hai 3 soluzioni:

  1. leggerti il Reference :wink: :wink:
  2. usare una stringa di tipo C++, ossia un oggetto String:
    String() - Arduino Reference
  3. usare una stringa in stile C, ossia array di char:
    http://arduino.cc/en/Reference/String

Non te lo consiglio è una complicazione inutile non funzionale, chi riceve A sa che A significa apri
Il codice numerico 65 in ascii è il carattere A

Un array sul ricevente all'indice 0 ha una striga "Apri"
all'indice 1 "close" ecc

65, 66, 67. 68 rispettivamente A, B, C, D
Quando il ricevente riceve A, scrivi codice rivecuto - 65 = 0
all'indice 0 c'è la stringa "Apri"
Se ricevi C, codice ricevuto - 65 = 2
All'indice 2 c'è la stringa "Chiudi" ecc

So perfettamente perché vuoi una stringa e non un solo carattere perché ci siamo passati tutti e ti dico che è una complicazione inutile.

Ciao.

  1. te ne sbatti di usare una frase ma crei delle costanti con il nome che vuoi ma il valore un semplice char.
    Ovvero
#define K_ACCENDI_LUCE1 'A'
#define K_SPEGNI_LUCE1 'a'
#define K_ACCENDI_LUCE2 'B'
#define K_SPEGNI_LUCE2 'b'
...
    char val= mySerial.read();
    if (val==K_ACCENDI_LUCE1)               //accendi luce1
      digitalWrite(15,HIGH);
    if(val==K_SPEGNI_LUCE1)                 //spegni luce1
      digitalWrite(15,LOW);    
    if (val==K_ACCENDI_LUCE2)               //accendi luce 2
      digitalWrite(16,HIGH);

Inoltre i caratteri 'A' e 'a' sono diversi, perciò 'A' potrebbe essere accendi luce 1 e 'a' spegni luce 1, ovvero usi il maiuscolo/minuscolo per indicare accendi/spegni.
52 lettere (26 minuscole+26 maiuscole) per 26 luci, bastano ?