Continuiamo lo studio della libreria LiquidCrystal.
Vediamo subito le due funzioni display() e noDisplay(). Queste semplicemente spengono e riaccendono lo schermo conservando quello che era visualizzato prima di spegnerlo.  La sintassi è molto semplice, la vediamo in quest’esempio

#include LiquidCrystal.h;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("hello world!");
}
void loop() {
delay(2000);
lcd.noDisplay();
delay(2000);
lcd.display();
}

Scroll del testo

Affrontiamo adesso lo scroll del testo.  Abbiamo a disposizione due tipi diversi di scroll.

Il primo si riferisce allo scroll di un testo già visualizzato, ci riferiamo alle funzioni scrollDisplayLeft() e scrollDisplayRight(). Esempio:


//Sketch preso dagli esempi dell'IDE di Aurduino

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
lcd.begin(16, 2);
lcd.print("hello, world!");
delay(1000);
}

void loop() {
for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
lcd.scrollDisplayLeft();
delay(150);
}
for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
lcd.scrollDisplayRight();
delay(150);
}
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
delay(150);
}
delay(1000);
}

La sintassi è abbastanza semplice ed intuitiva.

Il secondo tipo di scrol che abbiamo a disposizione fa riferimento al modo in cui i caratteri “entrano” nello schermo.


#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
lcd.begin(16,2);
}

void loop() {
lcd.setCursor(0, 0);
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}
lcd.setCursor(16,0);
lcd.autoscroll();
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}
lcd.noAutoscroll();
lcd.clear();
}

Come vedete nei due for il codice è uguale, nel secondo for è stato attivati l’auto scrol con il comando lcd.autoscroll();.

Di default la direzione di scorrimento è da destra a sinistra, ma la possiamo impostare noi con i due comandi lcd.leftToRight() e lcd.rightToLeft().

Creazione di un simbolo

Se guardiamo con attenzione il nostro schermo ci rendiamo conto che ogni carattere è visualizzato da una matrice di quadratini scuri 5×8. La libreria Liquid Crystal ci mette a disposizione una funzione per pilotare direttamente questa matrice. Commentiamo in seguente esempio:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte smiley[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,
};

void setup() {
lcd.createChar(0, smiley);
lcd.begin(16, 2);
lcd.write(0);
}
void loop() {}

Come potete vedere il simbolo che vogliamo visualizzare lo “disegnamo” con un vettore (qui chiamato smiley[]). Mantenendo la sintassi di quest’esempio vediamo come si disegna la faccina sorridente:la prima riga di pixel è lasciata bianca, nella seconda ne accendiamo solo due per gli occhi, terza e quarta bianche e così via.

Una volta disegnato il vettore, creiamo il carattere con la funzione lcd.createChar() dove i parametri rappresentano rispettivamente il numero del carattere appena creato (possiamo crearne e gestirne fino a 8 nello stesso sketch) ed il vettore del simbolo.

Per poi visualizzarlo a schermo usiamo un lcd.write() indicando il numero del carattere che vogliamo disegnare.