Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <DS3231.h>
- DS3231 rtc(SDA, SCL);
- Time orario;
- int OnHour;
- int OnMin; // variabili SET ora ON/OFF
- int OffHour;
- int OffMin;
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27,20,4);
- #include "DHT.h"
- #define DHTPIN 2
- #define DHTTYPE DHT22 //lettura temperatura e umidità
- DHT dht(DHTPIN, DHTTYPE);
- float h = dht.readHumidity();
- // Read temperature as Celsius (the default)
- float t = dht.readTemperature();
- float hic = dht.computeHeatIndex(t, h, false);
- int tempo = millis();
- long lasttempo;
- int pulsSU = 3;
- int pulsGIU= 4;
- int pulsSET =5;
- int pulsMENU= 6;
- int Ton; // so che non serve a un cazzo, ma ormai c'è e ce la lascio
- int Toff; // pure lei...
- int EXIT; // e pure lei!!!!
- int umidita; // anche questa
- int temperatura; // è giusto consumare un po di byte alla cazzo di cane
- int step_funzione=0;
- void setup() {
- Serial.begin(9600);
- rtc.begin();
- lcd.init();
- lcd.backlight();
- dht.begin();
- pinMode (pulsSU,INPUT);
- pinMode (pulsGIU,INPUT);
- pinMode (pulsSET,INPUT);
- pinMode (pulsMENU,INPUT);
- }
- void loop() {
- orario = rtc.getTime();
- if(orario.hour == OnHour && orario.min == OnMin){
- digitalWrite(12,HIGH);
- Serial.println("LIGHT ON");
- }
- else if(orario.hour == OffHour && orario.min == OffMin){
- digitalWrite(12,LOW);
- Serial.println("LIGHT OFF");
- }
- switch (step_funzione) {
- case 0: // STATO INIZIALE
- INIZIO();
- break;
- case 1:
- set_timeON();
- break;
- case 2:
- set_timeOFF();
- break;
- // case 3:
- // break;
- }
- }
- void INIZIO (){ // questa è la schermata HOME, quella che sarà sempre visualizzata
- t = dht.readTemperature(); // letture temperatura e umudità dal dht22
- h = dht.readHumidity();
- lcd.setCursor(6,0);
- lcd.print(orario.hour);
- lcd.print(":");
- lcd.print(orario.min);
- if ((millis) - (lasttempo>1500)){ // flikera solo le righe 108 e 112
- lasttempo=millis();
- lcd.setCursor(0,1);
- lcd.print("TEMP: C.");
- lcd.setCursor(6,1);
- lcd.print(t);
- lcd.setCursor(0,2);
- lcd.print("UMIDITA': %");
- lcd.setCursor(9,2);
- lcd.print(h);
- }
- if(digitalRead(pulsMENU) == HIGH){ // se premo il pulsante entro in modalità set orario ON
- delay(150);
- //parte statica
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("SET TIME LIGHT-ON");
- delay(1000);
- step_funzione=1;
- }
- }
- void set_timeON(){ // setting orario di ora ON
- while(1){
- if(digitalRead(pulsSU) == HIGH){
- delay(16);
- OnMin++;}
- if ( OnMin>59){
- OnMin=0;
- OnHour++;} // dico a questo ignorante di arduino che ci sono 24 ore e max 59 min..
- if (OnHour>23){
- OnHour=0;}
- lcd.setCursor(7,2);
- if (OnHour < 10) lcd.print(" "); // se le ore sono meno di 10, togli il numero rompi coglioni in +
- lcd.print(OnHour);
- lcd.print(":"); // metto i 2 punti che fanno brutto
- if (OnMin < 10) lcd.print(" "); // stessa minestra per i minuti
- lcd.print(OnMin);
- if (digitalRead(pulsSET)==HIGH){ // dopo aver impostato orario ON, se premo il tasto SET mi dice che è andato ok. e vado al set timeOFF
- delay(150);
- lcd.clear();
- lcd.setCursor (1,2);
- lcd.print("TIME-ON IMPOSTATO");
- delay(1000);
- lcd.clear();
- step_funzione=2;
- break;
- }
- if (digitalRead(pulsMENU)==HIGH){ // se invece ti sei accorto di aver cagato fuori dal water non c'è problema.. premi il tasto menu e ti dirà che hai annullato
- delay(150); // ti sei accorto che non c'è il minuti--???
- lcd.clear(); // se devi impostare le 1:10 ma sei andato avanti con il pulsante, scopri l'utilità di questo tasto..
- lcd.setCursor(1,2);
- lcd.print("SET-ANNULLATO");
- delay(1000);
- lcd.clear();
- OnHour=0;
- OnMin=0;
- step_funzione=0;
- break;}}}
- void set_timeOFF(){ // uguale all'altro..ma qui imposti il time OFF
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("SET TIME LIGHT-OFF");
- delay(1000);
- while(1){
- if(digitalRead(pulsSU) == HIGH){
- delay(16);
- OffMin++;}
- if (OffMin>59){
- OffMin=0;
- OffHour++;}
- if (OffHour>23){
- OffHour=0;}
- lcd.setCursor(7,2);
- if (OffHour < 10) lcd.print(" ");
- lcd.print(OffHour);
- lcd.print(":");
- if (OffMin < 10) lcd.print(" ");
- lcd.print(OffMin);
- if (digitalRead(pulsSET)==HIGH){
- delay(150);
- lcd.clear();
- lcd.setCursor (1,2);
- lcd.print("TIME-OFF IMPOSTATO");
- delay(1000);
- lcd.clear();
- step_funzione=0;
- break;
- }
- if (digitalRead(pulsMENU)==HIGH){
- delay(150);
- lcd.clear();
- lcd.setCursor(1,2);
- lcd.print("SET-ANNULLATO");
- delay(1000);
- lcd.clear();
- OffHour=0;
- OffMin=0;
- step_funzione=0;
- break;}}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement