...non si puo fare :o
vorrei tramite pulsante pulire schermo e passare a nuova pagina, ho letto reference manual della libreria sull'uso di nextPage ma francamente non sono riuscito a capire come posso fare.
A passare dalla LiquidCrystal alla u8g mi sto intrippando parecchio
Premetto che potrei dire una cavolata, visto che per ora ho solo studiato la libreria "sulla carta" e sono in attesa dei display per poterci giocare, ma credo che basti non disegnare niente. Nel senso che a ogni iterazione devi ridisegnare tutto nel draw(), no? Per cui parti implicitamente sempre con lo schermo pulito.
Lo dice anche nella documentazione:
Assume a cleared and empty screen at the beginning of the draw() procedure.
Sia ben chiaro che se c'è uno che dice cavolate quello SONO IO!!
Passando alla pratica io nel draw() inserisco
if (digitalRead(P1)) {
u8g.setFont(u8g_font_5x8);
u8g.drawStr( 70, 64, "Pagina nuova");
ma come lo richiamo dal loop? ma soprattutto così com'è, se fa qualcosa, mi stampa un bel "pagina nuova" sopra quella principale credo... dico credo perchè provo quando arrivo a casa
Se hai seguito esempi e istruzioni, nel loop() dovresti già avere inserito il picture loop:
void loop(void) {
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(1000);
}
Quindi la tua draw() viene già chiamata automaticamente ogni volta che serve ridisegnare lo schermo. Eviterei di metterci una digitalRead() dentro però, meglio che la fai nel loop() e metti il valore in una variabile globale. Da draw() usa poi questo valore per decidere cosa disegnare.
per ora mi sono limitato a capire la gestione dei caratteri, riesco a stampare ora, temperatura e dopo il
while( u8g.nextPage() ); ho impostato delle condizioni if che funzionano, stasera torno all'attacco con if (digitalaRead(pulsante1)) che vorrei mi restituisse un bel display pulito dove editare altro.
Mi piace molto poter spaziare un po di piu oltre il 20x4 al quale ero abituato ma comporta studio dei nuovi comandi e ahimè senza esempi pratici di codice mi impantano ad ogni virgola
Il problema non sono i comandi, è proprio la filosofia che è opposta: sui 16x2 quel che scrivi una volta rimane lì a vita, tanto che spesso bisogna aggiungere spazi prima e dopo per cancellare quel che era stato scritto prima.
Qua invece è come se qualcuno ti cancellasse completamente lo schermo ogni volta, e tu devi continuare a ridisegnarlo. Per questo non serve che lo cancelli manualmente, lo schermo parte già pulito, tu puoi limitarti a disegnare una cosa o un'altra.