lunedì 26 gennaio 2015

Arduino - Accendiamo un LED tramite una fotoresistenza e visualizziamo il tutto su uno schermo LCD

Questo piccolo progetto, fa accendere un LED Rosso.
1)  quando la luce della fotoresistenza scende sotto il valore 300;
2)  ho inserito un pulsante che se premuto accende sempre lo stesso LED al rilascio il LED si spegne;

Inoltre ho inserito un potenziometro da 10K per regolare la retro illuminazione del dispaly.

 
Sotto ho inserito le foto con maggiori dettagli e il codice sorgente
































Ecco il codice:

  /*
   
      Test di Vincenzo Scozzaro
      Componenti
        1) Ardunino
        2) Dispaly LCD
        3) Resisenza da 2K
        4) Let
        5) Fotoresitenza
        6) Resistenza da 10k
     */
    
    // includi la libreria:
    #include <LiquidCrystal.h>
   
    #define BUTTON 8
   
    // inizializza la libreria con i numeri dei pin utilizzati
    LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
    int FotoPin = 1;
  
    int PinLuce = 11;
    int FotoValue;
   
    int PotentiometerPin = 0;
    int PotenzaValue = 0;
   
    int OldTimer = 0;
    int Ok = 0;
    int valButton = 0;

    void setup() {
      Serial.begin(9600); // inizializzazione porta seriale
      
      PotenzaValue = analogRead(PotentiometerPin); // leggo valore potenziometro
      //Imposto il PinLuce come OUTPUT
      pinMode(PinLuce, OUTPUT);
      pinMode(BUTTON, INPUT);
      
      // imposta il numero di colonne e righe del display utilizzato
      lcd.begin(16, 2);
     
      // Stampa i messaggi sull'LCD.
      lcd.setCursor(1, 0);
      lcd.print("Controllo LUCE");

      lcd.setCursor(0, 1);
      lcd.print("Sec");
     
      lcd.setCursor(8, 1);
      lcd.print("Luce"); 
     
    }
   
    void loop() {
      // Metti il cursore nella colonna 4, riga 1
      // (nota: la riga 1 è la seconda perchè il conteggio parte da 0):
      lcd.setCursor(4, 1);
      // Stampa il numero dei secondi trascorsi dal reset o accenzione:
      lcd.print(millis()/1000);
     
      // Acquisisco il valore
      FotoValue = analogRead(FotoPin);
     
      // Leggo il valore del Pulsante e lo assegno alla variabile
      valButton = digitalRead(BUTTON);
     
      // leggo valore potenziometro
      PotenzaValue = analogRead(PotentiometerPin); 

   
      
      // controlla che l'input sia HIGH (pulsante premuto) 
      if (valButton == HIGH) { 
         digitalWrite(PinLuce, HIGH);  //accende il led 
      }  else
      { 
         digitalWrite(PinLuce, LOW);   //spegne il led 
      } 

     //Con qesto codice scrivo il valore sul Display  una volta per ogni secondo 
     if (OldTimer!= millis()/1000)
          {
            OldTimer =millis()/1000;
            lcd.setCursor(13, 1);
            lcd.print(FotoValue);
           
            // scrivo il valore sulla seriale come debugging
            Serial.println(PotenzaValue);
            //Attivo il controllo luce solo dopo il primo secondo
            Ok = 1;
          }
    
    //Questa riga commentata se attiva fa partire il controllo solo dopo che è trascorso il primo secondo    
    //if (Ok == 1) {
      if (FotoValue< 300) {
        digitalWrite(PinLuce, HIGH);
      } else  {
        digitalWrite(PinLuce, LOW);
      }
    //}
  }

Nessun commento:

Posta un commento