Tabla de contenido:

LCD COG para un Arduino Nano: 3 pasos
LCD COG para un Arduino Nano: 3 pasos

Video: LCD COG para un Arduino Nano: 3 pasos

Video: LCD COG para un Arduino Nano: 3 pasos
Video: Cual pantalla usar con Arduino? 2024, Mes de julio
Anonim
LCD COG para un Arduino Nano
LCD COG para un Arduino Nano

Este Instructable describe cómo usar un LCD COG con un Arduino Nano.

Las pantallas LCD COG son baratas pero un poco más difíciles de conectar. (COG significa "Chip sobre vidrio"). El que estoy usando contiene un chip controlador UC1701. Requiere solo 4 pines del Arduino: reloj SPI, datos SPI, selección de chip y comando / datos.

El UC1701 está controlado por el bus SPI y funciona a 3.3V.

Aquí describo cómo usarlo con un Arduino Nano. También debería funcionar con un Arduino Mini o Uno; lo probaré pronto.

Este es mi primer proyecto de Arduino y no he escrito C en décadas, así que si estoy cometiendo errores obvios, hágamelo saber.

Paso 1: construcción del hardware

Construyendo el hardware
Construyendo el hardware
Construyendo el hardware
Construyendo el hardware
Construyendo el hardware
Construyendo el hardware

Compre una pantalla LCD COG que contenga un chip UC1701. Debería utilizar el bus SPI en lugar de una interfaz paralela. Tendrá alrededor de 14 pines que estarán etiquetados con nombres como los que se enumeran a continuación. (No desea una interfaz paralela con muchos más pines etiquetados como D0, D1, D2 …)

El que compré es: https://www.ebay.co.uk/itm/132138390168 O puede buscar en eBay "12864 LCD COG".

Elija uno que tenga una cola bastante ancha con pines espaciados a 1,27 mm; los pines más finos serán difíciles de soldar. Asegúrese de que tenga un chip UC1701. Observe cómo en la sexta imagen de la página de eBay, dice "CONECTOR: COG / UC1701".

La pantalla es transparente y es difícil saber cuál es la parte delantera y trasera. Estudia mis dibujos con detenimiento. Observe dónde están los pines 1 y 14: están marcados en la cola.

La cola flexible es bastante fácil de soldar, pero requiere un adaptador para que pueda conectarla a una placa de pruebas. Compré: https://www.ebay.co.uk/itm/132166865767 O puede buscar en eBay "Adaptador Smd SSOP28 DIP28".

El adaptador tiene un chip SOP de 28 pines en un lado o un chip SSOP de 28 pines en el otro lado. Un chip SOP tiene un espaciado de pines de 0.05 (1.27 mm) que es el mismo que el de la cola de la pantalla LCD.

También necesitará algunos pines de encabezado. Siempre que compro un Arduino u otro módulo, viene con más pines de encabezado de los necesarios, por lo que probablemente ya tenga algunos. De lo contrario, busque en eBay "pines de encabezado de 2,54 mm".

Suelde 14 de los pines del cabezal en el adaptador. No los empuje hasta el final, es mejor si la parte posterior del adaptador es plana. Colóquelo plano sobre su banco para que los pasadores no se introduzcan demasiado en los orificios. Asegúrese de que los pines estén en el lado SOP de la placa (es decir, el chip más grande).

Las almohadillas de la cola están en una especie de ventana. Estañe ambos lados con soldadura. Estañe las almohadillas del adaptador. Sostenga la cola del adaptador en su lugar y luego toque cada almohadilla con el soldador (necesitará una punta bastante fina).

Ate un poco de hilo a través de los orificios del adaptador para que actúe como alivio de tensión. (Usé "cable de transformador").

Si lo suelda al revés, no intente desoldar la cola. Saque los pines uno a la vez y muévalos al otro lado del tablero. (Sí, cometí ese error y volví a soldar la cola, por lo que está un poco desordenado en la foto).

Paso 2: Conexión al Arduino

Conectando al Arduino
Conectando al Arduino
Conectando al Arduino
Conectando al Arduino

Esta sección explica cómo conectarse a un Arduino Nano. Será muy similar para un Mini o Uno, pero aún no lo he probado.

Estudie el diagrama del circuito.

Un Arduino Nano que está conectado a un puerto USB funciona a 5V. La pantalla LCD funciona a 3.3V. Por lo tanto, debe alimentar la pantalla LCD desde el pin 3V3 del Nano y reducir el voltaje en cada pin de control de 5V a 3.3V.

El pinout de la pantalla LCD es:

  • 1 CS
  • 2 RST
  • 3 CD
  • 4
  • 5 CLK
  • 6 SDA
  • 7 3V3
  • 8 0V Tierra
  • 9 VB0 +
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS es Chip-Select. Se tira hacia abajo para seleccionar (habilitar) el chip UC1701. (CS puede llamarse CS0 o En o similar).

RST se restablece. Se tira hacia abajo para restablecer el chip. (RST podría llamarse Restablecer).

CD es comando / datos. Se baja al enviar comandos al chip a través de SPI. Es alto al enviar datos. (El CD podría llamarse A0).

CLK y SDA son los pines del bus SPI. (SDA podría llamarse SPI-Data. CLK podría ser SCL o SPI-Clock).

VB0 + y VB0- son utilizados por la bomba de carga interna del UC1701. La bomba de carga genera los voltajes impares que necesita la pantalla LCD. Conecte un condensador de 100n entre VB0 + y VB0-. La documentación de UC1701 recomienda 2uF pero no pude ver una diferencia con esta pantalla LCD en particular.

Si su LCD tiene pines VB1 + y VB1-, también conecte un capacitor de 100n entre ellos. (Si su LCD tiene un pin VLCD, puede intentar conectar un capacitor de 100n entre VLCD y Gnd. No hizo ninguna diferencia con mi LCD).

Conecte la pantalla LCD al Nano de la siguiente manera:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 CD = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Tierra

("*" significa usar un divisor de potencial para reducir el voltaje. Si el Arduino está funcionando a 3V3 de una fuente independiente, no necesitará las resistencias).

El Nano emite 3,3 V y puede proporcionar suficiente corriente para la pantalla LCD. (La pantalla consume alrededor de 250uA).

El Nano también emite 5 V y se puede utilizar para alimentar la luz de fondo. Limite la corriente a la luz de fondo con una resistencia de 100 ohmios.

Si se está quedando sin pines en el Nano, puede conectar RST a 3V3, luego puede usar D6 para otra cosa. El U1701 se puede restablecer en el software mediante un comando en el SPI. Nunca he tenido ningún problema con eso, pero si está usando su propio circuito en un entorno ruidoso, puede ser mejor usar un reinicio de hardware.

Paso 3: software

Software
Software

En teoría, puede manejar el UC1701 desde la biblioteca U8g2 (o Ucglib u otras bibliotecas disponibles). Luché durante días para que funcionara y fracasé. La biblioteca U8g2 es un monstruo porque puede manejar una gran variedad de chips y es muy difícil seguir el código. Así que me di por vencido y escribí mi propia biblioteca más pequeña. Ocupa mucho menos espacio en Arduino (aproximadamente 3400 bytes más fuentes).

Puede descargar mi biblioteca desde aquí (el botón Descargar en esta página). Se incluyen un boceto de muestra y una guía del usuario. La página web https://www.arduino.cc/en/Guide/Libraries describe cómo importar una biblioteca; vaya a la sección "Importar una biblioteca.zip".

Inicialice la pantalla LCD con

UC1701Begin ();

UC1701Begin puede tomar parámetros para cambiar los pines o ignorar el pin RST. La biblioteca solo usa hardware SPI (no se proporciona un software SPI). La pantalla se puede voltear en los ejes xey. Eso es útil si desea montar la pantalla LCD en una orientación diferente.

Se han duplicado varios procedimientos de la biblioteca U8g2:

  • Dibujar linea
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • Trabajo de dibujo
  • DibujarCírculo
  • DrawDisc
  • DrawFilledEllipse
  • DibujarEllipse
  • DibujarTriángulo
  • UC1701SetCursor
  • UC1701ClearDisplay

Algunos procedimientos son ligeramente diferentes:

  • vacío DrawChar (uint8_t c, fuente de palabra);
  • void DrawString (char * s, fuente de palabra);
  • vacío DrawInt (int i, fuente de palabra);

Los procedimientos de dibujo de cadenas se pasan al índice de una fuente. Las fuentes se declaran en la memoria flash del Arduino para que no ocupen la preciosa SRAM. Se proporcionan tres fuentes (pequeña, mediana y grande). Solo están vinculados y ocupan memoria flash si los usa (aproximadamente de 500 a 2000 bytes cada uno).

"Color" se maneja de manera diferente a la biblioteca U8g2. Cuando se borra la pantalla LCD, tiene un fondo oscuro. Si MakeMark (una variable global) es verdadera, el dibujo se realiza en blanco. Si MakeMark es falso, el dibujo se realiza en la oscuridad.

Algunos procedimientos son exclusivos del UC1701:

SetInverted dibuja en negro sobre blanco en lugar de blanco sobre negro.

void SetInverted (bool inv);

El brillo y el contraste de UC1701 se establecen mediante:

  • void SetContrast (valor uint8_t); // sugerido es 14
  • void SetResistor (valor uint8_t); // sugerido es 7

Trabajan juntos de una manera bastante insatisfactoria.

SetEnabled apaga la pantalla LCD:

void SetEnabled (bool en);

La pantalla toma 4uA cuando duerme. También debe apagar la luz de fondo: maneje desde un pin del Nano. Después de volver a habilitarlo, el UC1701 se habrá restablecido; la pantalla se borra y el contraste y la resistencia se habrán restablecido a sus valores predeterminados.

Entonces, en conclusión, las pantallas COG son baratas y tienen un tamaño decente. Son fáciles de conectar a un Arduino.

Recomendado: