Accendere un led con bluetooth... qualcosa non và...

Adesso mi sembra giusto pubblicare il codice che ho finito di realizzare per controllare dei relè...

#include  // includo la libreria per la comunicazione seriale

SoftwareSerial mySerial(10, 11); // imposto i pin per la comunicazione seriale
// Collegare i pin nel seguente modo: RX=>11 TX=>10

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);

   mySerial.begin(9600); // setto la comunicazione
   Serial.println("Ivan Scordato Creation");
   delay(1000);
}


void loop()
{
   while (mySerial.available())
   {
       char dato= mySerial.read(); // "dato" è il valore che viene ricevuto dalla seriale
       switch(dato)
       {
         case 'A': // Se ricevo la lettera A,
         {
  digitalWrite(12, HIGH); // eccito il relè collegato al pin12
            mySerial.println("Relè 1 ON");
           break;
         }
         case 'a': // Se ricevo la lettera a
         {
  digitalWrite(12, LOW); // Spenfo il relè
           mySerial.println("Relè 1 OFF");
           break;
         }    
                   // E così anche di seguito...
                  case 'B':
         {
  digitalWrite(12, HIGH);
            mySerial.println("Relè 2 ON");
           break;
         }
         case 'b':
         {
  digitalWrite(12, LOW);
           mySerial.println("Relè 2 OFF");
           break;
         }    


         case 'C':
         {
  digitalWrite(12, HIGH);
            mySerial.println("Relè 3 ON");
           break;
         }
         case 'c':
         {
  digitalWrite(12, LOW);
           mySerial.println("Relè 3 OFF");
           break;
         }    
                  case 'D':
         {
  digitalWrite(12, HIGH);
            mySerial.println("Relè 4 ON");
           break;
         }
         case 'd':
         {
  digitalWrite(12, LOW);
           mySerial.println("Relè 4 OFF");
           break;
         }    
                  case 'E':
         {
  digitalWrite(12, HIGH);
            mySerial.println("Relè 5 ON");
           break;
         }
         case 'e':
         {
  digitalWrite(12, LOW);
           mySerial.println("Relè 5 OFF");
           break;
         }    
                  case 'F':
         {
  digitalWrite(12, HIGH);
            mySerial.println("Relè 6 ON");
           break;
         }
         case 'f':
         {
  digitalWrite(12, LOW);
           mySerial.println("Relè 6 OFF");
           break;
         }    
                  case 'G':
         {
  digitalWrite(12, HIGH);
            mySerial.println("Relè 7 ON");
           break;
         }
         case 'g':
         {
  digitalWrite(12, LOW);
           mySerial.println("Relè 7 OFF");
           break;
         }    
                  case 'H':
         {
  digitalWrite(12, HIGH);
            mySerial.println("Relè 8 ON");
           break;
         }
         case 'h':
         {
  digitalWrite(12, LOW);
           mySerial.println("Relè 8 OFF");
           break;
         }    
       }       
   } 
}
// BUONA SPERIMENTAZIONE!

P.S. Nel codice che ho postato ho dimenticato di cambiare i pin... in tutti ho scritto 12

Ivan_Isk:
P.S. Nel codice che ho postato ho dimenticato di cambiare i pin... in tutti ho scritto 12

:grin: :grin: :grin: :grin: ... puoi sempre editare il post e correggere :wink:

Guglielmo

Dato che hai i relè tutti collegati uno dopo l'altro, dal pin 2 al pin 9 ... ti do un'indicazione ... sulla quale, se riesci a ragionare sopra ... riduci il codice a pochissime righe ...

In ASCII (lo standard con cui sono codificati i caratteri) ...

... il carattere '1' vale 0x31, il carattere '2' vale 0x32 ... il carattere '9' vale 0x39
... il carattere 'A' vale 0x41, il carattere 'B' vale 0x42 ... il carattere 'I' vale 0x49

Quindi '1' ... '9' meno 0x30 da un numero da 1 a 9
Quindi 'A' ... 'I' meno 0x40 da un numero da 1 a 9

Se il carattere è tra '1' e '9' ... sottraggo 0x30 e, ad esempio, accendo il pin 1 .. 9
Se il carattere è tra 'A' e 'I' ... sottrago 0x40 e, ad esempio, spengo il pin 1 .. 9

.....

E' un giochetto da smanazzatori di bit ... ma, a volte, come in questo caso, permette di ridurre drasticamente il codice ... :wink:

Salvando quanto hai fatto e che funziona ... se non hai fretta, puoi provare a pensarci e trovare una soluzione più compatta :grin:

Buon divertimento ...

Guglielmo

grazie del "trucchetto",
questa sera provo :slight_smile: