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