venerdì 22 marzo 2013

Ancora sui Pulsanti

- Arduino partiamo da zero - n°3

 

Ancora sui Pulsanti - Gestiamo più di un pulsante ....


Oggi vedremo come gestire più di un pulsante lo skecth presentato è la sintesi del codice utilizzato per la  "gestione pulsanti" del Luxmetro.

In questo caso ho lasciato solo quanto indispensabile per la gestione dell'evento pressione di un pulsante.

Ognuno potrà quindi utilizzare questo codice per gestire "N" pulsanti con poche e semplici modifiche.

I pulsanti  qui accendono o spengono dei led, potrete utilizzarli per  gestire altri eventi applicando il vostro codice in aggiunta a questo.


Per provare questo codice occorre:

3 Led ( Rosso, Giallo, Verde ) ma vanno bene anche diversi. 

3 (R4-R5-R6) Resistenze da 330 ohm.

3 ( R1-R2-R3)Resistenze da 10K.

3 Pulsanti.

Una BB, filo per collegamenti.






Realizzate il seguente schema:







Ecco qui lo skecth


* Sergio & Adriano Prenleloup

    

    20/03/2013

 Pulsanti v. 1.3



Questo sketch è una sintesi di quanto già

pubblicato nel post Luxmetro per la gestione

delle modalità di lavoro (old,min-max,lux/Fc).



In questo esempio si utilizzano tre bottoni che accendono con una pressione

il relativo led ( PulanteRosso/LedRosso), (PulsanteGiallo/LedGiallo), 

(PulsanteVerde/LedVerde).

Per spengere il relativo led si preme una seconda volta.



Utilizzando questo sketch con opportune modifiche si possono gestire

un numero di pulsanti diversi, che possono a sua volta svolgere funzioni

diverse, nei vostri lavori.



La funzione antrimbalzo è impostata con "delay(15)" caso per caso

potrà essere regolata con tempi diversi.



*/





//pulsanti = pin

int Rosso_Button = 6;  

int Giallo_Button = 7; 

int Verde_Button = 8; 





//stato corrente dei bottoni

int stato_bottoni[3];

boolean stato_switch[3];





// led = pin

 int Led_Rosso  = 0;

 int Led_Giallo = 1;

 int Led_Verde  = 2;









void setup() 

{

  

  // Pulsanti

  pinMode (Rosso_Button, INPUT);

  pinMode (Giallo_Button, INPUT);

  pinMode (Verde_Button, INPUT);

  

  // Led

  pinMode (Led_Rosso, OUTPUT);

  pinMode (Led_Giallo, OUTPUT);

  pinMode (Led_Verde, OUTPUT);

   

  stato_bottoni[0] = 0;

  stato_bottoni[1] = 0;

  stato_bottoni[2] = 0;

  

  digitalWrite (Led_Rosso, LOW);

  digitalWrite (Led_Giallo, LOW);

  digitalWrite (Led_Verde, LOW);



}    





void aggiornaStato(int bottone, int& statoBottoneVecchio, boolean& statoSwitch)

{

  //Si legge lo stato corrente del bottone (se premuto o no)

  int statoBottoneCorrente = digitalRead (bottone);

  

  //Se lo stato corrente del bottone è cambiato (diverso dal vecchio stato)

  //si deve gestire il nuovo stato

  if (statoBottoneCorrente != statoBottoneVecchio)

  {

      //se stiamo passando da rilasciato a premuto allora gestiamo la 

      //logica antirimbalzo e attiviamo/disattiviamo lo swith

     if (statoBottoneCorrente == HIGH)

     {

       delay(15);

       statoSwitch = !statoSwitch;

     }

     //il nuovo stato diventa lo stato corrente

     statoBottoneVecchio = statoBottoneCorrente;  

  }

}



void controllaPulsante()

{

    aggiornaStato(Rosso_Button, stato_bottoni[0], stato_switch[0]);

    aggiornaStato(Giallo_Button, stato_bottoni[1], stato_switch[1]);

    aggiornaStato(Verde_Button, stato_bottoni[2], stato_switch[2]);

}





void loop()

{



  controllaPulsante();

  

 //**** Gestione Led Rosso, con Pulsante Rosso



  if (stato_switch[0] == 1)

  

  {  

    digitalWrite(Led_Rosso, HIGH);   

  }   

  else

  {  

    digitalWrite(Led_Rosso, LOW);    

  }  

  

  //**** Gestione Led Giallo, con Pulsante Giallo

  

  if (stato_switch[1] == 1)

  

  {  

    digitalWrite(Led_Giallo, HIGH); 

  }   

  else

  {  

    digitalWrite(Led_Giallo, LOW);    

  }  

  

  //***** Gestione Led Verde con Pulsante Verde

  

  if (stato_switch[2] == 1)

  

  {  

    digitalWrite(Led_Verde, HIGH);   // accende il led  

  }   

  else

  {  

    digitalWrite(Led_Verde, LOW);    //spegne il led  

  }  

  

     

}


//end


Scaricate qui lo skecth



ecco un video che vi mostra il funzionamento:




Attendo Vostri commenti.
Un saluto a tutti.
Sergio

Nessun commento:

Posta un commento

Vi ringrazio per la lettura e vi invito al prossimo post.
Se il post vi è stato utile, vi è piaciuto oppure no, scrivete un commento.

Un saluto a tutti.
Sergio

Copyright - Condizioni d’uso - Disclaimer
http://avventurarduino.blogspot.it/2012/10/inizia-lavventura-arduino-12-settembre.html