Conexión del protector del teclado LCD. Reloj LCD, alarma y temporizador con detector de movimiento en Arduino Cómo trabajar con pantalla LCD y botones

Shield es una placa complementaria. Propongo dividir los escudos en módulos separados y de tamaño completo. Los de tamaño completo repiten la forma de la placa Arduino, ya sea UNO, Nano o MEGA. Los módulos individuales son tableros de forma libre diseñados para realizar un conjunto específico de funciones. Ambos pueden ser tanto universales como para realizar tareas con un enfoque limitado.

En las tiendas puedes encontrar una gran variedad de escudos, y con ciertas calificaciones, tú mismo puedes diseñar una placa de circuito impreso que reproduzca el Arduino en forma y ubicación de pines y armar la tuya propia y única. La imagen lo muestra con un juego de escudos.

Comencemos con el escudo, que no tiene ninguna función especial, pero fue creado para facilitar la instalación de sus proyectos. Entonces, el primero de nuestra revisión facilitará la instalación de proyectos con una placa Arduino Nano, aunque el pequeño tamaño del “NANO” en este caso no sirve de nada.

La placa contiene un conector para conectar un enchufe de la fuente de alimentación, un estabilizador de voltaje y bloques de terminales. Están firmados y corresponden a las conclusiones de Nanka. Además, hay un botón de "reinicio" y un LED de "Encendido".

El segundo escudo es para el tablero Uno. Contiene una placa de pruebas sin soldadura para ensamblar el proyecto y pines que duplican los del propio Arduino: una solución conveniente.

Cualquier sensor analógico necesita alimentación y un contacto negativo; cuando hay muchos, hay tantos puentes que será muy difícil entender el circuito. Por lo tanto, los diseñadores idearon escudos para este tipo de soluciones. En ellos se muestran todas las entradas y salidas, y los contactos de alimentación están duplicados y colocados cerca.

A continuación se muestra un ejemplo de una placa de este tipo para la versión Arduino Mega.

Alámbrico e inalámbrico

Con estas placas, puede organizar el control del microcontrolador a través de una red mediante un cable Ethernet, por ejemplo, o de forma inalámbrica mediante una conexión GSM insertando una tarjeta SIM.

Esta placa se llama w5100 y contiene un módulo Ethernet y un módulo lector de tarjetas SD. Esto significa que puede almacenar datos, por ejemplo, un registro de mediciones de sensores en una tarjeta de memoria y controlar el sistema a través de una interfaz web. Para conectar Arduino con él, utilice las siguientes bibliotecas:

    biblioteca de Ethernet;

Tenga en cuenta que exteriormente repite el concepto de Arduino UNO R3, además, es adecuado para Mega.

Si el W5100 le parece demasiado grande, entonces el ENC28J60 ocupará menos espacio. Lamentablemente ya no tiene módulo SD.

La desventaja es que no se puede montar en una placa, sino que se fabrica como un módulo independiente.

W5500 es otra opción de protección Ethernet. En esencia, es una versión modificada del W5100, optimizada en términos de velocidad y eficiencia energética.

Tenga en cuenta que en los protectores de tamaño completo todos los pines están duplicados por el bloque de terminales. Desafortunadamente, los escudos usan puertos. Este en particular usa MOSI, MISO, SCK y el pin 10 para la señal CS (selección de destino de comunicación).

Si necesitas comunicación inalámbrica tu elección son los Shields Wi-Fi, si tienes Internet y un router, y si no tienes este, módulos GSM o Shields GPRS.

La foto muestra el escudo oficial. Dispone de ranura para tarjeta de memoria Micro SD, y se comunica con el microcontrolador mediante protocolos SPI pudiendo actualizar su software mediante Mini-USB; Soporta 802.11b/g.

Puedes ver el escudo GPRS de Amperka arriba. Puedes reemplazar la antena por una más potente. Más cerca del espectador se ve la ranura para la tarjeta SIM, un poco más lejos hay una ranura para la batería CR1225. La batería de la placa es necesaria para hacer funcionar el reloj de tiempo real, y esta es una adición importante a las capacidades del escudo GPRS. Puedes enviar SMS desde y hacia él.

Con este tablero, puede controlar y dar órdenes (o cualquier otro proyecto de su implementación) desde cualquier distancia. Es importante que esté dentro del alcance de la recepción celular.

¿Cómo almacenar datos en Arduino?

En los proyectos no toda la información cabe en la memoria del microcontrolador. En ocasiones es necesario almacenar determinadas cantidades de información. Lo primero que me viene a la mente, como ya se ha dicho, es registrar la información de los sensores para seguir estudiando cómo cambia el medio ambiente a lo largo de horas, días y años. Un gran ejemplo es una estación meteorológica doméstica. Esto es útil no sólo para los científicos investigadores, sino también para los aficionados a la educación y el desarrollo en general.

Lo más probable es que no se trate de un escudo, sino de un módulo. Es miniatura y fácil de repetir; por cierto, aquí tenéis su esquema.

También hay un escudo de almacenamiento de datos de tamaño completo. Funciona con tarjetas de memoria SD, a bordo hay un módulo de reloj en tiempo real que funciona con una batería CR1220 de 3 V, lo cual es una buena ventaja.

Controlamos una potente carga desde un microcontrolador.

Lo primero que nos puede venir a la mente es un relevo. Con su ayuda, puede cambiar tanto los circuitos de CC como una fuente de alimentación doméstica de 220 voltios, y pueden hacer frente a una explosión.

Específicamente, el módulo que se muestra a continuación puede conmutar una carga de 1 kW de 220 V (o 5 A) para cada canal; para aumentar la potencia, puede paralelizar varios canales o encender este relé; En este caso, los relés del blindaje desempeñarán el papel de amplificadores intermedios.

Por supuesto, puede cambiar el relé como lo describí en el artículo, a través de un transistor y debe seleccionar el relé de acuerdo con la corriente, pero usar una placa ya preparada será más confiable, más conveniente y se verá mejor.

El relé tiene un inconveniente: un número limitado de operaciones; esto es consecuencia del desgaste de los contactos. Esto sucede debido a la aparición de un arco cuando se abre una carga potente (especialmente de naturaleza inductiva: un motor, etc.). Puedes hacer dicho escudo de acuerdo con el siguiente esquema:

Y así es como se ve ensamblado:

Para encender una carga de CA, puede utilizar tiristores y triacs. Un problema es que no se pueden conectar directamente al Arduino; si la unión pn del electrodo de control se rompe, 220 V pueden terminar en la placa del microcontrolador y quemarla. La salida a esta situación es utilizar un optosimistor.

Dado que los inventores a menudo enfrentan esta tarea, se desarrolló una solución preparada: un escudo triac, su nombre completo es ICStation 8 Channel EL Escudo Dos Shield para Arduino. Originalmente estaba destinado a controlar el brillo del “neón flexible”.

Dispone de 8 canales a los que se conecta la red AC y la carga.

Escudos del motor

Controlar un motor eléctrico no siempre es un proceso fácil. En algunas situaciones, es posible que no tenga suficientes pines para implementar la tarea o que el algoritmo de control sea bastante complejo. Con estos tableros completará su proyecto de robot mucho más rápido.

Motor-SHIELD para Arduino puede controlar motores DC (4 piezas) o dos motores paso a paso.

Está construido sobre la base de dos L293. Este microcircuito es un conjunto de dos puentes H, esto permite controlar, con posibilidad de inversión, dos DFC o 1 motor bipolar paso a paso. Diagramas de conexión en consecuencia:

Y en la esquina superior izquierda del tablero hay dos bloques para servos (más, menos y señal de control). El círculo rojo rodea el lugar donde está instalado el puente. Si es así, entonces esta placa se alimenta desde la placa base Arduino y, si no, desde una fuente externa de 5 V.

Con este módulo de un fabricante nacional, puede controlar dos motores de CC; también tiene un puente que conecta las líneas de alimentación del microcontrolador o las desconecta, para obtener energía de una fuente separada.

Puede controlar motores diseñados para un rango de voltaje de 5 a 24 voltios. En lugar de 2 motores de CC, puede usar 1 paso a paso monofásico o conectar canales en paralelo y conectar 1 potente motor de CC con una corriente de hasta 4 A, y esto no es poco: 48 W con una tensión de alimentación de 24 V.

Para conectar un servo necesitas tres cables: más, menos y señal, pero ¿qué pasa si tienes muchos servos? Tu tabla se convertirá en un desastre de saltadores. Para evitar esto existe un Escudo Multiservo.

También aquí es posible separar los circuitos de potencia, como ocurría en la versión anterior. En total se pueden conectar 18 servos (numerados en la placa del 0 al 17).

Cada lugar tiene sus propias particularidades, escudos para tareas inusuales...

Atmega328, el corazón de nuestra placa, tiene un ADC. El principal problema es que en la placa Arduino Uno solo vemos 6 entradas analógicas. ¿Y si tenemos más sensores analógicos?

Puedes ensamblar dos Arduinos en una sola red. Utilice uno como principal y el segundo como auxiliar para cambios, y desde el primero envíe señales de medición al servidor o muéstrelas en la pantalla... Pero esto es difícil: es necesario desperdiciar memoria en líneas adicionales de código de programa para implementar dicho sistema.

¿Qué pasa si multiplicas cada entrada por 16? En total podremos tener hasta 16*6=96 entradas analógicas. Esto es posible utilizando un multiplexor. Simplemente cambia 16 canales analógicos a una salida analógica, que se conecta a la misma entrada de cualquier controlador mundial.

Es muy difícil implementar la función de reconocimiento de voz utilizando el microcontrolador Atmega, pero los ingenieros de Arduino no pueden desesperarse, existe una solución especial: EasyVR Shield 3.0.

Esta es una solución ya preparada, pero costosa; en el momento de escribir este artículo, cuesta casi $100 en Rusia. Primero, el escudo escribirá su comando, luego lo comparará con lo que está escrito en la memoria, determinará el número y lo ejecutará.

Puedes tener un “diálogo con la computadora”; ella puede reproducir lo que en ella está grabado. Sin amplificadores adicionales, se recomienda “comunicarse” con esta placa desde una distancia no superior a 60 cm.

Mostrando la imagen

El escudo del teclado LCD es un panel de control real. Contiene una pantalla LCD1602 (16 caracteres en dos líneas) y un conjunto de botones. Gracias a ellos, se utilizan muchos puertos, por ejemplo A0 y D4 a D7 para el teclado, y el puerto D10 es un control de brillo de retroiluminación PWM. D8 y D9: restablecer y habilitar.

De hecho, existen muchas pantallas compatibles con Arduino. O mejor dicho, aquellos sobre los que se ha escrito más información y puedes ejecutarlos fácilmente en tu sistema. La pantalla del NOKIA 5110 es bastante popular en los círculos del bricolaje; hay pantallas OLED y TFT que funcionan a través de I2C para elegir. Pero no están en la versión “escudo”.

Autoalimentado

Un escudo bastante inusual en esta colección, que realiza una tarea común. Escudo de alimentación: viene con todas las protecciones necesarias y un conector de carga. No parece mucho, pero le dará a tu proyecto un aspecto acabado sin tener que colocar los circuitos de alimentación al lado de las placas principales.

Conclusión

El uso de escudos para todas las tareas del proyecto evitará una cantidad excesiva de puentes y conexiones, y esto reducirá la cantidad de errores y puentes innecesarios. Después del montaje, recibirá un sándwich de varios pisos de placas de circuito fabricadas en fábrica. Este enfoque a veces se denomina "diseño modular". Por cierto, esto facilitará el mantenimiento, reparación y ajuste del equipo.

Los entusiastas practican el diseño, cableado y montaje de módulos únicos. Ésta es una de las razones de la gran popularidad de Arduino, no sólo como plataforma para productos caseros, placas de pruebas y prototipos, sino también como plataforma para soluciones listas para usar.

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, solo se utiliza 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, y el usuario puede realizar 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 amarillas y verdes disponibles). 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
Tierra Tierra
VDD Fuente de alimentación 5V
Contraste control de contraste Potenciómetro
R.S. Comandos/Datos 8
R/E Leer escribir
Permitir Encendido (activación) 9
DB0 No utilizado
DB1 No utilizado
DB2 No utilizado
DB3 No utilizado
DB4 fecha 1 4
DB5 fecha 2 5
DB6 fecha 3 6
DB7 fecha 4 7
LED trasero + Enciende la luz de fondo 10
LED trasero – Potencia de retroiluminación
Alfileres para botones
Botón de arriba Botón de control A0
botón ABAJO Botón de control A0
Botón izquierdo Botón de control A0
Botón derecho Botón de control A0
Botón SELECCIONAR Botón de control A0
Reiniciar Reiniciar
PEPSI ICSP para flashear el microcontrolador incorporado HD44780U
UART Contactos para conexión UART 0, 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 de equipos adicionales, la placa tiene conectores adicionales de 5 V 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
BIEN 0-100
ARRIBA. 100-200
ABAJO 200-400
IZQUIERDA 400-600
SELECCIONAR 600-800
Tecla no presionada 800-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 puede rastrear la pulsación simultánea de varios botones;
  • Las posibles distorsiones de la señal pueden provocar falsas alarmas.

Debe tener en cuenta estas limitaciones al elegir este SLD en sus proyectos si planea utilizar el dispositivo en sistemas con mucho ruido que puede distorsionar la señal en la entrada A0, por lo que 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 las dimensiones totales del dispositivo, 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.

Descripción del protector del teclado LCD

LCD Keypad Shield es un módulo adicional original que organiza el trabajo con indicadores LCD compatibles con la interfaz HD44780 y un teclado de cinco botones a través del bus SPI o I2C.

El módulo se basa en el chip MCP23S17 o MCP23017 (expansor de puerto de E/S de 16 bits con interfaz SPI o I2C, respectivamente).

Equipo

El módulo LCD Keypad Shield se suministra preensamblado (en opciones SPI o I2C) o sin componentes de pines montados (también en opciones SPI o I2C). El módulo se suministra con un enchufe PLS-16.

¡La pantalla LCD no está incluida en la entrega!

Escudo de teclado LCD SPI 1000 frotar. 750 rublos. Añadir a la cesta

formulario de pedido.

Escudo de teclado LCD a bus SPI (con chip MCP23S17).

Escudo de teclado LCD I2C 1000 rublos. 750 rublos. Añadir a la cesta

¡Atención! Tienes JavaScript deshabilitado. No es posible el funcionamiento normal del sistema de pedidos y del carrito de compras. Si por alguna razón no puede habilitar JavaScript, simplemente indique los artículos que está solicitando en el formulario de pedido.

Escudo de Teclado LCD para bus I2C (con chip MCP23017).


Escudo de teclado LCD SPI DIY 950 rublos. 720 rublos. Añadir a la cesta

¡Atención! Tienes JavaScript deshabilitado. No es posible el funcionamiento normal del sistema de pedidos y del carrito de compras. Si por alguna razón no puede habilitar JavaScript, simplemente indique los artículos que está solicitando en el formulario de pedido.

Protector de teclado LCD DIY (sin componentes de pines de montaje) en el bus SPI (con chips MCP23S17).

Escudo de teclado LCD I2C DIY 950 rublos. 720 rublos. Añadir a la cesta

¡Atención! Tienes JavaScript deshabilitado. No es posible el funcionamiento normal del sistema de pedidos y del carrito de compras. Si por alguna razón no puede habilitar JavaScript, simplemente indique los artículos que está solicitando en el formulario de pedido.

Protector de teclado LCD DIY (sin componentes de pines de montaje) en el bus I2C (con chips MCP23S17).

Indicador LCD WH1602B-YYK-CTK PLS 550 rublos. 400 rublos. Añadir a la cesta

¡Atención! Tienes JavaScript deshabilitado. No es posible el funcionamiento normal del sistema de pedidos y del carrito de compras. Si por alguna razón no puede habilitar JavaScript, simplemente indique los artículos que está solicitando en el formulario de pedido.

Indicador LCD 16x2 WH1602B-YYK-CTK con conectores de clavija “baja” (4 mm) soldados, específicamente para protector de teclado LCD.

Especificaciones

Principales características técnicas del LCD Keypad Shield:

  • interfaz con indicador LCD: compatible con HD44780, 4 bits, 16 pines;
  • Pines de interfaz HD44780 accesibles por software: RS, RW, E, DB4-DB7, retroiluminación;
  • interfaz con placa Arduino: SPI o I2C (dependiendo de la modificación del módulo seleccionado);
  • 5 botones consultados por software vía bus SPI o I2C, botón de reinicio;
  • los conectores para el indicador LCD y los botones externos le permiten separar la placa Arduino y el indicador LCD con botones;
  • al módulo se le asigna una dirección de tres bits en el bus (mediante puentes), lo que permite colocar hasta 8 dispositivos con microcircuitos similares en un bus;
  • la capacidad de seleccionar, mediante un puente, el número de la salida correspondiente del microcontrolador Arduino (pin digital 8, 9 o 10) para la señal CS del bus SPI;
  • el módulo utiliza conectores "de paso", lo que le permite acoplar varios módulos sin desplazarse con respecto a la placa Arduino;

Antes de comenzar a trabajar con el módulo Expander Shield adicional, le recomendamos que se familiarice con su diagrama de circuito.

Preparación del módulo para su funcionamiento

Los terminales del módulo pueden estar equipados con seguros de transporte, que deben retirarse antes de comenzar a trabajar.

Seleccionar la dirección del módulo en el bus

El módulo se basa en el chip MCP23S17/MCP23017, para el cual es necesario seleccionar los tres bits menos significativos de la dirección en el bus SPI/I2C. Los bits se seleccionan usando puentes en el conector de dirección colocando los bits 0, 1, 2 a tierra (Gnd) o +5 V (5 V).

La dirección de cada chip debe ser única y se pueden colocar hasta 8 chips en un bus.

Así, es posible, por ejemplo, conectar ocho módulos LCD Keypad Shield, o cuatro módulos LCD Keypad Shield y dos módulos Expander Shield a la placa Arduino. Si usa la versión I2C de los módulos, ¡todo el diseño usará solo 2 pines de la placa Arduino!

Al conectar varios módulos LCD Keypad Shield, las propias pantallas LCD se pueden conectar, por ejemplo, utilizando cables del variador y enchufes en ángulo PLS-16R.

Al conectar varios módulos, debe prestar atención al hecho de que la iluminación consume una corriente bastante grande, alrededor de 100-150 mA.

Control de extracción del bus I2C

Para la modificación I2C del módulo, utilizando puentes en el lado izquierdo del conector XS, se encienden o apagan las resistencias que llevan el bus a +5 V. Normalmente, las resistencias pull-up se deben conectar si solo hay un dispositivo en el bus I2C. Si hay varios dispositivos, entonces las resistencias se conectan solo para uno de los dispositivos.

A continuación se muestra el estado de los puentes cuando las resistencias pull-up están habilitadas y cuando están deshabilitadas. Además, para desactivar las resistencias pull-up, simplemente puede quitar los puentes.

Seleccionar el número de pin para controlar la señal CS del bus SPI

Para la modificación SPI del módulo, debe seleccionar el pin del microcontrolador Freeduino/Arduino utilizado como señal CS. Normalmente, se utiliza el pin 10, que corresponde a la posición del puente más a la izquierda en el conector CS. Moviendo el puente a una de las otras dos posiciones, es posible seleccionar los pines 9 y 8, respectivamente.

Ajustar el contraste de la pantalla

Para ajustar el contraste de la pantalla, se utiliza la resistencia de recorte R3. Si el contraste no está configurado correctamente, es posible que los caracteres de la pantalla no sean visibles en absoluto o que sean muy poco visibles.

Biblioteca MCP23xxx

Para simplificar el trabajo con este y otros módulos, se ha desarrollado la biblioteca MCP23xxx, que proporciona una interfaz sencilla para la funcionalidad de los microcircuitos de la serie MCP23xxx. La biblioteca está disponible para descarga gratuita: La biblioteca es compatible con la versión 1.0.5 del software Arduino (también se espera compatibilidad con versiones posteriores).

De hecho, se trata de un conjunto de dos bibliotecas: MCP23xxx y LiquidCrystal_MCP23x17.

La instalación de bibliotecas se describe con más detalle en la sección de conexión de bibliotecas. La estructura de directorios de la carpeta de bibliotecas después de la instalación debería ser así:

/bibliotecas/LiquidCrystal_MCP23x17
/bibliotecas/MCP23xxx

La biblioteca MCP23xxx implementa plantillas de clases que organizan el trabajo con los expansores de puertos MCP23017, MCP23S17, MCP23008 y MCP23S08. La biblioteca LiquidCrystal_MCP23x17 es una biblioteca LiquidCrystal estándar modificada que admite el idioma ruso y funciona a través de un expansor de puertos.

La biblioteca viene con ejemplos que explican cómo trabajar con ella. La versión anterior de la biblioteca también está disponible para descargar:

Veamos el ejemplo "Hola mundo" para la modificación del módulo I2C. Muestra no solo cómo inicializar el módulo y enviarle datos, sino que también proporciona un ejemplo de cómo sondear uno de los botones.

//// Para la versión SPI, conecte SPI.h:
//#incluir
//Para la versión I2C, conecte Wire.h:
#incluir
//conectar la biblioteca
#incluir
#incluir

////Para la versión SPI, crea un objeto de la clase CMCP23S17:
//CMCP23S17MCP;
//Para la versión I2C, crea un objeto de la clase CMCP23017:
CMCP23017 MCP;

//Objeto para LCD
LiquidCrystal_MCP23x17 lcd;

configuración nula() (
// //Para la versión SPI, configure el bus SPI y el objeto MCP con el número de línea CS (10) y la dirección (0)
// SPI.begin();
// MCP.init(10, 0);
//Para la versión I2C, configure el bus I2C y el objeto MCP con dirección (0)
Cable.begin(); //TWBR = 12; //<- так можно сделать 400kHz I2C
MCP.init(0);

//configura el objeto LCD para que funcione a través del objeto MCP especificado
lcd.init (MCP);
//...y enciende la luz de fondo
lcd.Retroiluminación(1);

//...el resto del código es el mismo tanto para LiquidCrystal original como para LiquidCrystal_MCP23x17

// establece el número de columnas y filas:
lcd.comenzar(16, 2);
// imprimir un mensaje.
lcd.print("¡hola mundo!");
// el botón Enter está conectado al pin 12 del chip MCP
MCP.pinMode(12, ENTRADA);
}

bucle vacío() (
// establece el cursor
lcd.setCursor(0, 1);
// muestra el tiempo en segundos, comenzando desde el principio:
lcd.print(millis()/1000);
// si se presiona el botón Enter, muestra un mensaje
si (MCP.digitalRead (12) == 0)
lcd.print("Entrar presionado");
// en caso contrario, imprimimos espacios para borrar el mensaje
demás
lcd.imprimir(" ");
}

Hoy les hablaré sobre el muy popular módulo de escudo de teclado LCD, diseñado para Arduino UNO, MEGA y otros análogos. El módulo incluye una pantalla LCD (16x2) y seis botones. Para la interacción entre el controlador Arduino y el módulo, se utilizan los pines digitales 4, 5, 6, 7, 8, 9, 10 y un pin analógico para leer el estado de los botones. El módulo también permite ajustar el contraste de la pantalla LCD mediante el potenciómetro interlineal RP1 (10 kOhm). Este modelo es excelente para depurar algunos proyectos, monitorear, etc.

Especificaciones técnicas

Tensión de alimentación: 5 V
Tamaño de pantalla: 2,6 pulgadas
Tipo de visualización: 2 líneas x 16 caracteres
Color de luz de fondo: azul
Color del personaje: blanco
Ajuste de contraste: potenciómetro
Dimensiones: 80 mm x 58 mm x 20 mm

información general

La mayor parte del módulo está ocupada por una pantalla LCD, marca LCD 1602 con retroiluminación azul, la transferencia de datos se realiza en modo de 4 bits, más detalles en este artículo. Hay seis botones en la parte inferior, cinco de los cuales se usan para navegación y un botón sirve como reinicio. En la esquina superior izquierda hay un potenciómetro necesario para ajustar el contraste de la pantalla LCD. Dado que el protector del teclado LCD está instalado en la parte superior de la placa Arduino y en realidad ocupa los conectores, hay orificios adicionales en el módulo para soldar cables o conectores (la interfaz ICSP está ubicada en un bloque separado).
En el diagrama del circuito puedes ver que la base del transistor responsable de iluminar el módulo está conectada al pin 10 de la placa Arduino, por lo tanto, puedes apagarlo.

Cómo funcionan los botones
Los botones están dispuestos en un orden conveniente: arriba, abajo, izquierda, derecha y SELECCIONAR. Todos los botones están conectados a una entrada analógica "A0" mediante una cadena de resistencias que proporcionan un voltaje de referencia diferente para "A0" cuando se presiona cualquier botón. La figura muestra parte del diagrama de circuito del escudo del teclado LCD.

Se puede ver su diagrama de circuito, si no se presionan los botones, el voltaje en "A0" a través de la resistencia R2 (2 kOhm) será de 5V. Otras resistencias no afectan el circuito, y al leer el pin analógico "A0" habrá un parámetro en el límite superior de 1023 (o aproximadamente). Ahora veamos qué sucede si se presiona el botón Abajo. En el pin "A0" habrá un voltaje que se divide entre la resistencia R2 (2kOhm) que se eleva a +5V y las resistencias R3 (330Ohm) y R4 (620Ohm) con un total de 950Ohm, que intentan bajarla. a 0V. El voltaje en "A0" será de aproximadamente 1,61 V, lo que significa que si ejecuta analogRead() en A0, devolverá un valor de aproximadamente 306, lo que significa presionar el botón "Abajo".
El mismo principio se aplica a otros botones; el voltaje y el valor de analogRead() se pueden ver a continuación:

Tensión y valor de lectura analógica
RIGENTE: 0,00 V: 0 - 8 bits; 0 - 10 bits
ARRIBA: 0,71 V: 36 - 8 bits; 145 - 10 bits
ABAJO: 1,61 V: 82 - 8 bits; 306 - 10 bits
IZQUIERDA: 2,47 V: 126 - 8 bits; 505 - 10 bits
SELECCIONAR: 3,62 V: 185 - 8 bits; 741 - 10 bits

