void setup(){
//set up lcd with #row and #columns
lcd.begin(numR,numC);
lcd.setCursor(0,0);
lcd.print("Gmail Notifier");
lcd.setCursor(2,2);
lcd.print("unread mails");
Serial.begin(9600); //rate transmission must be equal to that sets in python program
}
sull'lcd alcuni caratteri non vengono visualizzati correttamente.
Ma c'è di più, commentando la riga
void loop(){
int row= random(4);
if (Serial.available()>0){
prevCounter= counter;
counter = Serial.read();
lcd.setCursor(0,2);
lcd.write(counter);
if (int(counter) > int(prevCounter)) {backlightBlink();}
}
}
la prima riga int row= random(4); non serve a nulla ma l'ho copiata da un altro mio sketch funzionante. Il problema è che commentando quella riga alcuni caratteri non vengono visualizzati correttamente. Cosa sbaglio???? Cosa c'è che non vedo?
Ragazzi, visto che si parla di lcd e seriale vorrei esporvi una cosa che ho notato. In pratica se metto molti Serial.print nello script il display sembra non rispondere più, visualizzando o caratteri strani (giapponesi, cinesi... ci siamo capiti) oppure mostra i classici quadratini come se non fosse regolato bene il contrasto del display. Se metto pochi Serial.print invece il display funziona regolarmente. Ovviamente cercherò di non eccedere con i Serial.print ma per uno che inizia a programmare da poco sapere cosa sta facendo lo script fa comodo.
Non vorrei fare il rompi, ma a me la liquidcrystal ha sempre funzionato bene quando io ho fatto le cose bene. E' pure parecchio semplice da far funzionare. Per i serialprint, non so bene cosa intendi per molti ma anche se metto un serial print nel loop, e quindi mi "flooda" la console, lo schermo continua a funzionare. Ho provato diversi lcd sia a 8 bit, sia a 4, sia in i2c. Fede
Io usavo Arduino 017 appena era uscito e la libreria LiquidCrystal non funzionava tanto bene, ho aggiornato con quella di LadyAda e non ho più avuto problemi, nè quando resetto Arduino nè quando uso la comunicazione seriale.
Unico appunto: ho dovuto collegare per forza il pin R/W perchè senza di quello il display si comportava in modo schizzinoso e non ho trovato una spiegazione.
Non sono un programmatore ma, secondo me la libreria non fa schifo, tipo per resettare il display insieme ad Arduino è bastato modificare una piccola istruzione...magari ci sono ancora dei piccoli bug e tu ci sei incappato.
Appena era uscita la 017 mi sa di no, la mia era diversa....e poi mi è parso di capire che LadyAda ha messo mano alla LiquidCystal proprio per migliorare l'utilizzio con la seriale (ma non ne sono sicuro, tant'è che non l'ho detto sopra)...............
si esatto la 017 ha già dentro l'ultima versione della libreria.
comunque tutto risolto con la mia nuova libreria. Appena la definisco per bene la pubblico magari su playground.
ora però mi avete fatto venire un dubbio, no vorrei cheil comportamento bizzarro fosse dovuto al fatto che non ho collegato il pin RW ma l'ho sempre messo semplicemente a GND.
il pin R/W si usa anche per controllare se il display ha finito il comando precedente.
Dipende dalla libreria, ad esempio nella seguente si possono usare i 2 modi:
In fondo alla pagina si legge le descrizione dei 2 modi.
The last big decision is which WAIT_MODE to use. You can select between Delay Mode or Check Busy Mode. Delay Mode will delay after each LCD command to make sure that there is time for the LCD to execute the command before the next one can be issued. Check Busy Mode will read the check busy flag from the LCD to see if the LCD is still busy or ready for the next command. Check Busy Mode requires the RW line to be implemented, however you can implement an RW line (RW_LINE_IMPLEMENTED=1) and use Delay Mode (WAIT_MODE=0). You might think that the Check Busy Mode technique would be faster, but it is actually slower when running a clock below 10Mhz. This is because the extra code is takes to check it takes up more time that the Delay Mode would have. At 10Mhz or above, Check Busy Mode will be faster. At 16Mhz, it was 20% faster than Delay Mode, but at 8Mhz Delay Mode was 10% faster. Use the WAIT_MODE parameter to set this:
si ma spulciando nella libreria liquidcrystal il pin RW non viene mai usato per leggere il busyflag.
in ogni caso sprecare un pin solo per sapere se l'istruzione prec ha finito non mi sembra efficiente visto che a pag 24 (tabella 6) dela datasheet vengono riportati tempi di esecuzione di ogni istruzione.