Buona giornata
son tre giorni che provo ma non ci riesco,
ho cercato in rete delle informazioni non ho trovato niente,
spero che qui qualcuno mi possa aiutare,
questa e la libraria che sto usando
spiego cosa vorrei fare:
impostare data e ora tramite 3 pulsanti,
(all'interno della libreria c'è un esempio di come impostare data e ora tramite monitor seriale)
ok questo l'ho fatto e imposta correttamente,
posto il programma
void setMode() {
int _day; //giorno
int _month; //mese
int _year; //anno
int _hour;
int _minute;
int _second;
char buffer[10];
boolean setMode = true;
int setModeLivel = 0;
u8g.setPrintPos(0, 0);
sprintf(buffer, "%s: %02d", "Giorno", _day);
delay(1000);
Timeset = millis();
while (setMode) {
if (digitalRead(enter) == LOW || digitalRead(piu) == LOW
|| digitalRead(meno) == LOW) {
Timeset = millis();
}
Serial.println("OK");
u8g.setPrintPos(0, 0);
//Set giorno
if (setModeLivel == 0) {
if (digitalRead(piu) == LOW && _day < 31) {
_day++;
Serial.println("OK1");
}
if (digitalRead(meno) == LOW && _day > 1) {
_day--;
}
sprintf(buffer, "%s: %02d", "Giorno", _day);
Serial.println(setModeLivel);
}
//set mese
if (setModeLivel == 1) {
if (digitalRead(piu) == LOW && _month < 12) {
_day++;
}
if (digitalRead(meno) == LOW && _month > 1) {
_day--;
}
sprintf(buffer, "%s: %02d", "Mese", _month);
}
//Set anno
if (setModeLivel == 2) {
if (digitalRead(piu) == LOW && _year < 9999) {
_year++;
}
if (digitalRead(meno) == LOW && _year > 1900) {
_year--;
}
sprintf(buffer, "%s: %02d", "Anno", _year);
}
//set ore
if (setModeLivel == 3) {
if (digitalRead(piu) == LOW && _hour < 24) {
_hour++;
}
if (digitalRead(meno) == LOW && _hour > 1) {
_hour--;
}
sprintf(buffer, "%s: %02d", "Ora", _hour);
}
//Set minuti
if (setModeLivel == 4) {
if (digitalRead(piu) == LOW && _minute < 60) {
_minute++;
}
if (digitalRead(meno) == LOW && _minute > 1) {
_minute--;
}
sprintf(buffer, "%s: %02d", "Minuti", _minute);
}
//Set secondi
if (setModeLivel == 5) {
if (digitalRead(piu) == LOW && _second < 60) {
_second++;
}
if (digitalRead(meno) == LOW && _second > 0) {
_second--;
}
sprintf(buffer, "%s: %02d", "Secondi", _second);
}
u8g.firstPage();
do {
u8g.setFont(u8g_font_helvB08);
u8g.setPrintPos(15, 28);
u8g.print((buffer));
} while (u8g.nextPage());
if (digitalRead(enter) == LOW) {
setModeLivel++;
}
if (setModeLivel > 5) {
setModeLivel = 0;
}
if (Timeset > 0 && (setModeTime * 2) < (millis() - Timeset)) {
_day = day();
_month = month();
_year = year();
_hour = hour();
_minute = minute();
_second = second();
setMode = false;
}
delay(200);
}
}
programma troppo lungo non mi permette di postarlo tutto,
posto colo parte incriminata e la funzione setMode(),
prima di uscire (dalla funzione) dovrei aggiornare l'orologio, non va
non riesco a trovare il modo corretto per aggiornare l'orologio,
qualcuno mi può dare qualche dritta su come fare?
mille grazie a chi mi può aiutare