istruzione for

Ciao a tutti volevo un informazione, perchè avvolte quando mi esegue una delle due
istruzioni, invece di scrivermi solo 4 numeri 5 sulla seriale ne scrive di più? o addirittura mi va in sequenza continua ?

if (valPulsante8 == LOW)
    {
      if (statoPulsante8 == false)
      {
      for (int A = 0; A < 4; A++){
        delay(600);
        Serial.println("5");// ON Scale
       // Serial.flush();
      }
        statoPulsante8 = true;
        
      }
    }
    else if (valPulsante8 == HIGH) 
    {
     if (statoPulsante8 == true)
     {
      for (int A = 0; A < 4; A++){
        delay(600);
        Serial.println("6");// OFF Scale
      //  Serial.flush();      
      }
       statoPulsante8 = false;
       
      }
    }

Con solo questo pezzo di codice è difficile dare una risposta, conviene metterlo tutto. Hai collegato o impostato le resistenze di pullup? Metti anche lo schema, può essere utile. Sopratutto cosa vuoi fare?

Stefano

int pulsante8 = 8;
boolean statoPulsante8 = false;
void setup() {                  
  
Serial.begin(9600);
pinMode(pulsante8, INPUT);
}


void loop(){
 int  valPulsante8 = digitalRead(pulsante8);
if (valPulsante8 == LOW)
    {
      if (statoPulsante8 == false)
      {
      for (int A = 0; A < 4; A++){
        delay(600);
        Serial.println("5");// ON Scale
        Serial.flush();
      }
        statoPulsante8 = true;
        
      }
    }
    else if (valPulsante8 == HIGH) 
    {
     if (statoPulsante8 == true)
     {
      for (int A = 0; A < 4; A++){
        delay(600);
        Serial.println("6");// OFF Scale
        Serial.flush();      
      }
       statoPulsante8 = false;
       
      }
    }
}

sono 6 pulsanti tutti uguali ne ho messo solo uno nel programma. in allegato lo schema

Ok, intanto la R2 non serve e se attivi l'interna di pullup:

digitalWrite(pulsante8, HIGH);

elimini anche la R1 ;) poi forse

 else if (valPulsante8 == HIGH)

potrebbe essere solo

else

Però non mi è chiaro, l'evento scatenante dovrebbe essere il pulsante schiacciato (LOW) ma così fai qualcosa anche quando è HIGH... cosa vuoi fare?

Stefano

in effetti funziona cosi, quello è un interruttore se viene chiuso mi va in HIGH e mi manda il numero 6 per 4 volte sulla seriale e poi si ferma. Si ferma nel scrivere il numero 6 con la funzione false / true. altrimenti mi scriverebbe il numero sei all’infinito e non mi va bene. al contrario se apro l’interruttore mi diventa LOW e mi scrive per 4 volte il numero 5. I numeri 5 e 6 vengono letti da un tablet che mi crea una funzione sul programma che ho creato sul tablet. Ora mi capita avvolte per non dire spesso questi errori tipo :
i numeri 5 e 6 vanno in continuazione sulla seriale
avvolte mi esce anche il numero 56 o 65.

rimbalzi?

elpapais: Ovvio che SI ;D

Gian70Luca: contrariamente ad un pulsante “ideale” che apri e chiudi, un pulsante “reale” quando lo premi o lo rilasci provoca questo:

… quindi il pin in ingresso riceve N volte HIGH e LOW !

Devi attuare una tecnica di “debouncing” (cerca con Google) che può essere sia SW che HW.

Ti allego alcuni possibili schemi di “debouncing” fatto via HW (… che è da preferire e che è utilizzabile anche nei casi in cui siano coinvolti interrupts).

Guglielmo

debouncing_hw.pdf (22.8 KB)

Ciao Guglielmo, scusa se chiedo ma nel mio caso devo usare pull-up interno giusto ?

:) In effetti adesso che ci penso io ho usato quello schema per il sensore del vento. Ho messo la resistenza da 100 homm e un poliestere da 22nF. Mi trovo con questo schema attuale perchè sono partito avendo un pulsante e dopo ho messo l'interruttore. Grazie mille, modifico la scheda. :( Solo per conoscenza, in merito al problema che mi dava il tablet nelle letture sbagliate, c'era nella programmazione Android il valore del IntervalTimer dati seriali a 1000 (1 sec) effettuava le letture ogni secondo. l'ho sistemato a 300mS cosi si aggancia bene con i dati che invia Arduino. Adesso funziona decisamente meglio e veloce :) :). Io ringrazio sempre tutti per l'aiuto che date. Grazie a voi riesco ad andare avanti con il mio progetto. :grinning:

Gian70Luca: Ciao Guglielmo, scusa se chiedo ma nel mio caso devo usare pull-up interno giusto ?

I tre schemi sono, più o meno, equivalenti ... ... usa quello che ti è più comodo e ... una pulsanti di una certa qualità ;)

Guglielmo