Tengo una pantalla LCD estándar de 16x2 (creo que es compatible con Hitachi HD44780; consulte el resumen y las especificaciones a continuación), enganchada a un Arduino Uno usando 4 pines de datos, como se describe aquí , aunque he agregado 2x 220ohm resistencias en paralelo (es decir, un Resistencia de 110 ohmios) en el pin 16 (luz de fondo de tierra), y reemplazó el bote con resistencias estáticas para crear 4V en Vo.
En resumen, RW está conectado a tierra y RS, Enable y Data4-7 están conectados a los pines Arduino, mientras que Data 0-3 están flotando.
Tengo otras cosas (sensores, un transistor con un SSR optoaislado y un relé de red, algunos botones) conectados a diferentes pines en el Arduino. El código que uso escribe texto en la pantalla varias veces por segundo, y normalmente, la pantalla funciona perfectamente.
Sin embargo, cuando el relé se cierra (demora aproximadamente 10 mA y es controlado por un transistor que a su vez se controla desde uno de los pines Arduino), a veces la pantalla LCD se vuelve confusa. Por lo general, permanece confuso hasta que el relé se cierra la próxima vez, pero a veces cuando se abre el relé o después de algunos ciclos más de apertura / cierre para reiniciar. Las incrustaciones siempre comienzan y se detienen al mismo tiempo que el relé se abre o se cierra.
Por "distorsionado", quiero decir que cada vez que escribo después de que se vuelve confuso, en lugar de escribir caracteres en inglés, obtengo una cadena de caracteres, que generalmente no puedo identificar en la hoja de datos (aunque algunos sí puedo). Esta cadena de caracteres confusos tiende a moverse hacia la izquierda a lo largo de la pantalla a medida que escribo un nuevo texto en la pantalla LCD.
Estoy seguro de que no se está confundiendo el Arduino en sí, ya que escribo el mismo texto en el monitor de serie al mismo tiempo, y no está distorsionado.
Desde entonces he experimentado con el cableado del pin RW a una salida Arduino y Data0-3 a tierra, pero esto no ayuda. He alimentado todo el dispositivo con una batería de 9V o con USB, y no ayuda. He reemplazado la batería ... sin cambios.
Lo único que parece funcionar es que no hay carga conectada al relé, pero eso frustra el propósito :-)
No tengo un analizador de señal ni nada más sofisticado que un multímetro, una computadora portátil y un arduino ... ¿Alguien tiene alguna pista para ayudarme a depurar esto?
Hoja de resumen de LCD: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf
Especificación de LCD: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf
Ejemplo de texto confuso: