Ho un display LCD 16x2 standard (credo che sia compatibile con Hitachi HD44780 - vedi sommario e specifiche di seguito), collegato ad un Arduino Uno usando 4 pin dati, come descritto qui , anche se ho aggiunto 2x resistori da 220ohm in parallelo (cioè un Resistenza 110ohm) sul pin 16 (terra retroilluminazione) e sostituito il Pot con resistori statici per creare 4 V su Vo.
In breve, RW è collegato a terra e RS, Enable e Data4-7 sono collegati ai pin Arduino, mentre i dati 0-3 sono mobili.
Ho altre cose (sensori, un transistor con un SSR optoisolato e un relè di rete, alcuni pulsanti) collegati a diversi pin sull'Arduino. Il codice che uso scrive il testo sul display più volte al secondo e normalmente il display funziona perfettamente.
Tuttavia, quando il relè si chiude (ci vogliono circa 10ma ed è controllato da un transistor che a sua volta è controllato da uno dei pin di Arduino), a volte il display LCD diventa confuso. Rimane confuso di solito fino alla successiva chiusura del relè, ma a volte quando il relè si apre o dopo qualche altro ciclo di apertura / chiusura per il ripristino. La confusione inizia sempre e si interrompe contemporaneamente all'apertura o alla chiusura del relè.
Per "confondersi", intendo che ogni volta che scrivo ad esso in seguito confondendolo, anziché scrivere caratteri inglesi, ottengo una serie di caratteri, che di solito non riesco a identificare nel foglio dati (anche se alcuni posso). Questa serie di caratteri confusi tende a spostarsi a sinistra lungo lo schermo mentre scrivo nuovo testo sul display LCD.
Sono sicuro che Arduino stesso non si confonda, poiché scrivo lo stesso testo sul monitor seriale allo stesso tempo e non è confuso.
Da allora ho provato a collegare il pin RW a un'uscita Arduino e Data0-3 a terra, ma questo non aiuta. Ho alimentato l'intero dispositivo con una batteria da 9 V o con USB e non aiuta. Ho sostituito la batteria ... nessuna modifica.
L'unica cosa che sembra funzionare è non avere alcun carico collegato al relè, ma ciò vanifica lo scopo :-)
Non ho un analizzatore di segnale o qualcosa di più sofisticato di un multimetro, un laptop e un arduino ... Qualcuno ha qualche suggerimento per aiutarmi a eseguire il debug?
Foglio riassuntivo LCD: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf
Specifiche LCD: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf
Esempio di testo confuso: