/* Tutorial Luce Temporizzata con comando locale e remoto via web
*
* http://etabetastudio.blogger.com
*
* Pinto Massimo - Chistian Acqua
*/
const int buttonPin = 5; // pin dello switch button
const int ledPin = 13; // pin del led di segnalazione
const int relPin = 12; // pin del rele
int buttonState = 0; // stato switch
int ledrelon = 0; //stato led e rele
unsigned long conteggio = 5000; // durata temorizzazioni in millisecondi
unsigned long previsioneMillis=0; // variabili di inizio e fine conteggio
unsigned long correntiMillis=0; // variabili di inizio e fine conteggio
void setup(){
Serial.begin(9600); // inizializziamo la seriale
pinMode(ledPin, OUTPUT); //inizializziamo i pin
pinMode(relPin, OUTPUT); //inizializziamo i pin
pinMode(buttonPin, INPUT);//inizializziamo i pin
digitalWrite(ledPin, LOW);//inizializziamo i pin
}
void loop(){
unsigned long correntiMillis = millis(); // memorizziamo il valore di millis
buttonState = digitalRead(buttonPin); //catturiamo lo stato dello switch button
// Se lo Switch button è alto
if (buttonState == HIGH) {
Serial.println("bottone giu"); // facciamo un po di stampe per capire cosa succede
ledrelon = 1; // abilitiamo l'ingresso alla condizione successiva
previsioneMillis = correntiMillis + conteggio; // creiamo il valore di off sommando i millis catturati prima + il tempo impostato di off
Serial.print("correntiMillis: "); // facciamo un po di stampe per capire cosa succede
Serial.println(correntiMillis); // facciamo un po di stampe per capire cosa succede
Serial.print("previsioneMillis: "); // facciamo un po di stampe per capire cosa succede
Serial.println(previsioneMillis); // facciamo un po di stampe per capire cosa succede
}
if(ledrelon == 1){
digitalWrite(ledPin, HIGH); // accendiamo il led
digitalWrite(relPin, HIGH); // eccitiamo il rele
delay(500); // questo delay non è fondamentale serve a leggere le stampe sul serial monitor
Serial.print("correntiMillis: ");
Serial.println(correntiMillis);
if (correntiMillis >= previsioneMillis) {
delay(10);
digitalWrite(ledPin, LOW); // raggiunto il tempo di spegnimento tutto va giù
digitalWrite(relPin, LOW);
ledrelon = 0; // reimpostiamo ledrelon per iniziare nuvamente un ciclo
}
}
}