Buona sera a tutti sto cercando di capire alcune cose che x voi saranno sicuramente banale ma potrebbe essere di aiuto forse ad altri neofiti come me, ho compilato il seguente codice x verificare di aver capito il "void" ma mi trovo ad avere un comportamento del sistema per me strano:
ho tre led di diverso colore che voglio comandare in base al valore di un potenziometro.
con il codice compilato ottengo però che nel primo if sono tutti spenti e fin qui bene, poi si verifica questo i led si accendono a coppie di due nonostante i digitalWrite indichino il contrario,
non riesco a capire dove sbaglio.Grazie
#define ledrosso 4 //definisco i pin dei 3 led
#define ledverde 2
#define ledgiallo 3
const int POT = A0;
//int value = 0;// Variabile dove e' memorizzato la lettura del segnale analogico
int Vpot = 0;// Variabile dove e' memorizzatala conversione in tensione del valore digitale
void setup() {
pinMode(POT, INPUT);
pinMode(ledrosso, OUTPUT);
pinMode(ledverde, OUTPUT);
pinMode(ledgiallo, OUTPUT);
Serial.begin(9600);
}
void loop() {
int Vpot = analogRead(0);
Vpot = map(Vpot , 0, 1023 , 0, 1023);
// value = analogRead(POT); // leggo valore potenziometro
// Vpot = map( myValue, 0, 1023, 0, 1023);
Serial.println( Vpot ); // scrivo il valore sulla seriale come debugging
if ((Vpot == 0) && (Vpot <= 100)) {
SPENTO();
//delay(500);
}
else if ((Vpot >= 150) && (Vpot <= 300)) {
LEDROSSO();
//delay(500);
}
else if ((Vpot >= 350) && (Vpot <= 599)) {
LEDGIALLO();
//delay(500);
}
else if ((Vpot >= 650) && (Vpot <= 899)) {
LEDVERDE();
//delay(500);
}
else (Vpot >= 900); {
EXT();
//delay(500);
}
}
void LEDROSSO() {
digitalWrite(ledrosso, HIGH);
digitalWrite(ledgiallo, LOW);
digitalWrite(ledverde, LOW);
delay(500);
}
void LEDVERDE() {
digitalWrite(ledrosso, LOW);
digitalWrite(ledgiallo, LOW);
digitalWrite(ledverde, HIGH);
delay(500);
}
void LEDGIALLO() {
digitalWrite(ledrosso, LOW);
digitalWrite(ledgiallo, HIGH);
digitalWrite(ledverde, LOW);
delay(500);
}
void EXT() {
digitalWrite(ledrosso, HIGH);
digitalWrite(ledgiallo, HIGH);
digitalWrite(ledverde, HIGH);
delay(500);
}
void SPENTO() {
digitalWrite(ledrosso, LOW);
digitalWrite(ledgiallo, LOW);
digitalWrite(ledverde, LOW);
}