
Questo articolo è stato scritto con lo scopo di provare a dare le nozioni fondamentali per la creazione di una libreria Arduino, in particolare analizzeremo una libreria da me creata e non ancora esistente che permette di gestire un display LCD 16x2 con controller Hitachi HD44780 compatibile. Le librerie vengono più volte usate in file sorgente, ed hanno lo scopo di semplificare di molto il listato di un programma rendendolo più snello e comprensibile, queste sono costituite da funzioni o strutture di dati ed hanno la caratteristica fondamentale di essere riutilizzabili evitando così al programmatore di riscrivere il codice ogni qualvolta si ha la necessità di eseguire quelle determinate operazioni.
L'idea di sviluppare la libreria è nata da una mia esigenza di progettazione, visto che quella messa a disposizione dall'IDE di Arduino non era ancora stata resa compatibile con il controller di Arduino M0 Pro, avendo la necessità di controllare un display di questo tipo ho deciso di crearla da zero.
Componenti utilizzati
- Board Arduino M0 Pro
- LCD Data Vision DV-16275 compatibile con i segnali di dato a 3.3 Volt provenienti dalla M0 Pro (da notare che il display va comunque alimentato a 5 Volt, ma riconosce perfettamente i segnali d'ingresso a 3.3 Volt come visibile a pagina 21 del datasheet scaricabile dal link seguente Datasheet dv-12765.
- Resistenza 220 Ohm 1/4 Watt per impostazione contrasto standard LCD tra pin 3 e GND
PREPARAZIONE DI UNA NUOVA LIBRERIA
Una libreria per Arduino è costituita da due file fondamentali che sono un file .h ed un file .cpp, ed un file opzionale che è il keywords.txt.
Il file .h o header file contiene la dichiarazione della classe, tutte le funzioni usate nella stessa e le definizioni delle variabili necessarie, il file .cpp contiene il codice vero e proprio di ogni funzione , mentre il file keywords.txt, che ripeto è opzionale, contiene le parole chiave e permette di visualizzare le chiamate alla libreria di colore diverso ogni qualvolta si invoca una singola funzione nello sketch.
Di fondamentale importanza è che sia la cartella che il file .h ed il file .ccp abbiano lo stesso nome, come vedremo di seguito, quindi dovremo innanzitutto creare una cartella con un nome che descriva intuitivamente per questione di comodità il nome della libreria, che contenga sia il file .h che il file .cpp ed eventualmente anche il keyword.txt tutti con lo stesso nome.
Nel mio caso ho nominato libreria "LCD_m0" e di conseguenza, come accennato precedentemente, ho creato una cartella con lo stesso nome e con all’interno i tre file di cui abbiamo discusso prima, ottenendo il risultato seguente (Fig.1):
Nella cartella si nota una sottocartella con nome examples, della quale parleremo in seguito e che sostanzialmente contiene gli esempi della libreria sviluppata che vengono messi a disposizone da chi la progetta, per facilitare la comprensione d’utilizzo della stessa.
File LCD_m0.h
Entriamo a questo punto in merito al file LCD_m0.h e vediamo come è strutturato [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2884 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Complimenti, bella idea.
Grazie Ernesto!!
Trovo anche i tuoi articoli molto interessanti..
Anche a me è piaciuto questo articolo, finalmente si inizia a guardare al mondo Arduino anche in modo professionale 🙂
Grazie Emanuele, speriamo di avere sempre delle belle idee da mettere a disposizione degli altri!
Salve. Nell’articolo c’è scritto che a pagina 21 del datasheet è indicato che il display riconosce perfettamente i segnali d’ingresso a 3.3 Volt; a pagina 21 ci sono solo gli ingombri. Può trattarsi di un errore di battitura? Sono alla ricerca di un display con le medesime caratteristiche per iniziare a sperimentare con la mia M0 Pro. Quello proposto nell’articolo non riesco a trovarlo negli store on-line. Non riesco nemmeno a trovare un display che accetti tensioni di 3,3V nella logica. Potete aiutarmi? Grazie.
Ciao a tutti!
Innanzitutto grazie per i commenti positivi in merito al mio articolo….Colgo l’occasione per sottolineare che il prossimo riguarderà sempre la board M0Pro dedicata al controllo della temperatura e dell’umidità di un ambiente, sperando che anche questo possa essere di gradimento a voi tutti.
Giulio ti ringrazio per la segnalazione, in effetti la pagina alla quale sono descritti i parametri elettrici è la n°5 dove si può vedere che sotto la voce Input Voltage, la tensione minima ammissibile è di 2.2 Volt.
Mi scuso per l’errore di battitura 🙂
Se troverò qualche display compatibile con la 3.3 Volt sui pin di ingresso ti farò sapere!
A disposizione per ulteriori chiarimenti.
Mario
Ecco un display compatibile con gli ingressi a 3.3 Volt: qc1602a il cui datasheet lo trovi nel seguente link https://www.mpja.com/download/qc1602a.pdf.
Se guardi nella tabella 7 puoi notare come il display deve essere alimentato a 5 Volt, ma riconosce segnali d’ingresso che vanno da 2.2 Volt a 5 Volt.
Questo lo trovi ad un prezzo irrisorio negli store online più comuni, spero di esserti stato utile.
Mario
Grazie. In effetti si trova a pochi euro on line. Approfitto della tua disponibilità; sai dirmi dove posso trovare il datasheet completo? Al link da te postato si apre solo una pagina e mancano parti importanti del datasheet. Se non ho capito male per pilotare bene il display occorre avere altri dati dal datasheet.
Ecco questo dovrebbe andar bene!
https://www.openhacks.com/uploadsproductos/eone-1602a1.pdf
Saluti
Il display è basato sul comune controller HD44780 compatibile anche con ST7066 e KS0066U,
Basta fare una ricerca e se ne trovano una moltitudine. Il passo successivo sarà quello di selezionare quello della tensione desiderata e delle dimensioni volute, ma anche del costo e del fornitore preferito 😉
Grazie a tutti dell’aiuto e sopratutto a Mario per l’articolo e per la disponibilità 🙂
Emanuele ho fatto quello che hai scritto tu sul famoso store RSComponents ma non trovo un Display LCD con le caratteristiche richieste (magari sono imbranato io ;-))
Tutto ciò considerato acquisterò quello che mi suggerisce Mario. Purtroppo lo comprerò su piattaforme poco “professionali”, dato che sono le uniche dove lo ho trovato 😉
Salve e complimenti per l’articolo. Seguendolo ho cercato di realizzare la stessa libreria per un pic ma non riesco a farla funzionare, potrebbe darmi una mano? 🙂
Grazie.
Ciao Domenico, ti aiuterei volentieri ma in questo periodo sono preso da mille impegni…inizia a farla ed aggiornami di tanto in tanto, vedrò comunque di darti una mano! Volevo inoltre chiederti quale pic e quale ambiente di sviluppo usi, queste librerie per i PIC Micro esistono già, io le utilizzo già da diversi anni. Attendo notizie
Ciao Mario, utilizzo il pic18f4550 con mplab (v. 3.15) e compilatore xc8 (v. 1.35). Ho già fatto la libreria ma non c’è verso di farla funzionare. A questo link ho allegato i file realizzati con mplab: https://drive.google.com/file/d/0B0Q-_qz8N4VeYm9VVERaVTdUV3c/view?usp=sharing .Grazie ancora.
Salve, l’articolo è veramente interessante.
Essendo un neofita e volendo cominciare ad usare il mio M0Pro ho trovato un display LCD ACM1602B. Dal datasheet, se non ho letto male, dovrebbe essere adatto. Puoi, cortesemente, darmene conferma? Grazie
Ciao e grazie!
Il display da te scelto deve essere alimentato a 5 Volt, ed i suoi ingressi sono compatibili con le uscite a 3.3 Volt di Arduino M0 Pro.
Quindi potrai tranquillamente usarlo stando attento ad alimentarlo correttamente a 5 Volt. Saluti Mario
Grazie, saluti