Esto le permite guardar un conjunto completo de pines y usarlos para aplicaciones más útiles. El diagrama esquemático del protector del teclado LCD se muestra en la siguiente figura.

Asignación de pines
A0: salida de botón
D4: LCD-DB4
D5: LCD-DB5
D6: LCD-DB6
D7: LCD-DB7
D8: LCD-RS
D9: LCD habilitado
D10: LCD – retroiluminación de la pantalla apagada

Conexión del escudo del teclado LCD a Arduino

Piezas requeridas:
Arduino UNO R3 x 1 ud.
Módulo de teclado LCD (LCD1602, 2×16, 5V)
Cable USB 2.0 A-B x 1 ud.

Conexión
Instale el módulo en la placa Arduino UNO, conecte el cable y apriete este boceto.

/* Las pruebas se realizaron en Arduino IDE 1.6.12 Fecha de prueba 06/12/2016. */ #incluir // Incluye la biblioteca LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Especifica los puertos void setup() ( lcd.begin(16, 2); // Inicializa LCD 16x2 lcd.setCursor(0,0); // Establece el cursor en la primera línea lcd.print("LCD1602") ; // Imprime el texto lcd.setCursor(0,1); // Coloca el cursor en la segunda línea lcd.print("www.robotchip.ru"); // Imprime el texto Serial.begin(9600); / Enciende el puerto serie ) void loop () ( int x; // Crea una variable x x = analogRead (0); // Establece el número de puerto desde el que leemos lcd.setCursor(10,1); // Establece el cursor a la segunda línea si (x< 100) { // Если x меньше 100 перейти на следующею строк lcd.print ("Right "); // Вывести текст Serial.print("Value A0 ‘Right’ is:"); // Вывести текст Serial.println(x,DEC); } else if (x < 200) { // Если х меньше 200 перейти на следующию строку lcd.print ("Up "); // Вывести текст Serial.print("Value A0 ‘UP’ is:"); // Вывести текст Serial.println(x,DEC); // Вывести значение переменной x } else if (x < 400){ // Если х меньше 400 перейти на следующию строку lcd.print ("Down "); // Вывести текст Serial.print("Value A0 ‘Down’ is:"); // Вывести текст Serial.println(x,DEC); // Вывести значение переменной x } else if (x < 600){ // Если х меньше 600 перейти на следующию строку lcd.print ("Left "); // Вывести текст Serial.print("Value A0 ‘Left’ is:"); // Вывести текст Serial.println(x,DEC); // Вывести значение переменной x } else if (x < 800){ // Если х меньше 800 перейти на следующию строку lcd.print ("Select"); // Вывести текст Serial.print("Value A0 ‘Select’ is:");// Вывести текст Serial.println(x,DEC); // Вывести значение переменной x } }

Las pruebas se realizaron en Arduino IDE 1.6.12

Fecha de prueba: 06/12/2016

#incluir // Incluir la biblioteca

Lcd de cristal líquido (8, 9, 4, 5, 6, 7); // Especificar puertos

configuración nula()

LCD. comenzar(16, 2); // Inicializar LCD 16x2

LCD. imprimir("LCD1602"); // Imprimir texto

LCD. imprimir ("www.robotchip.ru" ); // Imprimir texto

De serie. comenzar(9600); //Habilitar puerto serie

