Go Down

Topic: problema con operatore if (Read 38 times) previous topic - next topic

alexferrario

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);
               }
     
     
 
}

fabpolli

#1
Today at 05:18 pm Last Edit: Today at 05:26 pm by fabpolli
Ciao

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- qui le pinout delle varie schede by xxxPighi: Pinout
- qui una serie di link generali utili: Link Utili

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.

uwefed

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

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy