Conexión Arduino uno con pantalla táctil. Botones táctiles en Arduino. Conexión de un botón táctil a Arduino

En este artículo hablaremos de los botones táctiles en Arduino. Con este componente sencillo y económico podrás crear proyectos sencillos y muy impresionantes. En la mayoría de los casos, estos botones se utilizan para crear todo tipo de interfaces táctiles cómodas, por ejemplo, en sistemas domésticos inteligentes. Averigüemos cómo conectar botones táctiles a Arduino, escribamos un boceto simple y asegurémonos de considerar el principio de su funcionamiento.

No es ningún secreto que el progreso no se detiene. Constantemente surgen nuevas tecnologías y se mejoran las antiguas. Las pantallas táctiles aparecieron recientemente (según los estándares humanos), pero ya se han establecido firmemente en nuestra vida diaria. Los teléfonos, televisores, terminales y otros utilizan principalmente tecnologías "sin botones". Esta palabra está entre comillas porque todavía usan botones, solo los táctiles. Este artículo tratará sobre ellos, o más precisamente, sobre el módulo Touch para Arduino.

Cómo funcionan los botones táctiles

Los módulos con botones táctiles utilizan principalmente pantallas táctiles capacitivas proyectadas (https://ru.wikipedia.org/wiki/Touch_screen). Sin entrar en explicaciones espaciales de su funcionamiento, para registrar un clic se utiliza el cálculo del cambio en la capacitancia de un capacitor (circuito eléctrico), y una característica importante es la capacidad de establecer una capacitancia inicial diferente, que veremos más tarde.

El cuerpo humano tiene una cierta capacidad eléctrica y, por tanto, una baja reactancia para la alternancia. corriente eléctrica. Si lo toca con el dedo o con cualquier objeto conductor de electricidad, una pequeña corriente de fuga del dispositivo fluirá a través de él. Un chip especial detecta esta fuga y envía una señal cuando se presiona el botón. Las ventajas de esta tecnología son: relativa durabilidad, bajo impacto de contaminación y resistencia a la entrada de agua.

Botones táctiles o mecánicos

El botón táctil "siente" presión incluso a través de una pequeña capa de material no metálico, lo que garantiza variedad de uso ella en todo tipo de proyectos.

Esto también se desprende del punto anterior: aumenta la posibilidad de utilizar un botón táctil dentro de la carcasa. atractivo proyecto, que no afecta la funcionalidad, pero es bastante importante en La vida cotidiana para no prestarle atención.

+Operación estable, lo cual se expresa por la ausencia de partes móviles y calibración frecuente (que se discutirá a continuación). No tendrá que preocuparse por el ruido de los botones que se produce al utilizar una contraparte mecánica, lo que hará la vida mucho más fácil para un usuario novato de Arduino. Por tanto, otra ventaja, aunque no para todos, es facilidad de operación.

Las desventajas incluyen las siguientes:

  • Botones táctiles no funcionan bien a temperaturas bajo cero, por lo tanto, no son aptos para uso en exteriores.
  • Alto consumo de electricidad, causado por la necesidad de mantener constantemente la misma capacidad.
  • El botón táctil no funciona cuando se presiona con la mano enguantada o con un objeto poco conductor

Descripción general de los botones táctiles

Antes de hablar directamente sobre cómo trabajar con el módulo, debe decidir qué modelo comprar para usar. Consideremos varias opciones de diferentes empresas:

1. Sensor táctil Troyka

Tiempo de respuesta: 80 ms (en modo de energía) y 10 ms (en modo de alta velocidad)

4 milímetros

Tamaño: 25X25mm

Tensión de alimentación: 3-5V

Tiempo de respuesta: 220 ms y 80 ms

Espesor dieléctrico máximo para funcionamiento normal: 2 milímetros

Tamaño: 20X20mm

Tensión de alimentación: 2–5 V

Tiemporespuesta: 220 ms y 60 ms

Tamaño: 24X24mm

Tensión de alimentación: 2–5 V

Tamaño: 30X20mm

Tensión de alimentación: 3,3–5 V

Conexión de un botón táctil a Arduino

Para utilizar el botón táctil, así como todos los demás módulos y sensores, debe estar conectado a algún tipo de placa arduino. En la mayoría de los casos se utilizan módulos estándar con tres pines: alimentación, señal y tierra. Sus ubicaciones varían de modelo a modelo, se muestran en el diagrama según el listado reciente (el botón táctil es reemplazado por un interruptor debido a su ausencia en Tincercad):

Un punto importante: debes recordar que el botón táctil requiere una calibración promedio de medio segundo durante cada inicio, lo que te permite no preocuparte por ruidos innecesarios que sin duda surgirían debido a Posiciones diferentes botones en proyectos. Por lo tanto, no debes presionar el botón inmediatamente después de comenzar, porque... Después de esto, lo más probable es que el dispositivo no funcione correctamente.

El módulo táctil es esencialmente similar a un botón digital. Mientras se presiona el botón, el sensor genera un uno lógico y, si no, un cero lógico.

Proyectos usando el botón táctil

Empecemos por algo sencillo: cuando pulsas el botón, el LED incorporado se enciende.

Botón int constantePin = 7; // Establece los valores del puerto conectado al puerto de señal del botón void setup() ( pinMode(LED_BUILTIN, OUTPUT); // Comando para respuesta adecuada del LED pinMode(buttonPin, INPUT); // Abre el puerto para lectura) void loop() ( buttonState = digitalRead(buttonPin); // Lee el estado del botón (presionado / no presionado) if (digitalRead(buttonPin)) ( // Si el botón está presionado... digitalWrite( LED_BUILTIN, HIGH); // Aplicar voltaje a LED_BUILTIN - el valor para el LED incorporado) else ( // De lo contrario... digitalWrite(LED_BUILTIN, LOW); // No suministrar voltaje) )

Ahora compliquemos la tarea: al presionar el botón se cambia el modo de funcionamiento del LED.

Botón int constantePin = 7; // Establece los valores del puerto conectado al puerto de señal del botón int count = 0; // Variable para seleccionar el modo de funcionamiento void setup() ( pinMode(LED_BUILTIN, OUTPUT); // Comando para respuesta adecuada del LED pinMode(buttonPin, INPUT); // Abre el puerto para lectura ) void loop() ( if (digitalRead (buttonPin))( // Cuando se presiona el botón... count = count + 1; // Cambia el modo del botón if(count > 2)( // Si se excede el valor de conteo, comenzamos a contar nuevamente = 0; ) while(digitalRead( buttonPin))( // Un bucle vacío para esperar hasta que el usuario suelte el botón ) ) if(count == 0) ( // 3 modos para cambiar el botón: digitalWrite(LED_BUILTIN, LOW) ; // 1: LED apagado ) else if( count == 1) ( digitalWrite(LED_BUILTIN, HIGH); // 2: Encendido ) else ( digitalWrite(LED_BUILTIN, HIGH); // 3: Retraso de parpadeo (100); digitalWrite (LED_BUILTIN, BAJO); retraso(100); ) )

Conclusión

En este artículo, analizamos el principio de funcionamiento y el diagrama de conexión del botón táctil a las placas Arduino. Desde el punto de vista del modelo de software, no existen diferencias especiales a la hora de trabajar con este tipo de botón. Simplemente estás analizando el nivel. señal entrante y decide tu acción. Teniendo en cuenta que los módulos de botones táctiles son bastante económicos y están disponibles en grandes cantidades tiendas online, añadir una interfaz tan interesante y moderna a tu proyecto Arduino no será difícil.

Este artículo describe cómo conectar el TE-ULCD a Arduino y cómo se puede utilizar junto con la placa de expansión Ethernet Shield v2. En el proceso de estudiar el módulo, obtuvimos una biblioteca y un pequeño boceto que obtuvimos de Internet y que muestra la hora en formato UTC, el estado del tráfico en Moscú usando el servicio Yandex.traffic y el clima usando GisMeteo. servicio de informante.

Elegí este módulo como una de las pocas soluciones listas para usar basadas en la interfaz SPI disponibles en la Federación de Rusia, es decir, no requiere muchos (16-32) pines para su control.

TE-ULCD es producido por Terraelectronics LLC. El módulo se basa en una pantalla gráfica en color de 3,5" (o 5,6") con pantalla táctil y un microcontrolador ARM-7 de 32 bits. El mantenimiento de una pantalla gráfica en color mediante un microcontrolador especializado le permite separar las funciones de visualización y control de información y permite proporcionar una interfaz "hombre-máquina" en varios sistemas de información y control. En la etapa de fabricación se carga una biblioteca de funciones gráficas en la memoria del programa del microcontrolador. Las funciones se pueden llamar desde el programa de aplicación mediante comandos SPI. Esto simplifica enormemente la creación de imágenes en la pantalla TFT, así como el mantenimiento de la pantalla táctil. Es posible actualizar la biblioteca descargada. Se utiliza una tarjeta de memoria microSD para almacenar imágenes en formato BMP.

Componentes requeridos

Conexión

El módulo de visualización se alimenta con 5 voltios. corriente continua, en el manual del usuario el fabricante indica una corriente nominal de 0,2 A. Medí el consumo de corriente usando una fuente de alimentación digital y resultó ser estable 0,299 A, por lo que deberíamos centrarnos en 0,3 A. Al alimentar el TE-ULCD Desde un Arduino, un convertidor de voltaje instalado en la placa se calentó bastante, así que, por si acaso, encendí el módulo de pantalla desde el USB de una computadora personal usando un cable de un mouse viejo. El conector X8 TE-ULCD está diseñado para fuente de alimentación y tiene la siguiente distribución de pines: PIN 1, 3, 7 y 9 - entrada de 5 V, PIN 2, 4, 6, 8, 10 - GND, PIN5 se utiliza como clave para controlar la conexión correcta. Puede suministrar energía a cualquier pin +5 V y GND.
El Arduino se conecta al conector X6 del módulo display, según el diagrama que se muestra en la figura. SPI TE-ULCD funciona a un nivel de 3,3 V, por lo que debes hacer coincidir los niveles del módulo de visualización y Arduino usando un divisor de resistencia simple.
Dado que el plan es utilizar la tarjeta de expansión TE-ULCD y Ethernet Shield juntas, se utilizarán PIN9 y PIN10 para seleccionar dispositivos administrados (esclavos), respectivamente. Se eligió PIN9 en función de la facilidad de conexión y puede usar cualquier otro gratuito cambiando el valor de SlaveSelectPin en el boceto.

