Funzione While per accendere e spegnere un led

Salve a tutti. Lo scopo del programmino che ho scritto dovrebbe essere quello di accendere un led non appena un sensore legge un riferimento.

Nel programma fuori dal While ho inserito un delay perchè solo così mi sono accorto che appena parte il programma il led si accende per un attimo e poi resta spento anche se il sensore diventa HIGH.

Ecco il codice:

const int LedPin = 13;
const int SensorPin1 = 8;
int SensorState1 = 0;

void setup(){

pinMode (LedPin, OUTPUT);
pinMode (SensorPin1, INPUT);
}

void loop(){

while(SensorState1==0) {
SensorState1 = digitalRead(SensorPin1);
if(SensorState1 = 1) {
digitalWrite(LedPin, HIGH);
}
}
delay(10);
digitalWrite(LedPin, LOW);
}

Come mai il While non viene eseguito come vorrei? Grazier a tutti Titta :wink:

 if(SensorState1 = 1) {

diventa

 if(SensorState1 == 1) {

devi fare un confronto, non un'assegnazione, altrimenti l'if è sempre vero e sensorstate varrà sempre 1

a questo punto tu hai acceso il led se sensorState1==1, ritorni alla condizione del while che è falsa! allora esci dal ciclo e spegni la luce, a tempo 0.

io farei così

void loop(){
 SensorState1 = digitalRead(SensorPin1);
 digitalWrite(LedPin, SensorState1);
}

tolgo il while e sfrutto il loop(), così puoi eseguire pure altro codice, altrimenti resti bloccato nel while

Ciao! Grazie del suggerimento. Non avrei mai immaginato quella soluzione. Grazie ancora Titta

p.s. il while non è una funzione, ma un ciclo di controllo :wink: