Utente:Hackerino3/Arduino

Da Wikiversità, l'apprendimento libero.

Contaclick con led RGB[modifica]

Il progetto che segue è pensato per la realizzazione di un conta click in grado di contare da 0 a 9 grazie ad un pulsante e, ad ogni click il led RGB si accende.Quando il contatore raggiunge il numero 10 si resetta il led RGB lampeggia per 1,5 secondi.

Descrizione del progetto[modifica]

Il sistema ha questo funzionamento:

  • in ingresso abbiamo un pulsante, che capta ogni click.
  • in uscita abbiamo due segnali visivi, uno dato da un Display a 7 segmenti, l'altro è dato dal led RGB.

La realizzazione del progetto necessità di

  • Arduino UNO (1);
  • Breadboard (1);
  • Resistenze 220Ω (12);
  • Display LCD a 7 segmenti [Catodo Comune] (1);
  • pulsante (1);
  • Led RGB (1);
  • Diversi cavetti;

Schema elettrico[modifica]

Il circuito utilizza un pulsante che se azionato incrementa il valore nel Display, e cambia colore al led RGB

Schema Elettrico sviluppato con Fritzing.

Schema di montaggio[modifica]

Schema di montaggio sviluppato con Fritzing.

Codice[modifica]

/*

PROGETTO

DI                 
    _   _  _  _           _          _____
   | \ | |(_)| |         | |        /  ___|                                    
   |  \| | _ | | __ ___  | |  __ _  \ `--. 
   | . ` || || |/ // _ \ | | / _` |  `--. \ 
   | |\  || ||   <| (_) || || (_| | /\__/ /                                 
   \_| \_/|_||_|\_\\___/ |_| \__,_| \____/                        

                                                     ________________
                                                     \\\\\SCHEMA/////
                                                                 
                                                           pinA
                                                        __________
                                                       /         /
                                                pinF  /         /  pinB
                                                     /_________/ <-------------------pinG
                                                    /         /
                                           pinE    /         /  pinC
                                                  /_________/
                                                      pinD




          pin Arduino
 (pinA);     2        //CENTRALE ALTO 
 (pinB);     3        //ALTO DESTRA
 (pinC);     4        //BASSO DESTRA
 (pinD);     5        //CENTRALE BASSO
 (pinE);     6        //BASSO SINISTRA
 (pinF);     7        //ALTO SINISTRA
 (pinG);     8        //CENTRALE


                                                       

Il display utilizzato è a Catodo Comune








\_______________________________________________________________________________/
///////////////////////////////////INIZIO CODICE\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
*/
    


int pinA  = 2;                 //
int pinB  = 3;                 //
int pinC  = 4;                 //
int pinD  = 5;                 //Display
int pinE  = 6;                 //
int pinF  = 7;                 //
int pinG  = 8;                 //

int pinPulsante = 10;           //Pulsante connesso al pin 9

int counter = 0;               //Stato contatore


int valButtonOld = LOW;        //Stato Pulsante


int Delay1 = 200;              //Delay RGB


int pinLed1 = 9;               //
int pinLed2 = 11;              //Pin del LED RGB
int pinLed3 = 12;              //


void RGB() {
  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,LOW);      // Led RGB YELLOW
  digitalWrite(pinLed3,HIGH);
  
  delay(Delay1);
  
  digitalWrite(pinLed1,LOW);
  digitalWrite(pinLed2,LOW);      // Led RGB RED
  digitalWrite(pinLed3,HIGH);
 
  delay(Delay1);
  
  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,LOW);       // Led RGB GREEN
  digitalWrite(pinLed3,LOW);    
    
  delay(Delay1);

  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,LOW);        // Led RGB YELLOW
  digitalWrite(pinLed3,HIGH);

  delay(Delay1);

  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,HIGH);       // Led RGB WHITE
  digitalWrite(pinLed3,HIGH);

  delay(Delay1);

  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,HIGH);       // Led RGB CYANO
  digitalWrite(pinLed3,LOW);

  delay(Delay1); 

  digitalWrite(pinLed1,LOW);
  digitalWrite(pinLed2,HIGH);       // Led RGB PINK
  digitalWrite(pinLed3,HIGH);

  delay(Delay1);

  digitalWrite(pinLed1,LOW);
  digitalWrite(pinLed2,HIGH);       // Led RGB PURPLE
  digitalWrite(pinLed3,LOW);    

  delay(Delay1);

  digitalWrite(pinLed1,LOW);
  digitalWrite(pinLed2,LOW);        // Led RGB RED
  digitalWrite(pinLed3,HIGH);
  }

void zero(){
  digitalWrite(pinA,HIGH);
  digitalWrite(pinB,HIGH);
  digitalWrite(pinC,HIGH);
  digitalWrite(pinD,HIGH);            // Stampa 0
  digitalWrite(pinE,HIGH);
  digitalWrite(pinF,HIGH);
  digitalWrite(pinG,LOW);
}

void uno(){
  digitalWrite(pinA,LOW);
  digitalWrite(pinB,HIGH);
  digitalWrite(pinC,HIGH);
  digitalWrite(pinD,LOW);            // Stampa 1
  digitalWrite(pinE,LOW);
  digitalWrite(pinF,LOW);
  digitalWrite(pinG,LOW);
}

void due(){
  digitalWrite(pinA,HIGH);
  digitalWrite(pinB,HIGH);
  digitalWrite(pinC,LOW);
  digitalWrite(pinD,HIGH);          // Stampa 2
  digitalWrite(pinE,HIGH);
  digitalWrite(pinF,LOW);
  digitalWrite(pinG,HIGH);
}
void tre(){

  digitalWrite(pinA,HIGH);
  digitalWrite(pinB,HIGH);
  digitalWrite(pinC,HIGH);
  digitalWrite(pinD,HIGH);          // Stampa 3
  digitalWrite(pinE,LOW);
  digitalWrite(pinF,LOW);
  digitalWrite(pinG,HIGH);
}

void quattro(){
  digitalWrite(pinA,LOW);          
  digitalWrite(pinB,HIGH);         
  digitalWrite(pinC,HIGH);         
  digitalWrite(pinD,LOW);           //Stampa 4   
  digitalWrite(pinE,LOW);          
  digitalWrite(pinF,HIGH);         
  digitalWrite(pinG,HIGH);
}

void cinque(){

  digitalWrite(pinA,HIGH);          
  digitalWrite(pinB,LOW);         
  digitalWrite(pinC,HIGH);         
  digitalWrite(pinD,HIGH);           //Stampa 5  
  digitalWrite(pinE,LOW);          
  digitalWrite(pinF,HIGH);         
  digitalWrite(pinG,HIGH);  
}

void seii() {
  
  digitalWrite(pinA,HIGH);
  digitalWrite(pinB,LOW);
  digitalWrite(pinC,HIGH);
  digitalWrite(pinD,HIGH);           // Stampa 6 sul display
  digitalWrite(pinE,HIGH);
  digitalWrite(pinF,HIGH);
  digitalWrite(pinG,HIGH);
}

void sette(){
  digitalWrite(pinA,HIGH);          
  digitalWrite(pinB,HIGH);         
  digitalWrite(pinC,HIGH);         
  digitalWrite(pinD,LOW);           //Stampa 7  
  digitalWrite(pinE,LOW);          
  digitalWrite(pinF,LOW);         
  digitalWrite(pinG,LOW);  
}

void otto(){
  digitalWrite(pinA,HIGH);          
  digitalWrite(pinB,HIGH);         
  digitalWrite(pinC,HIGH);         
  digitalWrite(pinD,HIGH);           //Stampa 8  
  digitalWrite(pinE,HIGH);          
  digitalWrite(pinF,HIGH);         
  digitalWrite(pinG,HIGH);   
}

void nove(){  
  digitalWrite(pinA,HIGH);          
  digitalWrite(pinB,HIGH);         
  digitalWrite(pinC,HIGH);         
  digitalWrite(pinD,HIGH);           //Stampa 9  
  digitalWrite(pinE,LOW);          
  digitalWrite(pinF,HIGH);         
  digitalWrite(pinG,HIGH); 
}









void setup() {
 
  pinMode(pinA, OUTPUT);
  pinMode(pinB, OUTPUT);
  pinMode(pinC, OUTPUT);
  pinMode(pinD, OUTPUT);
  pinMode(pinE, OUTPUT);
  pinMode(pinF, OUTPUT);
  pinMode(pinG, OUTPUT);

  pinMode(pinPulsante, INPUT);

  digitalWrite(pinA,LOW);
  digitalWrite(pinB,LOW);
  digitalWrite(pinC,LOW);
  digitalWrite(pinD,LOW);
  digitalWrite(pinE,LOW);
  digitalWrite(pinF,LOW);
  digitalWrite(pinG,LOW);
}

void loop() {

int valButton = digitalRead(pinPulsante);

  if(valButton==HIGH && valButtonOld==LOW)

{

     counter=counter+1;

}

valButtonOld = valButton ;





  if (counter==0)
  {
  zero();
  
  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,LOW);      // Led RGB YELLOW
  digitalWrite(pinLed3,HIGH);
  }


  if (counter==1)
  {
  uno();

  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,LOW);      // Led RGB YELLOW
  digitalWrite(pinLed3,HIGH);
  }
  
  if (counter==2)
  {
  due();
  
  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,LOW);       // Led RGB GREEN
  digitalWrite(pinLed3,LOW); 
  }
  
  if (counter==3)
  {
  tre();


  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,LOW);        // Led RGB YELLOW
  digitalWrite(pinLed3,HIGH);
  }

  if (counter==4)
  {
   
  quattro();
  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,HIGH);       // Led RGB WHITE
  digitalWrite(pinLed3,HIGH);

  }


  if (counter==5)
  {
  cinque();

  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,HIGH);       // Led RGB CYANO
  digitalWrite(pinLed3,LOW);
  }

  
  if (counter==6)
  { 
  seii();
 
  digitalWrite(pinLed1,LOW);
  digitalWrite(pinLed2,HIGH);       // Led RGB PINK
  digitalWrite(pinLed3,HIGH);

  }


  
  if (counter==7)
  {
  sette();
  

  digitalWrite(pinLed1,LOW);
  digitalWrite(pinLed2,LOW);        // Led RGB RED
  digitalWrite(pinLed3,HIGH);
  }

  
  if (counter==8)
  {
  otto();

  digitalWrite(pinLed1,HIGH);
  digitalWrite(pinLed2,HIGH);       // Led RGB CYANO
  digitalWrite(pinLed3,LOW);

  }

  
  if (counter==9)
  {
  nove();
  
  if (counter==9)
  {
  digitalWrite(pinLed1,LOW);
  digitalWrite(pinLed2,LOW);      // Led RGB SPENTO
  digitalWrite(pinLed3,LOW);
  }



  
  if (counter >9)

{ 

  counter = 10;
}

  if (counter =10)

{ 
  RGB();

  delay(2000);
}



if (counter == 10)

{

 counter = 0 ; 
  }
 }
}

Conclusioni[modifica]

Il Conta Click è pronto e funzionante, la realizzazione di questo circuito permette di visualizzare sul display a 7 segmenti ogni click che facciamo, ogni click cambia il colore del led RGB e al raggiungimento del decimo click il led lampeggia per 1,5 secondi. In conclusione il progetto è riuscito.