salve, riporto di seguito lo sketch, il problema è che quando carico il programma arduino non esegue la verifica della condizione e non esegue il programma.
il programma dovrebbe mantenere il pin digitale al livello alto finchè la condizione è vera ma non lo esegue anzi manda al livello alto altri piedini.
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
}
void loop() {
if(0 == LOW)
{
digitalWrite(4, HIGH);
}
if(1 == LOW)
{
digitalWrite(5, HIGH);
}
if(2 == LOW)
{
digitalWrite(6, HIGH);
}
if(3 == LOW)
{
digitalWrite(7, HIGH);
}
}
Ciao
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
il codice racchiudilo con l'apposito tag come indicato nel regolamento.
Per rispondere al tuo quesito:
per verificare lo stato di un ingresso non puoi controllare come hai fatto tu ma devi utilizzare la funzione digitalRead
Se modifichi il codice con la digitalRead i confronti funzioneranno come desideri, però una volta che il pin di input è stato posto a livello alto nessuno spegnerà più il rispettivo pin di output, per ottenere il funzionamento che desideri devi inserire anche i rami else di ciascun if mettendo i pin non più a HIGH ma a LOW.
E' anche possibile eliminare gli if/else sostituendo il valore fisso HIGH delle varie digitalWrite con il valore negato restituito dalla digitalRead. In questo modo il codice sarà più leggero da eseguire e leggere.
if(0 == LOW) non leggi mica il livello logico del pin.
Dove hai lasciato il digitalRead()?
Non usare i pin 0 e 1 perché é attacata l'adattatore USB.
Ciao Uwe
ah grazie, potreste farmi un esempio su come sarebbe lo sketch. grazie.
if(digitalRead(2) == LOW){
digitalWrite(6, HIGH);
}
e come consigliato, non usare i pin 0 e 1, sono riservati alla seriale USB
grazie mille, siete stati fondamentali.