Los comandos de escritura y lectura de TE-ULCD corresponden a las configuraciones de SPI CPOL=1 y CPHA=1, que corresponden a SPI_MODE3 para Arduino. Para la tarjeta de expansión Ethernet Shield v2, la configuración de SPI corresponde a SPI_MODE0. Esta configuración será necesaria para acceder al módulo correspondiente.

Descripción del programa

El programa descrito en el artículo utiliza la biblioteca ULCD especialmente preparada para Arduino. Las imágenes para TE-ULCD deben almacenarse en microSD.

Las descripciones de los comandos, registros y mensajes del módulo gráfico TE-ULCD utilizado en la biblioteca ULCD fueron tomadas del manual del operador de los módulos TE-ULCD35/56. El módulo TE-ULCD admite dos modos de funcionamiento: terminal y modo de funcionamiento utilizando una biblioteca de funciones gráficas (presentada en este ejemplo).

Actualmente, el conjunto de widgets integrados (primitivas de interfaz gráfica de usuario) de TE-ULCD incluye:

    Cuadro (0x01). Requerido, usado para alojar widgets.

    Ventana (0x00). Diseñado para colocar widgets, tiene un conjunto específico de propiedades.

    Panel (0x06). Diseñado para colocar widgets, tiene un conjunto específico de propiedades.

    Línea estática (0x12). Es una línea con una sombra y se puede utilizar para separar unos componentes de otros.

    Botón (0x0A). Le permite colocar un botón y realizar alguna acción al hacer clic en él.

    Texto (0x07). Se utiliza para mostrar texto en la pantalla.

    Mapa de bits (0x05). Diseñado para mostrar imágenes en formato bmp.

    GirarControl (0x0V). Diseñado para mostrar una imagen de un regulador en forma de “rueda” giratoria.

    Control deslizante (0x0C). Diseñado para mostrar una imagen del controlador en forma de "control deslizante" en la pantalla.

Usando la biblioteca ULCD

La biblioteca ULCD para Arduino implementa los siguientes procedimientos para trabajar con el módulo de visualización universal TE-ULCD:

    ULCD() - constructor;

    void RESET() - reinicio del software del módulo;

    void digitalPortWrite(valor de byte): envío de un byte desde Arduino a TE-ULCD;

    void LOAD_FONT(byte R, String FileName): cargar una fuente desde la memoria flash TE-ULCD en el registro TE-ULCD;

    void LOAD_PICTURE(byte R, String FileName): cargar una imagen en formato BMP desde una tarjeta microSD en el registro TE-ULCD;

    void LOAD_TEXT(byte R, String Text): carga una cadena de texto de Arduino en el registro TE-ULCD;

    void LOAD_SCRIPT(byte R, byte Número): carga un script de Arduino en el registro TE-ULCD;

    void SET_SIZE(int X, byte Y): configura el tamaño del widget;

    void SET_POS(int X, byte Y): establece la posición (esquina inferior izquierda) del widget;

    void SET_BACK_COLOR(byte R, byte G, byte B): configura el color de fondo del widget;

    void SET_FONT_COLOR(byte R, byte G, byte B): configura el color de fuente del widget;

    void SET_FONT(byte R): configuración de la fuente del widget desde el registro TE-ULCD;

    void SET_MAIN(byte R): configuración del widget como principal (se aplica solo al marco);

    void SET_SCALE(byte min, byte max, byte pos): configuración de los valores mínimo, máximo y predeterminado del widget (para el control deslizante y la rueda);

    void SET_SCRIPT(byte R): configuración del script para el widget (la acción que realizará TE-ULCD en un evento determinado) desde el registro TE-ULCD;

    void SET_TEXT(byte R): configura una cadena para el widget desde el registro TE-ULCD;

    void SET_PICTURE(byte R): configuración de una imagen en formato BMP para el widget desde el registro TE-ULCD;

    void SEND_REG(byte R1, byte R2): envía el contenido del registro R2 a R1;

    void WRITE_REG(byte R, valor de byte): escribir un valor en el registro TE-ULCD especificado;

    void CR_WID(byte WidType): crea un widget del tipo especificado (de la lista de widgets TE-ULCD integrados);

    byte READ(byte R): lee el contenido del registro TE-ULCD;

    void REPAINT_TEXT(byte R1, byte R2, String Text): reemplaza (redibuja) el texto del widget almacenado en el registro R1 con el texto transferido en la variable Texto, guarda el texto en el registro R2;

    void REPAINT_BMP(byte R1, byte R2): vuelve a dibujar la imagen del widget almacenado en el registro R1 en la imagen almacenada en el registro R2;

Por ejemplo, la imagen de fondo en el programa se configura de la siguiente manera:

#incluir pantalla LCD ULCD; // ... lcd.LOAD_PICTURE (1, "atrás.bmp" ); //Carga la imagen desde la microSD al registro R1 lcd.CR_WID(5); //Crea un widget BitMap (para el fondo) lcd.SET_SIZE(320, 240); //Establece el tamaño del mapa de bits igual al tamaño de la pantalla TE-ULCD35 lcd.SET_POS(0, 0); //Establecer la posición del mapa de bits lcd.SET_PICTURE(1); //establece la imagen para el widget del registro R1

Para comodidad del usuario, TE-ULCD tiene 32 registros (R0-R31) propósito general para almacenar punteros a widgets (imágenes, texto, scripts). Si lo desea, los punteros se pueden almacenar en el Arduino.

Obtener el estado del tráfico

Quería hacer mi propio semáforo inmediatamente después de ver uno similar en Yandex, solo que allí estaba controlado desde una PC, pero todavía quiero uno autónomo, solo un Arduino y un Escudo Ethernet. No puede recibir una solicitud directa sobre el estado del tráfico del servidor Yandex.Traffic. Una carta al equipo de soporte técnico de Ya.probka tampoco ayudó: “Gracias por su atención a nuestro servicio. No proporcionamos dicha información. Intente conectar el módulo de atascos de tráfico y utilice el control de “Tráfico”.

Para obtener el estado del tráfico en la carretera utilicé el informador, o más bien la imagen que en él se transmite. El algoritmo de acciones es el siguiente:

    Conéctese al servidor (info.maps.yandex.net);

    Analizamos la imagen resultante, se transmite en el estándar PNG (0xFF 0xA4 0x00 amarillo, 0x3F 0xBB 0x00 verde, 0xFF 0x2A 0x00 rojo), la presencia de colores es única para cada estado verde-amarillo-rojo (además, contando el número de píxeles de cada color puede determinar la puntuación de los enchufes, no sólo el color);

    Mostramos la imagen en la pantalla TE-ULCD.

La solicitud de imagen informadora tiene la siguiente forma:

OBTENER http://info.maps.yandex.net/traffic/moscow/current_traffic_88.gif HTTP/1.1 Aceptar: image/gif Aceptar-Idioma: en-US; Control de caché: edad máxima = 0 Host: info.maps.yandex.net Agente de usuario: Chrome

Esta solicitud es adecuada para Moscú, pero puede solicitar el estado del tráfico en cualquier ciudad para la que opere el servicio de información Ya.Traffic. Este bloque, con una pequeña modificación, puedes usarlo para controlar tu propio semáforo usando Arduino y relés, será como en Yandex :).

Conseguir tiempo

La forma más sencilla y sencilla de obtener la hora en formato UTC es enviar una solicitud a algún servidor (al principio usé Google, pero luego para ahorrar memoria cambié al servidor Yandex.Traffic) y analizar la respuesta, la cadena resultante se ve así este:

Actualmente, la solicitud para obtener la hora tiene este aspecto:

OBTENER http://info.maps.yandex.net/traffic/moscow HTTP/1.1

La precisión de dicho tiempo no es alta: hasta minutos, pero durante reloj sencillo encaja.

Obtener un pronóstico del tiempo

Para obtener el pronóstico del tiempo para el día siguiente, utilicé el servicio de recepción de informador de GisMeteo en formato XML. Los datos meteorológicos son un resumen detallado de todos los parámetros meteorológicos, en incrementos de 6 horas y con un día de antelación. Aquí todo es sencillo, indicamos la ciudad en la solicitud y recibimos en respuesta un pronóstico del tiempo, lo analizamos y mostramos el pronóstico para las próximas 6 horas en pantalla.

int freeRam () (extern int __heap_start, * __brkval; int v; return (int) & v - (__brkval == 0? (int) & __heap_start: (int) __brkval); )

Si alguien puede decirme cómo mejorar el programa se lo agradeceré :), hay para discusión

La pantalla táctil será una decoración para cualquier proyecto Arduino.

En este artículo veremos una pantalla táctil con una ranura incorporada para una tarjeta microSD. La pantalla TFT tiene una diagonal de 2,8", retroiluminación que utiliza 4 LED blancos y la capacidad de mostrar 262.000 tonos de colores (18 bits). La pantalla tiene una resolución de 240x320 píxeles con control individual. Tenga en cuenta que esto es mucho más. que, por ejemplo, la pantalla LCD 5110 en blanco y negro. El escudo tiene una pantalla táctil resistiva incorporada, que le permite determinar la posición de su dedo cuando presiona la pantalla.

Información general y características técnicas del escudo TFT LCD 2.8"

La pantalla TFT se vende completamente montada, lista para usar. Sólo necesitas instalarlo encima de tu Arduino y conectar la biblioteca necesaria al IDE de Arduino. ¡El procedimiento de instalación/puesta en marcha/primera puesta en marcha no tardará más de 10 minutos!

El escudo TFT tiene un controlador incorporado con almacenamiento en búfer de RAM. Como resultado, la mayoría de las operaciones se transfieren al propio escudo, en lugar de cargar el controlador en el Arduino. Para conectar una pantalla TFT, bastan unos pocos pines: 12 pines son responsables de la pantalla, 13 del funcionamiento de la tarjeta SD, si usa una.

Por supuesto, los fabricantes no nos dejaron solos con la hoja de datos y el deseo “¡Buena suerte!” Existen bibliotecas que te facilitarán enormemente el trabajo con el escudo TFT.

Existe una excelente biblioteca de gráficos de código abierto que le permite dibujar píxeles, líneas, rectángulos, círculos y texto: descárguela en Github.

Además, se ha escrito una biblioteca de pantalla táctil: Descargar en Github, que determina las coordenadas x, y, z (presión), que contiene un boceto de ejemplo para demostrar estas capacidades. ¡Este boceto está escrito para Arduino, pero puede adaptarse a otros microcontroladores!

Especificaciones de la pantalla TFT:

  • La diagonal de la pantalla LCD TFT es de 2,8"
  • Resolución 240x320 píxeles, gama de colores de 18 bits (262000)
  • Controlador ILI9325 o ILI9328 con buffer incorporado memoria de acceso aleatorio
  • Interfaz digital de 8 bits, más 4 líneas de control
  • Utiliza pines digitales 5-13 y analógicos 0-3. Esto significa que puedes usar los pines digitales 2, 3 y analógicos 4 y 5. El pin 12 también está disponible si no estás usando una tarjeta microSD.
  • Compatible con cualquier placa Arduino "328 o Mega
  • ¡Compatible con 5V! Puede utilizar potencia lógica de 3,3 V y 5 V.
  • Hay un regulador LDO incorporado de 3,3 V a 300 mA.
  • Iluminado con 4 LEDs blancos. Habilitado de forma predeterminada. Para el control, puede conectar un transistor a un pin digital retroiluminado.
  • Pantalla táctil resistiva de 4 hilos.

Preguntas y respuestas adicionales

Miré la hoja de datos y descubrí que hay una interfaz SPI disponible. ¿Por qué estás utilizando una interfaz paralela? SPI es mejor, ¡se utilizarán menos pines!

De hecho, el controlador en la pantalla admite SPI, pero no hay pantallas que puedan usarlo. En el escudo de la pantalla táctil los pines correspondientes simplemente no se muestran como conectores. Lo más probable es que esto se deba al hecho de que la velocidad de transferencia a través de SPI sería muy lenta.

¡Todos los pines están incluidos! ¿Cómo puedo conectar algo más al Arduino?

Ejemplo de dibujo en una pantalla táctil.

Este protector LCD TFT tiene una pantalla resistiva de 4 cables incorporada de 2,8". Se puede usar para determinar el punto de contacto de un dedo, un lápiz óptico, etc. Para trabajar con una pantalla táctil, necesitará 4 pines en el Arduino.

Puedes descargar el ejemplo aquí: Repositorio de Github. No olvide descomprimir el archivo descargado y moverlo a la carpeta de bibliotecas de su Arduino IDE.

La pantalla táctil se conecta a Arduino de la siguiente manera:

  • Y+ se conecta al pin analógico 1
  • Y - se conecta al pin digital 7
  • X+ se conecta al pin digital 6
  • X - se conecta al pin analógico 2

Una vez conectado, descargue el ejemplo tftpaint_shield, que se encuentra en la biblioteca TFTLCD. En el lado derecho de la pantalla aparecerán “Cajas con flores”. Puedes hacer clic en uno de los cuadros para seleccionar el color con el que pintarás. Al hacer clic en el lado izquierdo de la pantalla, puede borrarlo.

La pantalla táctil está hecha de cristal fino. Es muy frágil. La más mínima grieta o daño lo dejará inutilizable. Tenga cuidado al mover la pantalla, especialmente en las esquinas. Para interactuar con la pantalla resistiva, puede utilizar no solo los dedos, sino también el lápiz óptico. Por supuesto, tampoco deberías ejercer demasiada presión sobre la superficie de la pantalla.


Subiendo fotos

La pantalla LCD TFT de 2,8" tiene una ranura incorporada para una tarjeta micoSD. ¡Esta ranura se puede utilizar para cargar imágenes! Preformatee la tarjeta en FAT32 o FAT16 (aquí se muestran más detalles sobre cómo funciona una tarjeta SD con Arduino) .

En la mayoría de los bocetos de ejemplo, la tarjeta SD no funcionará. Primero debe inicializarse.

Para aumentar la velocidad de transferencia de datos, puede descargar una biblioteca adicional aquí: Correcciones y actualizaciones de la biblioteca SD de Arduino. No olvide copiar la biblioteca extraída a la carpeta correspondiente en el IDE de Arduino.

Si está utilizando Arduino Mega, realice algunos cambios en el archivo SD/utility/Sd2Card.h. Debes eliminar la etiqueta de comentario de la línea #define MEGA_SOFT_SPI 1. Gracias a esto, para intercambiar datos con la tarjeta SD, Arduino Mega podrá utilizar los mismos pines que el Arduino clásico. Para realizar pruebas, puedes descargar esta imagen de un tigre: ¡Descarga este mapa de bits de tigre y guárdalo en la tarjeta microsd!

Inicie Arduino IDE y seleccione el boceto tftbmp_shield. ¡Súbelo a tu Arduino y listo! La pantalla mostrará lo siguiente:


Se pueden cargar imágenes de menos de 240 x 320 píxeles. Los dibujos deben guardarse en formato BMP de 24 bits. Incluso si el dibujo no era originalmente de 24 bits, vuelva a guardarlo, ya que este es el formato más fácil de leer. usando arduino. Puede rotar imágenes usando el procedimiento setRotation().

Control de retroiluminación

De forma predeterminada, los desarrolladores de Shield suponen que utilizará la luz de fondo todo el tiempo. Sin embargo, puedes controlar su brillo mediante salidas PWM o apagarlo por completo para ahorrar energía. Para hacer esto necesitarás trabajar un poco. Busque dos conectores de retroiluminación en la parte posterior del protector LCD TFT de 2,8". Con un cuchillo, retire la pista entre los terminales VCC y conecte los dos cuadrados etiquetados como Pin3. Después de esto, podrá controlar la retroiluminación utilizando el pin digital 3.

Deja tus comentarios, preguntas y comparte experiencia personal abajo. ¡A menudo surgen nuevas ideas y proyectos de las discusiones!

El escudo en cuestión es una placa con módulos de control y visualización integrados. La indicación se realiza mediante la pantalla LCD TC1602, el control se realiza mediante botones integrados. Es posible ajustar el brillo de la pantalla directamente en la placa mediante una resistencia de ajuste. La placa está equipada con conectores a los que se pueden conectar otros dispositivos, como por ejemplo sensores. Para trabajar con la pantalla se utilizan los pines 4-10, para detectar pulsaciones de botones se utiliza solo un pin analógico A0. Los pines digitales 0-3, 11-13 y los pines analógicos A1-A5 están libres.

Las principales áreas de aplicación del escudo: la creación de módulos de control que implementan la configuración del dispositivo mediante la interfaz del menú. La pantalla protectora se puede utilizar para mostrar información recibida de los sensores, con la posibilidad de que el usuario realice cualquier acción presionando los botones integrados. Naturalmente, puedes encontrar otras formas de utilizar el tablero: por ejemplo, para implementar un juego como el Tetris.

Especificaciones

  • Tipo de pantalla: LCD 1602, caracteres, modo de 4 bits.
  • Resolución: 16×2 (dos líneas de 16 caracteres cada una). Lugar familiar 5x8 puntos.
  • Color de pantalla: azul (opciones con amarillo y verde). Las letras son blancas.
  • Tecnología: STN, Transflectiva, Positiva.
  • Controlador de pantalla: HD44780U.
  • Límite de frecuencia de actualización de pantalla: 5 Hz
  • Potencia de la pantalla: 5 voltios
  • Botones: 6 botones (5 botones de control y reset).
  • Elementos adicionales: ajuste del brillo de la retroiluminación (potenciómetro).
  • Temperatura de funcionamiento de la pantalla: de -20 °C a +70 °C;
  • Temperatura de almacenamiento de la pantalla: de -30 °C a +80 °C.

Distribución de pines del escudo LCD para conectar a Arduino

Mostrar contactoLCD 1602 Descripción Contacto enEscudo LCD
Pataspantalla LCD
TierraTierra
VDDFuente de alimentación 5V
Contrastecontrol de contrastePotenciómetro
R.S.Comandos/Datos8
R/ELeer escribir
PermitirEncendido (activación)9
DB0No utilizado
DB1No utilizado
DB2No utilizado
DB3No utilizado
DB4fecha 14
DB5fecha 25
DB6fecha 36
DB7fecha 47
LED trasero+Enciende la luz de fondo10
LED trasero –Potencia de retroiluminación
Alfileres para botones
Botón de arribaBotón de controlA0
botón ABAJOBotón de controlA0
Botón izquierdoBotón de controlA0
Botón derechoBotón de controlA0
Botón SELECCIONARBotón de controlA0
ReiniciarReiniciar
PEPSIICSP para flashear el microcontrolador incorporado HD44780U
UARTContactos para conexión UART0, 1

Elementos de escudo adicionales

  • LED indicador (se enciende cuando se conecta la alimentación a la placa).
  • Almohadillas de contacto para conectar dispositivos analógicos (GND, VSS, pin de datos).
  • Potenciómetro para ajustar el contraste de la pantalla.

Conexión de la placa protectora LCD a Arduino

Conectar el escudo es muy simple: debe colocar las patas en los conectores correspondientes de la placa Arduino y alinearlas con cuidado. No es necesario conectar ni soldar nada adicional. ¡Debe recordar y tener en cuenta el hecho de que algunos pines están reservados para controlar la pantalla y los botones y no pueden usarse para otras necesidades! Para facilitar la conexión equipamiento adicional La placa tiene conectores adicionales de 5V y GND para cada pin pad analógico. Sin duda, esto facilita el trabajo con sensores. También puedes conectar dispositivos digitales a través de los pines libres 0-3 y 11-13. Una vez conectado el escudo, podemos trabajar con la pantalla y los botones del mismo de la misma forma que con dispositivos individuales, teniendo en cuenta únicamente los números de los pines a los que están soldados los contactos correspondientes.

Boceto para la pantalla en el escudo LCD Arduino.

Para trabajar con pantallas LCD se suele utilizar la popular biblioteca LiquidCrystal. En la etapa de inicialización, se crea un objeto de la clase LiquidCrystal, en cuyo constructor especificamos pines con contactos de pantalla conectados. Para nuestro escudo necesitamos usar esta opción: LiquidCrystal lcd(8, 9, 4, 5, 6, 7); Secuencia de argumentos del constructor:

  • RS (8)
  • Habilitar (9)
  • datos(4)
  • datos(5)
  • datos(6)
  • datos(7)

No hay nada complicado en trabajar con un objeto. En setup() inicializamos el objeto dándole el número de caracteres y líneas:

Lcd.comienzo(16, 2);

Para mostrar información en la pantalla, utilice el método print():

Lcd.print (“¡Maestro Arduino!”);

El texto se mostrará en la ubicación actual del cursor (al comienzo del boceto, esta es la primera línea y el primer carácter). Para especificar una posición arbitraria del cursor, puede utilizar setCursor(<столбец>, <строка>):

Lcd.setCursor(0, 0); // Primer carácter de la primera línea lcd.setCursor(0, 1); // Primer carácter de la segunda línea lcd.setCursor(2, 1); //Tercer carácter de la segunda línea

Botones de protección del teclado LCD

Hay cinco botones de control en la placa, que se operan a través de un pin analógico A0. El escudo utiliza un método bastante común de codificación de señal simple, en el que cada botón genera un cierto valor de voltaje, que después del ADC se convierte en el valor correspondiente de 0 a 1023. Por lo tanto, podemos transmitir información sobre cómo presionar diferentes botones a través de un pin. , leyéndolo usando funciones ;

Valores del nivel de señal en el pin A0 según el botón seleccionado:

Pulsar el botón Valor del pin analógico
BIEN0-100
ARRIBA.100-200
ABAJO200-400
IZQUIERDA400-600
SELECCIONAR600-800
Tecla no presionada800-1023

Un ejemplo de un boceto de cómo trabajar con los botones del protector del teclado LCD:

