prova modulo bluetooth e led

ciao a tutti ho provato a scrivere un programma semplicissimo per far accendere un led, dove ho sbagliato? vorrei collegare l’arduino tramite smartphone e quindi con un applicazione imposto 1 o 0 sui pin, ma come lo chiamo l’input del bluetooth?
vi posto lo sketch che ho" buttato giu" come esempio:

#include <SoftwareSerial.h>

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);
  mySerial.begin(9600); // setto la comunicazione
   Serial.println("ok");
   delay(1000);                //a cosa serve questo delay?
}


void loop()
{
   while (mySerial.available())
   {
     char val= mySerial.read();
     if (val=1){digitalWrite(2,HIGH);}
     else{digitalWrite(2,LOW);}
   }
}

Non conosco i moduli blueetooth. Comunque nel tuo codice ci sono un pò di errori:

if (val=1) { digitalWrite(2,HIGH); }

versione corretta

if (val=='1') { digitalWrite(2,HIGH); }

Il confronto in C si deve usare == altrimenti = è assegnazione. Poi il valore letto dalla read() è un carattere, quindi '1' e non 1

Poi cambia

while (mySerial.available())

in

if (mySerial.available()>0)

Il while non serve a nulla perchè, di suo, la loop() è già un ciclo infinito

Se hai collegato correttamente il TX bluetooth con RX SoftwareSerial e il RX Bluetooth con il TX SoftwareSerial ed hai fatto le correzioni che ti ha detto Nid ... deve andare ... altrimenti metti il codice come lo hai modificato che guardiamo ...

Guglielmo

Ti sei scordato questa modifica: versione corretta

if (val=='1') { digitalWrite(2,HIGH); }

Tu non ricevi il valore 1 ma il carattere '1'

@ nonloso95 ... perdona, ma dovresti dedicare un po'più di tempo allo studio del C ... perché questi sono proprio i fondamenti ...

Nid ti ha detto '1' e NON "1" ... sono due cose BEN DIFFERENTI !!!

Guglielmo

ci sto provando insieme ad un pò di pratica.