bucle vacío() (

intx; // Crea una variable x

x = lectura analógica(0); //Establecemos el número de puerto desde el que leemos

si(x< 100 ) { // Si x es menor que 100 pasa a la siguiente línea

LCD. imprimir("Derecha"); // Imprimir texto

De serie. print ("El valor A0 'Derecho' es:"); // Imprimir texto

// Imprime el valor de la variable x

de lo contrario si (x< 200 ) { // Si x es menor que 200 pasa a la siguiente línea

LCD. imprimir("Arriba"); // Imprimir texto

De serie. imprimir ("El valor A0 'ARRIBA' es:"); // Imprimir texto

De serie. println(x, DICIEMBRE); // Imprime el valor de la variable x

de lo contrario si (x< 400 ) { // Si x es menor que 400 pasa a la siguiente línea

LCD. imprimir("Abajo"); // Imprimir texto

De serie. imprimir ("El valor A0 'Abajo' es:"); // Imprimir texto

De serie. println(x, DICIEMBRE); // Imprime el valor de la variable x

de lo contrario si (x< 600 ) { // Si x es menor que 600 pasa a la siguiente línea

LCD. imprimir ("Izquierda"); // Imprimir texto

De serie. imprimir ("El valor A0 'Izquierda' es:"); // Imprimir texto

De serie. println(x, DICIEMBRE); // Imprime el valor de la variable x

de lo contrario si (x< 800 ) { // Si x es menor que 800 pasa a la siguiente línea

Un proyecto que encajará perfectamente en el interior de tu rincón, habitación, garaje u oficina de bricolaje, en el que montarás robots y todo tipo de proyectos automatizados geek en Arduino.

Al final del proyecto, recibirá las siguientes características dentro de un módulo:

  • ¡Mirar!;
  • Muestra la fecha y la hora en la pantalla LCD;
  • Contador de tiempo incorporado (para realizar un seguimiento del tiempo dedicado a un proyecto);
  • Despertador (para recordarte que has estado sentado demasiado tiempo y que es hora de calentar);
  • Seguimiento de movimiento (ahorra energía de la batería apagando la pantalla LCD cuando no estás cerca);
  • ¡Encajará perfectamente en el interior de su desarrollador Arduino!

Materiales necesarios para el proyecto.

  • LCD Keypad Shield (escudo LCD con botones) para Arduino (en este caso del fabricante DFRobot)
  • Reloj en tiempo real (RTC) DS1307 (de Adafruit);
  • Caja de cierre (se puede encontrar en una tienda de radios o pedirla a los chinos);
  • Zumbador (zumbador piezoeléctrico);
  • PIR (Sensor de movimiento infrarrojo pasivo);
  • Guías madre/madre;
  • Conector de 2,1 mm;
  • Adaptador para batería de 9 V 5,5 mm / 2,1 mm;
  • Corona 9 V.
Fotos de piezas y componentes para el proyecto.




Montaje del módulo de reloj en tiempo real

A veces, un módulo de reloj en tiempo real (por ejemplo, de Adafruit DS1307) se suministra como componentes separados. El montaje no debería ser un problema. Además, hay excelentes instrucciones para usar y ensamblar el módulo de reloj en tiempo real. Como regla general, se incluye una batería con el módulo. Funcionará con una batería durante al menos tres años.

Conector de alimentación

Para evitar problemas al conectar el Arduino, se utiliza un jack de 2,1 mm, al que se sueldan los contactos. Se hizo un agujero en la caja y se colocó el gato sobre pegamento. Ahora conectar Arduino no es problema.

La batería de 9 V (corona) se instala simplemente en la parte posterior de la caja.



Si te diste cuenta, hay otro agujero en la caja. Este fue el primer intento fallido. Jack no encajaba en este agujero.

Conectamos cables a todos los elementos.

Recomiendo encarecidamente comprar conductores hembra/hembra multicolores. Son económicos y facilitan mucho el proceso de montaje. Conectamos los conductores al módulo de reloj en tiempo real, sensor de movimiento PIR, zumbador, para posteriormente conectarlos al escudo LCD.

Conectamos todo al escudo LCD.

Después de eso, se agregó un fragmento de código del boceto de DFRobot para el escudo LCD (incluida la opción de control de botones). Este boceto se puede descargar.

Funciones de los botones

Los botones están etiquetados en el protector LCD (ver foto). Los primeros cinco de los seis botones disponibles se programaron de la siguiente manera:


El botón n.º 1 (etiquetado SELECCIONAR) es el botón Menú. Este botón es responsable de mostrar una lista desplazable de funciones disponibles (temporizador, configuración de alarma).

Botón n.º 2 (etiquetado IZQUIERDA): botón de selección. Se utiliza para seleccionar una función. Nota: también se utiliza para incrementar en 10 cuando se seleccionan horas, minutos, etc.

Botones 3 y 4 (etiquetados ARRIBA y ABAJO): botones de incremento y disminución. Se utiliza para disminuir o aumentar las horas y los minutos al configurar un temporizador o una alarma. También se utiliza para cambiar entre las horas AM y PM del día.

Botón #5 (etiquetado DERECHA) - ¡VAYA! Se utiliza para aceptar el valor seleccionado (por ejemplo, minutos u horas configurados).

Botón #6 (marcado RST) - Restablecer, que reinicia nuestro Arduino.

Deje sus comentarios, preguntas y comparta sus experiencias personales a continuación. ¡A menudo surgen nuevas ideas y proyectos de las discusiones!



gastrogurú 2017