[Risolto] Info pulsante

Salve a tutti,
sto cercando di aggiungere un pulsante ad un progetto per una incubatrice.
Nel setup ho aggiunto:

  pinMode(6, INPUT);

e nel loop:

  int eggsRotation=digitalRead(6);
  Serial.println(eggsRotation);
//  debug("eggs "+ eggsRotation);
  if (eggsRotation == HIGH) {  
    debug("eggs rotation on");    
    //digitalWrite(2, HIGH);
  }
  else if (eggsRotation == LOW)  {
    debug("eggs rotation off");    
    //digitalWrite(2, LOW);
  }

Per quanto riguarda l'elettronica ho eseguito questo schema

Il risultato è che la variabile eggsRotation, in modo alternato, è di valore 0 e 1 anche se non collego il filo per la lettura dello stato del pulsante, se premo il pulsante lo ignora ha sempre lo stesso comportamento.

E' normale ??

Su arduino c'è collegato Tiny RTC e due relè.

Avete consigli?
Grazie

nemo2002:
...
Il risultato è che la variabile eggsRotation, in modo alternato, è di valore 0 e 1 anche se non collego il filo per la lettura dello stato del pulsante ...

Ti stai rispondendo da solo ...

Le porte di Arduino (della MCU) sono ad alta impedenza e NON possono essere lasciate libere senza un segnale ben definito, pena ... captare anche il passaggio di una mosca (... ed oscillare tra LOW ed HIGH a caso) XD XD XD

Hai due strade ... scegliere se la porta è normalmente HIGH (la soluzione più semplice) o normalmente LOW ...

... se decidi per la porta normalmente HIGH, la pressione del pulsante dovrà portare il pin a massa. Potrai impostare lo stato fisso ad HIGH attivando le resistenze di pull-up interne alla MCU con l'istruzione

pinMode(6, INPUT_PULLUP);

.. Se invece vuoi che la porta normalmente stia LOW e con il pulsante la porti HIGH ... dovrai mettere una resistenza che tiene il pin normalmente a massa ... una 10K dovrebbe andar bene :wink:

Occhio comunque hai "rimbalzi" ... ogni interruttore che si apre o si chiude ... genera una serie di rimbalzi e dovrai applicare una tecnica di "deboucing" per avere indicazioni stabili :wink:

Guglielmo

Grazie per la risposta,
il mio vano tentativo, era quello di utilizzare il sitema PULL-DOWN con questo schema :

E' giusto questo schema?

Lei dice :

il pin normalmente a massa ... una 10K

Significa che lo schema che ho usato è errato, infatti la resistenza da 10k va sul gnd, e una da 330 su pin di lettura dello stato.
Quale schema devo usare?
Poi risolverò il problema dei rimbalzi, ma fino ad adesso non sono riuscito a fare nulla con il pulsante.
Grazie

Lo schema è giusto ... considera che la 330 NON sarebbe strettamente necessaria ... quella serve quando usi il pin come OUTPUT per limitare la corrente assorbibile da Arduino, ma nel tuo caso usi il pin come INPUT ... :slight_smile:

Quando l'interruttore è aperto, il pin viene tenuto a GND alla serie R1 + R2, quando l'interruttore è chiuso, il pin va HIGH tramite la R1 ...

Comincia con un semplice programmino ... dichiari il pin in INPUT e ne leggi lo stato ... accendendo e spegnedo il LED che è sul pin 13 di Arduino ... così seri sicuro che il tutto funziona. poi ... lo applichi al tuo programma.

Ah ... occhio che nello schema ... il pin è il numero 8 ... nel tuo programma lo hai dichiarato sul 6 !!!

Guglielmo

Ok provo a semplificare, poi vado avanti.
Per quanto rigurda i pin ho provato a cabiarli diverse volte ci sarà stato un refuso.

Grazie

Ci sono riuscito,
c'era una saldatura che non toccava bene, dopo averla ripassata, funziona tutto.

Grazie a tutti