Tutorial: Arduino scritte scorrevoli su Lcd

Propongo di realizzare delle scritte scorrevoli con Arduino ed un display LCD, sfruttando la liberia LiquidCrystal.h e due suoi metodi puoi far scorrere il testo a destra e sinistra dul display Lcd.

Lcd 4x20 HD44780

Puoi collegare il display ad Arduino come mostrato in questo articolo e ruota il cursore del potenziomentro fino a vedere i caratteri sullo schermo.

Partendo dal tutorial pubblicato sul sito ufficiale ti mostrerò una variante che rende il codice più adattabile a diversi display.

Far scorrere del testo su un display Lcd è molto semplice se utilizzi i metodi scrollDisplayLeft() e scrollDisplayRight()  a tua disposizione con la libreria LiquidCrystal.h, per completezza riporto il codice originale dell’esempio mostrato sul sito ufficiale:

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
  delay(1000);
}

void loop() {
  // scroll 13 positions (string length) to the left
  // to move it offscreen left:
  for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(150);
  }

  // scroll 29 positions (string length + display length) to the right
  // to move it offscreen right:
  for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
    // scroll one position right:
    lcd.scrollDisplayRight();
    // wait a bit:
    delay(150);
  }
 
    // scroll 16 positions (display length + string length) to the left
    // to move it back to center:
  for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(150);
  }
 
  // delay at the end of the full loop:
  delay(1000);

}

Questo codice sposta la scritta “hello world!” prima verso sinistra fino alla sua scomparsa, successivamente la sposta verso destra fino alla scomparsa e nuovamente fa ricomparire la scritta spostando il testo verso sinistra, leggendo il codice vedrai che ad ogni fase di spostamento del testo l’effetto ottenuto è inverso, ossia utilizzando il metodo scrollDisplayLeft() ciò che scolla è il display verso sinistra e quindi il testo sembra si sposti verso destra.

Il codice che ti propongo è molto più semplice, innanzitutto separa il codice di ciascun spostamento per analizzarlo singolarmente:

// include the library code:
#include <LiquidCrystal.h>

String textMsg="hello, world!";
int display_cols = 16;
int display_rows = 2;
int strLength = textMsg.length();

// initialize the library with the numbers 
// of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
 // set up the LCD's number of columns and rows:
 lcd.begin(cols, rows);
 // Print a message to the LCD.
 lcd.print(textMsg);
 delay(1000);
}

void loop() {
  // scroll string length positions to the left
  for (int pCounter = 0; pCounter < strLength; pCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(150);
  }

  // delay at the end of the full loop:
  delay(1000);

}

Vediamo linea per linea lo sketch mostrato:

linea 02: includi la libreria LiquidCrystal.h necessaria a scrivere sul display e far scorrere il testo mostrato;
linea 04: definisci una stringa di testo, utilizza un variabile di tipo string per poterne misurare la lunghezza in modo automatico, vedrai in seguito il motivo di questa scelta;
linea 05: definisci una variabile di tipo intero che indica il numero di colonne del display, es.: 16;
linea 06: definisci una variabile di tipo intero che indichi il numero di linee del display, es.: 2/4/ecc…;
linea 07: misuriamo la lunghezza della stringa definita alla linea 04, utilizzando il metodo lenght() della Classe String;
linea 11: definisci un oggetto di tipo lcd passandogli i pin necessari al funzionamento del display LCD;
linee 13-19: definisci la funzione setup(), in cui inizializza il display (linea 15) passandogli come colonne e righe quelle definite nelle variabili presenti alle linee 05 e 06 e successivamente scrivi la stringa sul display (linea 17), attendendo un tempo di 1 sec (1000 millisecondi) per lasciare al display il tempo di eseguire il comando indicato;
linea 21: definisci la funzione di loop(), eseguita ciclicamente da Arduino;
linea 23: costruisci un ciclo for da 0 fino alla lunghezza della stringa misurata con il metodo lenght() alla linea 07;
linea 25: ad ogni incremento della variabile pCounter sposta il display verso sinistra di una posizione, in questo modo al termine del ciclo il display sarà stato spostato di un numero di caratteri pari alla lunghezza della stringa, con conseguente scomparsa della stringa stessa dal display;
linea 27: attendi un tempo di 150 millisecondi per ciascun incremento del ciclo for per consentire al display di eseguire lo spostamento;
linea 31: attendi un tempo di 1 sec tra un passaggio del ciclo di loop ed il successivo;

L’effetto della scritta sul display sarà quello di vedere la scritta scorrere verso sinistra e magicamente ricomparire dopo 1 secondo per scorrere novamente verso sinistra ripetendo il ciclo all’infinito.

Scritto in questo modo questo sketch ha il solo valore di esempio didattico della funzione di Scroll offerta dalla LiquidCrystal, nei prossimi articoli proverò a scrivere degli esempi più interessanti anche nel loro utilizzo pratico in qualche progettino.

Buon divertimento

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/tutorial-arduino-scritte-scorrevoli-su-lcd.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.