Buona sera a tutti Signori.
Sto riscontrando un problema con il codice che vi linko qui sotto. Ho necessità di ricevere un messaggio nella comunicazione Seriale in base a quali LED ho accesi.
#define LED1 53 // LED1 collegato al pin digitale 53
#define LED2 51 // LED2 collegato al pin digitale 51
#define LED3 49 // LED3 collegato al pin digitale 49
#define BUTTON 7 // pin di input dove è collegato il pulsante
int val = 0; // si userà val per conservare lo stato del pin di input
void setup() {
Serial.begin(9600); //inizializza la porta seriale
pinMode(LED1, OUTPUT); // imposta il pin digitale come output
pinMode(LED2, OUTPUT); // imposta il pin digitale come output
pinMode(LED3, OUTPUT); // imposta il pin digitale come output
pinMode(BUTTON, INPUT); // imposta il pin digitale come input
pinMode(LED2,HIGH);
pinMode(LED1,HIGH);
pinMode(LED3, LOW);
}
void loop() {
val = digitalRead(BUTTON); // legge il valore dell'input e lo conserva
if ((val) == HIGH && digitalRead(LED1) == HIGH && digitalRead(LED2) == LOW && digitalRead(LED3) == LOW) {
Serial.println("aiuto1"); //scrive l'aiuto 1
}
if ((val) == HIGH && digitalRead(LED1) == HIGH && digitalRead(LED2) == HIGH && digitalRead(LED3) == LOW) {
Serial.println("aiuto2"); //scrive l'aiuto 2
}
if ((val) == HIGH && digitalRead(LED1) == HIGH && digitalRead(LED2) == HIGH && digitalRead(LED3) == HIGH) {
Serial.println("aiuto3"); //scrive l'aiuto 3
}
}
Con questa logica di funzionamento io dovrei quindi ricevere la scritta "aiuto2" perché ho lasciato i LED2 e LED3 spenti tuttavia il Seriale non mi fornisce nessuna comunicazione. Se invece scrivo il codice in questo modo:
#define LED1 53 // LED1 collegato al pin digitale 53
#define LED2 51 // LED2 collegato al pin digitale 51
#define LED3 49 // LED3 collegato al pin digitale 49
#define BUTTON 7 // pin di input dove è collegato il pulsante
int val = 0; // si userà val per conservare lo stato del pin di input
void setup() {
Serial.begin(9600); //inizializza la porta seriale
pinMode(LED1, OUTPUT); // imposta il pin digitale come output
pinMode(LED2, OUTPUT); // imposta il pin digitale come output
pinMode(LED3, OUTPUT); // imposta il pin digitale come output
pinMode(BUTTON, INPUT); // imposta il pin digitale come input
pinMode(LED2,HIGH);
pinMode(LED1,HIGH);
pinMode(LED3, LOW);
}
void loop() {
val = digitalRead(BUTTON); // legge il valore dell'input e lo conserva
if ((val == HIGH) && digitalRead(LED1 == HIGH) && digitalRead(LED2 == LOW) && digitalRead(LED3 == LOW)) {
Serial.println("aiuto1"); //scrive l'aiuto 1
}
if ((val == HIGH) && digitalRead(LED1 == HIGH) && digitalRead(LED2 == HIGH) && digitalRead(LED3 == LOW)) {
Serial.println("aiuto2"); //scrive l'aiuto 2
}
if ((val == HIGH) && digitalRead(LED1 == HIGH) && digitalRead(LED2 == HIGH) && digitalRead(LED3 == HIGH)) {
Serial.println("aiuto3"); //scrive l'aiuto 3
}
}
Così da cambiare la condizione dal tipo:
if ((LED1) == HIGH)) a ------------> if ((LED1 == HIGH))
allora mi parte la comunicazione ma invece che darmi scritto solo "aiuto2" mi manda in Seriale tutte e tre le scritte in successione "aiuto1 aiuto2 aiuto2"
Come c**** è possibile!?
GRAZIE.