Buonasera,
torno qui da voi per avere un consiglio su un problema che mi ritrovo nel codice che non riesco a trovare soluzione
nei mesi sono andato avanti nell'evoluzione del mio progetto cercando di semplificarlo e renderlo più snello nelle sue funzionalità
il problema che mi ritrovo e far andar d'accordo il comando automatico di attivazione gestito da RTC con quello manuale gestito da pulsanti
ovviamente i pin di uscita comando sono gli stessi e ovviamente mi ritrovo con la condizione e una funzione disabilita l'altra in funzione della loro posizione nel codice in loop
qualcuno di voi saprebbe consigliarmi come far capire ad arduino che le 2 funzioni sono complementari??
allego codice completo
*
* Created by Tizianoz
* Ultima modifica 31 Luglio 2024
*
/**********************************************************/
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include <avr/wdt.h>
/**********************************************************/
#define pinSettore1 6
#define pinSettore2 7
#define pinSettore3 8
#define pinSettore4 9
const int SW_pin = 13; // Joystick digital pin connected to switch output
const int X_pin = A0; // Joystick analog pin connected to X output
const int Y_pin = A1; // Joystick analog pin connected to Y output
/**********************************************************/
//Caratteri Speciali
byte frecciasu [8] = {
0b00100,
0b01110,
0b11111,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100
};
byte frecciagiu [8] = {
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b11111,
0b01110,
0b00100
};
byte frecciasinistra [8] = {
0b00001,
0b00011,
0b00111,
0b01111,
0b01111,
0b00111,
0b00011,
0b00001
};
byte frecciadestra [8] = {
0b10000,
0b11000,
0b11100,
0b11110,
0b11110,
0b11100,
0b11000,
0b10000
};
/**********************************************************/
int settore1[] = {05,00,05,20};
int settore2[] = {05,30,05,50};
int settore3[] = {06,00,06,20};
int settore4[] = {21,25,21,20};
char buffer[16];
unsigned long time=0;
unsigned long timeSet=0;
int setModeTime=2000;
/**********************************************************/
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x27,16,2);
char daysOfTheWeek[7][12] = {"DOM", "LUN", "MAR", "MER", "GIO", "VEN", "SAB"};
/**********************************************************/
//ATTIVAZIONE SETTORI MANUALE
int val;
int bottone1 = 2;
int statoLed1=LOW;
int bottone2 = 3;
int statoLed2=LOW;
int bottone3 = 4;
int statoLed3=LOW;
int bottone4 = 5;
int statoLed4=LOW;
/**********************************************************/
void setup() {
wdt_disable();
Serial.begin(9600);
Serial.println( "START" );
Wire.begin();
RTC.begin();
lcd.begin(16, 2);
lcd.backlight();
lcd.createChar (0, frecciasu);
lcd.createChar (1, frecciagiu);
lcd.createChar (2, frecciasinistra);
lcd.createChar (3, frecciadestra);
pinMode( pinSettore1,OUTPUT );
pinMode( pinSettore2,OUTPUT );
pinMode( pinSettore3,OUTPUT );
pinMode( pinSettore4,OUTPUT );
// ASSEGNAZIONE PIN SETTORE MANUALE
pinMode(bottone1, INPUT);
pinMode(bottone2, INPUT);
pinMode(bottone3, INPUT);
pinMode(bottone4, INPUT);
pinMode(SW_pin, INPUT); //Set joystick pushbutton as input
digitalWrite(SW_pin, HIGH); //Set joystick SW_pin High
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
RTC.adjust(DateTime(__DATE__, __TIME__));
}
digitalWrite( pinSettore1,LOW );
digitalWrite( pinSettore2,LOW );
digitalWrite( pinSettore3,LOW );
digitalWrite( pinSettore4,LOW );
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Irrigazione V1.0");
lcd.setCursor(0,1);
lcd.print("Created Tizianoz");
delay( 5000 );
lcd.clear();
LeggiEeprom();
//abilito il watchdog e imposto come tempo di reser 8 secondi
wdt_enable(WDTO_8S);
}
/**********************************************************/
void loop() {
int _button = ctrlButton();
Serial.print (digitalRead(bottone1));
Serial.print(' ');
Serial.print (digitalRead(bottone2));
Serial.print(' ');
Serial.print (digitalRead(bottone3));
Serial.print(' ');
Serial.print (digitalRead(bottone4));
Serial.print(' ');
Serial.print (_button);
Serial.println();
if ( RTC.isrunning()) {
DateTime now = RTC.now();
int _button = ctrlButton();
if ( _button == 0 || _button > 1) { time = millis(); }
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(' ');
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.print(' ');
Serial.print('-');
Serial.print(' ');
Serial.print("Settore 1");
Serial.print(' ');
Serial.print('(');
Serial.print(settore1[0]);
Serial.print(':');
Serial.print(settore1[1]);
Serial.print(' ');
Serial.print(settore1[2]);
Serial.print(':');
Serial.print(settore1[3]);
Serial.print(')');
Serial.print(' ');
Serial.print('-');
Serial.print(' ');
Serial.print("Settore 2");
Serial.print(' ');
Serial.print('(');
Serial.print(settore2[0]);
Serial.print(':');
Serial.print(settore2[1]);
Serial.print(' ');
Serial.print(settore2[2]);
Serial.print(':');
Serial.print(settore2[3]);
Serial.print(')');
Serial.print(' ');
Serial.print('-');
Serial.print(' ');
Serial.print("Settore 3");
Serial.print(' ');
Serial.print('(');
Serial.print(settore3[0]);
Serial.print(':');
Serial.print(settore3[1]);
Serial.print(' ');
Serial.print(settore3[2]);
Serial.print(':');
Serial.print(settore3[3]);
Serial.print(')');
Serial.print(' ');
Serial.print('-');
Serial.print(' ');
Serial.print("Settore 4");
Serial.print(' ');
Serial.print('(');
Serial.print(settore4[0]);
Serial.print(':');
Serial.print(settore4[1]);
Serial.print(' ');
Serial.print(settore4[2]);
Serial.print(':');
Serial.print(settore4[3]);
Serial.print(')');
Serial.println();
int _hour = now.hour();
int _minute = now.minute();
int _current = (now.hour() * 60) + now.minute();
startArea(1, _current); // Settore Uno
startArea(2, _current); // Settore Due
startArea(3, _current); // Settore Tre
startArea(4, _current); // Settore Quattro
Manuale();
delay( 30 );
view_date_time( now );
if (time > 0 && setModeTime < (millis() - time) ) { setMode( now ); }
}
//resetto il watchdog
wdt_reset();
}
/**********************************************************/
void startArea(byte area, int current) {
int _currStart;
int _currStop;
byte _currPin;
switch(area) {
case 1:
_currStart = (settore1[0]*60) + settore1[1];
_currStop = (settore1[2]*60) + settore1[3];
_currPin = pinSettore1;
break;
case 2:
_currStart = (settore2[0]*60) + settore2[1];
_currStop = (settore2[2]*60) + settore2[3];
_currPin = pinSettore2;
break;
case 3:
_currStart = (settore3[0]*60) + settore3[1];
_currStop = (settore3[2]*60) + settore3[3];
_currPin = pinSettore3;
break;
case 4:
_currStart = (settore4[0]*60) + settore4[1];
_currStop = (settore4[2]*60) + settore4[3];
_currPin = pinSettore4;
break;
}
if ((_currStart<=current) && (current<=_currStop)) {
digitalWrite( _currPin,HIGH );
} else {
digitalWrite( _currPin,LOW );
}
}
/**********************************************************/
void Manuale() {
int _button = ctrlButton();
if ((_button == 2) || (digitalRead(bottone1) == 1))
{
if (statoLed1 == LOW)
{ statoLed1=HIGH;
} else
{ statoLed1=LOW;
}
digitalWrite(pinSettore1, statoLed1);
delay(300);
}
if ((_button == 3) || (digitalRead(bottone2) == 1))
{
if (statoLed2 == LOW)
{ statoLed2=HIGH;
} else
{ statoLed2=LOW;
}
digitalWrite(pinSettore2, statoLed2);
delay(300);
}
if ((_button == 4) || (digitalRead(bottone3) == 1))
{
if (statoLed3 == LOW)
{ statoLed3=HIGH;
} else
{ statoLed3=LOW;
}
digitalWrite(pinSettore3, statoLed3);
delay(300);
}
if ((_button == 5) || (digitalRead(bottone4) == 1))
{
if (statoLed4 == LOW)
{ statoLed4=HIGH;
} else
{ statoLed4=LOW;
}
digitalWrite(pinSettore4, statoLed4);
delay(300);
}
}
/**********************************************************/
int ctrlButton() {
int XValue = analogRead(X_pin); // Read the analog value from The X-axis from the joystick
int YValue = analogRead(Y_pin); // Read the analog value from The Y-axis from the joystick
int SwValue = digitalRead(SW_pin); // Read the digital value from The Button from the joystick
if ( SwValue == 0 ) { return 1; }
if ( XValue < 200 ) { return 2; }
if ( XValue > 800 ) { return 3; }
if ( YValue < 200 ) { return 4; }
if ( YValue > 800 ) { return 5; }
return 0;
}
/**********************************************************/
void view_date_time ( DateTime now ) {
lcd.clear();
lcd.setCursor(1,0);
switch (now.dayOfTheWeek() ) {
case 0:
lcd.print("DOM");
break;
case 1:
lcd.print("LUN");
break;
case 2:
lcd.print("MAR");
break;
case 3:
lcd.print("MER");
break;
case 4:
lcd.print("GIO");
break;
case 5:
lcd.print("VEN");
break;
case 6:
lcd.print("SAB");
break;
}
sprintf(buffer, "%02d/%02d/%d", now.day(), now.month(), now.year());
lcd.setCursor(5,0);
lcd.print( buffer );
char buffer[10] = "";
sprintf(buffer, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.setCursor(4,1);
lcd.print( buffer );
delay(1000);
}
/**********************************************************/
void setMode( DateTime now ) {
boolean setMode = true;
int setModeLevel = 0;
int _day = now.day();
int _month = now.month();
int _year = now.year();
int _hour = now.hour();
int _min = now.minute();
int _sec = now.second();
lcd.clear();
lcd.setCursor(0,0);
sprintf(buffer, "%s: %02d", "Giorno", _day);
delay( 500 );
timeSet = millis();
while ( setMode ) {
int _button = ctrlButton();
if ( _button > 1 ) { timeSet = millis(); }
lcd.setCursor(0,0);
// Set Day
if ( setModeLevel == 0 ) {
if ( _button == 3 && _day < 31) { wdt_reset(); _day++; }
if ( _button == 2 && _day > 1) { wdt_reset(); _day--; }
sprintf(buffer, "%s: %02d", "Giorno", _day);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
// Set Month
if ( setModeLevel == 1 ) {
if ( _button == 3 && _month < 12) { wdt_reset(); _month++; }
if ( _button == 2 && _month > 1) { wdt_reset(); _month--; }
sprintf(buffer, "%s: %02d", "Mese", _month);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
// Set Year
if ( setModeLevel == 2 ) {
if ( _button == 3 && _year < 9999) { wdt_reset(); _year++; }
if ( _button == 2 && _year > 1900) { wdt_reset(); _year--; }
sprintf(buffer, "%s: %02d", "Anno", _year);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
// Set Hour
if ( setModeLevel == 3 ) {
if ( _button == 3 && _hour < 24) { wdt_reset(); _hour++; }
if ( _button == 2 && _hour > 1) { wdt_reset(); _hour--; }
sprintf(buffer, "%s: %02d", "Ora", _hour);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
// Set Minute
if ( setModeLevel == 4 ) {
if ( _button == 3 && _min < 59) { wdt_reset(); _min++; }
if ( _button == 2 && _min > 0) { wdt_reset(); _min--; }
sprintf(buffer, "%s: %02d", "Minuti", _min);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
// Set Second
if ( setModeLevel == 5 ) {
if ( _button == 3 && _sec < 59) { wdt_reset(); _sec++; }
if ( _button == 2 && _sec > 0) { wdt_reset(); _sec--; }
sprintf(buffer, "%s: %02d", "Secondi", _sec);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Start1
if ( setModeLevel == 6 ) {
if ( _button == 3 && settore1[0] < 24) { wdt_reset(); settore1[0]++; }
if ( _button == 2 && settore1[0] > 1) { wdt_reset(); settore1[0]--; }
sprintf(buffer, "%s: %02d", "START 1 Ora", settore1[0]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Start1
if ( setModeLevel == 7 ) {
if ( _button == 3 && settore1[1] < 59) { wdt_reset(); settore1[1]++; }
if ( _button == 2 && settore1[1] > 0) { wdt_reset(); settore1[1]--; }
sprintf(buffer, "%s: %02d", "START 1 Min", settore1[1]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Stop1
if ( setModeLevel == 8 ) {
if ( _button == 3 && settore1[2] < 24) { wdt_reset(); settore1[2]++; }
if ( _button == 2 && settore1[2] > 1) { wdt_reset(); settore1[2]--; }
sprintf(buffer, "%s: %02d", "STOP 1 Ora", settore1[2]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Stop1
if ( setModeLevel == 9 ) {
if ( _button == 3 && settore1[3] < 59) { wdt_reset(); settore1[3]++; }
if ( _button == 2 && settore1[3] > 0) { wdt_reset(); settore1[3]--; }
sprintf(buffer, "%s: %02d", "STOP 1 Min", settore1[3]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Start2
if ( setModeLevel == 10 ) {
if ( _button == 3 && settore2[0] < 24) { wdt_reset(); settore2[0]++; }
if ( _button == 2 && settore2[0] > 1) { wdt_reset(); settore2[0]--; }
sprintf(buffer, "%s: %02d", "START 2 Ora", settore2[0]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Start2
if ( setModeLevel == 11 ) {
if ( _button == 3 && settore2[1] < 59) { wdt_reset(); settore2[1]++; }
if ( _button == 2 && settore2[1] > 0) { wdt_reset(); settore2[1]--; }
sprintf(buffer, "%s: %02d", "START 2 Min", settore2[1]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Stop2
if ( setModeLevel == 12 ) {
if ( _button == 3 && settore2[2] < 24) { wdt_reset(); settore2[2]++; }
if ( _button == 2 && settore2[2] > 1) { wdt_reset(); settore2[2]--; }
sprintf(buffer, "%s: %02d", "STOP 2 Ora", settore2[2]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Stop2
if ( setModeLevel == 13 ) {
if ( _button == 3 && settore2[3] < 59) { wdt_reset(); settore2[3]++; }
if ( _button == 2 && settore2[3] > 0) { wdt_reset(); settore2[3]--; }
sprintf(buffer, "%s: %02d", "STOP 2 Min", settore2[3]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Start3
if ( setModeLevel == 14 ) {
if ( _button == 3 && settore3[0] < 24) { wdt_reset(); settore3[0]++; }
if ( _button == 2 && settore3[0] > 1) { wdt_reset(); settore3[0]--; }
sprintf(buffer, "%s: %02d", "START 3 Ora", settore3[0]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Start3
if ( setModeLevel == 15 ) {
if ( _button == 3 && settore3[1] < 59) { wdt_reset(); settore3[1]++; }
if ( _button == 2 && settore3[1] > 0) { wdt_reset(); settore3[1]--; }
sprintf(buffer, "%s: %02d", "START 3 Min", settore3[1]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Stop3
if ( setModeLevel == 16 ) {
if ( _button == 3 && settore3[2] < 24) { wdt_reset(); settore3[2]++; }
if ( _button == 2 && settore3[2] > 1) { wdt_reset(); settore3[2]--; }
sprintf(buffer, "%s: %02d", "STOP 3 Ora", settore3[2]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Stop3
if ( setModeLevel == 17 ) {
if ( _button == 3 && settore3[3] < 59) { wdt_reset(); settore3[3]++; }
if ( _button == 2 && settore3[3] > 0) { wdt_reset(); settore3[3]--; }
sprintf(buffer, "%s: %02d", "STOP 3 Min", settore3[3]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Start4
if ( setModeLevel == 18 ) {
if ( _button == 3 && settore4[0] < 24) { wdt_reset(); settore4[0]++; }
if ( _button == 2 && settore4[0] > 1) { wdt_reset(); settore4[0]--; }
sprintf(buffer, "%s: %02d", "START 4 Ora", settore4[0]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Start4
if ( setModeLevel == 19 ) {
if ( _button == 3 && settore4[1] < 59) { wdt_reset(); settore4[1]++; }
if ( _button == 2 && settore4[1] > 0) { wdt_reset(); settore4[1]--; }
sprintf(buffer, "%s: %02d", "START 4 Min", settore4[1]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Stop4
if ( setModeLevel == 20 ) {
if ( _button == 3 && settore4[2] < 24) { wdt_reset(); settore4[2]++; }
if ( _button == 2 && settore4[2] > 1) { wdt_reset(); settore4[2]--; }
sprintf(buffer, "%s: %02d", "STOP 4 Ora", settore4[2]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
//Set Stop4
if ( setModeLevel == 21 ) {
if ( _button == 3 && settore4[3] < 59) { wdt_reset(); settore4[3]++; }
if ( _button == 2 && settore4[3] > 0) { wdt_reset(); settore4[3]--; }
sprintf(buffer, "%s: %02d", "STOP 4 Min", settore4[3]);
lcd.print(buffer);
lcd.setCursor(0,1);
lcd.write (byte (2));
lcd.setCursor(1,1);
lcd.print(" - ");
lcd.setCursor(4,1);
lcd.write (byte (3));
lcd.setCursor(9,1);
lcd.write (byte (0));
lcd.setCursor(10,1);
lcd.print("/");
lcd.setCursor(11,1);
lcd.write (byte (1));
lcd.setCursor(12,1);
lcd.print(" Mod");
}
lcd.print( buffer );
if ( _button == 5 ) { lcd.clear(); wdt_reset(); setModeLevel++; }
if ( _button == 4 ) { lcd.clear(); wdt_reset(); setModeLevel--; }
if ( setModeLevel > 21 ) { setModeLevel=0; }
if ( setModeLevel < 0 ) { setModeLevel=21; }
if (timeSet > 0 && (setModeTime*2) < (millis() - timeSet) ) {
RTC.adjust(DateTime(_year, _month, _day, _hour, _min, _sec));
setMode = false;
}
delay(200);
}
ScriviEeprom();
}
/**********************************************************/
void ScriviEeprom()
{
EEPROM.update(0, 170);
EEPROM.update(1, settore1[0]);
EEPROM.update(2, settore1[1]);
EEPROM.update(3, settore1[2]);
EEPROM.update(4, settore1[3]);
EEPROM.update(5, settore2[0]);
EEPROM.update(6, settore2[1]);
EEPROM.update(7, settore2[2]);
EEPROM.update(8, settore2[3]);
EEPROM.update(9, settore3[0]);
EEPROM.update(10, settore3[1]);
EEPROM.update(11, settore3[2]);
EEPROM.update(12, settore3[3]);
EEPROM.update(13, settore4[0]);
EEPROM.update(14, settore4[1]);
EEPROM.update(15, settore4[2]);
EEPROM.update(16, settore4[3]);
}
/**********************************************************/
void LeggiEeprom()
{
if(EEPROM.read(0)!=170) return; // se non 170 su primo byte, esce
settore1[0]=EEPROM.read(1);
settore1[1]=EEPROM.read(2);
settore1[2]=EEPROM.read(3);
settore1[3]=EEPROM.read(4);
settore2[0]=EEPROM.read(5);
settore2[1]=EEPROM.read(6);
settore2[2]=EEPROM.read(7);
settore2[3]=EEPROM.read(8);
settore3[0]=EEPROM.read(9);
settore3[1]=EEPROM.read(10);
settore3[2]=EEPROM.read(11);
settore3[3]=EEPROM.read(12);
settore4[0]=EEPROM.read(13);
settore4[1]=EEPROM.read(14);
settore4[2]=EEPROM.read(15);
settore4[3]=EEPROM.read(16);
}
/**********************************************************/
accetto consigli
grazie