Int keyAnalog = analogRead(A0); si (claveAnalógico< 100) { // Значение меньше 100 – нажата кнопка right // Выполняем какое-то действие для кнопки вправо. } else if (keyAnalog < 200) { // Значение больше 100 (иначе мы бы вошли в предыдущий блок результата сравнения, но меньше 200 – нажата кнопка UP // Выполняем какое-то действие для кнопки вверх } else if (keyAnalog < 400) { // Значение больше 200, но меньше 400 – нажата кнопка DOWN // Выполняем действие для кнопки вниз } else if (keyAnalog < 600) { // Значение больше 400, но меньше 600 – нажата кнопка LEFT // Выполняем действие для кнопки влево } else if (keyAnalog < 800) { // Значение больше 600, но меньше 800 – нажата кнопка SELECT // Выполняем действие для кнопки выбора пункта меню } else { // Все остальные значения (до 1023) будут означать, что нажатий не было }

El método de codificación elegido tiene dos desventajas principales:

  • No se puede rastrear la pulsación simultánea de varios botones;
  • Las posibles distorsiones de la señal pueden provocar falsas alarmas.

Debes tener en cuenta estas limitaciones a la hora de elegir este SSD en tus proyectos si planeas utilizar el dispositivo en sistemas con mucho ruido que pueda distorsionar la señal en la entrada A0, razón por la cual el ADC puede generar un valor erróneo y Como resultado, el boceto ejecutará diferentes instrucciones.

Un boceto de ejemplo para trabajar con la pantalla y los botones de menú.

En este ejemplo, detectamos el botón actualmente presionado y mostramos su nombre en la pantalla. Tenga en cuenta que, por conveniencia, hemos separado la operación de definición de botones en una función separada. También en el boceto destacamos un método separado para mostrar texto en la pantalla. En él mostramos un mensaje (parámetro de mensaje) y lo borramos al cabo de un segundo. Hay que recordar que durante este segundo no se procesan las pulsaciones de botones.

#incluir Lcd de cristal líquido (8, 9, 4, 5, 6, 7); #definir BTN_UP 1 #definir BTN_DOWN 2 #definir BTN_LEFT 3 #definir BTN_RIGHT 4 #definir BTN_SELECT 5 #definir BTN_NONE 10 int detectButton() ( int keyAnalog = analogRead(A0); if (keyAnalog< 100) { // Значение меньше 100 – нажата кнопка right return BTN_RIGHT; } else if (keyAnalog < 200) { // Значение больше 100 (иначе мы бы вошли в предыдущий блок результата сравнения, но меньше 200 – нажата кнопка UP return BTN_UP; } else if (keyAnalog < 400) { // Значение больше 200, но меньше 400 – нажата кнопка DOWN return BTN_DOWN; } else if (keyAnalog < 600) { // Значение больше 400, но меньше 600 – нажата кнопка LEFT return BTN_LEFT; } else if (keyAnalog < 800) { // Значение больше 600, но меньше 800 – нажата кнопка SELECT return BTN_SELECT; } else { // Все остальные значения (до 1023) будут означать, что нажатий не было return BTN_NONE; } } void clearLine(int line){ lcd.setCursor(0, 1); lcd.print(" "); } void printDisplay(String message){ Serial.println(message); lcd.setCursor(0, 1); lcd.print(message); delay(1000); clearLine(1); } void setup() { Serial.begin(9600); lcd.begin(16, 2); lcd.print("Arduino Master"); delay(3000); lcd.setCursor(0, 0); lcd.print("Arduino Master"); } void loop() { int button = detectButton(); switch (button) { case BTN_UP: printDisplay("UP"); break; case BTN_DOWN: printDisplay("DOWN"); break; case BTN_LEFT: printDisplay("LEFT"); break; case BTN_RIGHT: printDisplay("RIGHT"); break; case BTN_SELECT: printDisplay("SELECT"); break; default: //printDisplay("Press any key"); break; } }

Breves conclusiones sobre la placa de expansión del escudo del teclado LCD

La placa de expansión del teclado LCD es bastante popular, es simple y fácil de usar en proyectos Arduino. Hoy puedes comprarlo fácilmente en casi cualquier tienda online.

Ventajas del escudo LCD:

  • Facilita la conexión de la pantalla LCD.
  • Reduce dimensiones generales dispositivos, porque Elimina cables y placas de circuito que sobresalen.
  • Reduce la cantidad de errores asociados con una instalación y conexión incorrectas.
  • Agrega funcionalidad de control con botones si la placa tiene botones instalados (protector del teclado LCD).

Defectos:

  • El costo de un escudo es mayor que el costo de una pantalla separada.
  • No siempre se necesita funcionalidad adicional en forma de botones.
  • El escudo consume más energía que los elementos individuales del tablero.


Si encuentra un error, seleccione un fragmento de texto y presione Ctrl+Entrar.