Buonasera, mi rivolgo a Voi cercando una soluzione al mio problema che mi interessa da mesi ormai.
sono nuovo nella comuniti e da poco mi sono cimentato nella conoscenza del codice di arduino
ho un progetto dove devo visualizzare un dato di umidita su uno schermo con un servomotore
il mio problema è il consumo che dopo varie letture tra comando Lowpower e altri, sono riuscito a portare il consumo a circa 5mAh.
premetto che il progetto funziona con 4 batterie tipo AA
il mio problema ora è il seguente.
-comprato schermo oled 128x64 ma per mantenerlo acceso servono circa 3mAh
-comprato schermo e-ink per rimediare al problema consumo.
con quest'ultimo xro ho dei problemi:
- usando la libreria GXEPD lo schermo una volta inviato quello che devo scrivere sbiadisce in un nero molto tenue quasi illeggibile. "non sono riuscito a rimediare"
- usando la libreria GXEPD2 il problema non persiste ma mi rimane un consumo costante di 4mA
- usando il comando .poweroff e disattivando il pin RST riesco ad abbatere il consumo fino a 1Mah ma il problema che riattivando il pin RST e facendo l'aggiornamento display tutto va in confusione.
- provato il comando .end la corrente si abbassa 1maH ma nn riesco piu ad riattivare il monito a meno del comando .INIT che mi crea qual fastidioso Refresh lampeggiante che vorrei evitare dato che laggiornamento è ogni 60 sec.
il tutto funziona con il .setpartialwindow proprio per evitare lo sfarfallio di aggiornamento.
Qualcuno sa aiutarmi?
sto leggendo di schermi LCD ma chiedo a voi se qualcuno sa quanto consumano dato che presumo che questi schermi vadano sempre alimentati x la visualizzazione.
mi chiedo come i telecomandi e le stazioni meteo riescano a funzionare con 2 batterie x cosi lungo tempo.
facendo i calcoli il mio progetto con un consumo costante di 5maH dovrebbe funzionare su per giu circa 50giorni. vorrei arrivare almeno ad 1 anno
Grazie
di seguito codice che ho creato prendendo sputo da vari esempi.
showPartialUpdate();
digitalWrite(5, LOW); //tolgo alimentazione a transistor
digitalWrite(8, LOW); // tolgo alimentazione a RST e-ink
for (int i = 0; i <= 0; i++) {
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}
digitalWrite(8, HIGH);
contatore == contatore++;
if (contatore == 500) {
resetscreen(); // dopo 500 aggiornamenti parziali ne faccio 1 totale
}
}
void showPartialUpdate() {
display.firstPage();
do {
display.setRotation(3);
display.setPartialWindow(40, 25, 160, 110);
display.setCursor(40, 25);
display.setTextSize(10);
display.print(hum + 10);
display.setTextSize(6);
display.print("%");
//display.setCursor(0, 170);
//display.setTextSize(2, 4);
} while (display.nextPage());
display.firstPage();
display.setPartialWindow(0, 170, 200, 30);
display.firstPage();
do {
display.setCursor(0, 170);
display.setTextSize(2, 4);
switch (apertura) {
case 0:
display.print(F("Close "));
display.print(F("> "));
display.println(F(" Open"));
break;
case 1:
display.print(F("Close "));
display.print(F(">> "));
display.println(F(" Open"));
break;
case 2:
display.print(F("Close "));
display.print(F(">>> "));
display.println(F(" Open"));
break;
case 3:
display.print(F("Close "));
display.print(F(">>>> "));
display.println(F(" Open"));
break;
case 4:
display.print(F("Close "));
display.print(F(">>>>> "));
display.println(F("Open"));
break;
case 5:
display.print(F("Close "));
display.print(F(">>>>>>"));
display.println(F("Open"));
break;
}
} while (display.nextPage());
display.firstPage();
display.powerOff();
}