- Portada
- Ensablaje mecánico
-
Programación básica
-
Introducción al Montaje Electrónico
-
Resistencias y Ejemplos de cálculo
-
El pulsador
-
La protoboard y los LEDs
-
Entradas y salidas digitales. Lectura de un pulsador y encendido de un led.
-
Entradas Analógicas. Lectura de un potenciómetro.
-
El Servomotor
-
Salidas PWM. Control posición de un servo
-
Cuestionario Programación básica10 xp
-
-
Programación extendida
-
Actividad. Estados de caja. Apertura y cierre
-
Actividad. Dial analógico. Introducción de dígitos. Pantalla LCD
-
Introducción a Funciones
-
Las funciones
-
Actividad. Funcionalidad elemental caja fuerte.
-
El Zumbador
-
Actividad. Sistema de alarma con zumbador
-
Actividad avanzada. Cambio de contraseña. Memoria EEPROM
-
Actividad avanzada. Display: Íconos y animaciones
-
Cuestionario Programación extendida10 xp
-
- Para terminar
Actividad. Dial analógico. Introducción de dígitos. Pantalla LCD
PROGRAMACIÓN EXTENDIDA
Montaje

Montaje eléctrico. Conexiones
En esta actividad añadiremos el potenciómetro y, mediante código, le daremos la funcionalidad de un dial analógico. Este dial permitirá al usuario introducir uno a uno los dígitos numéricos (0-9) que forman el código de desbloqueo, que mostraremos por la pantalla LCD.
Durante el desarrollo de esta actividad, trabajaremos con las entradas analógicas, la función map() y la pantalla LCD por comunicación i2c.
Pantalla LCD.
La pantalla LCD I2C se controla mediante la librería LiquidCrystal_I2C, que simplifica la comunicación a través del protocolo I2C. Este protocolo utiliza dos líneas, SDA (Serial Data) y SCL (Serial Clock), para la comunicación. En el código, se crea un objeto lcd que representa la pantalla, especificando la dirección I2C del dispositivo y el tamaño de la pantalla (16x2). La dirección I2C es un identificador único que permite al Arduino comunicarse con el dispositivo correcto en el bus I2C.
Tareas a realizar:
Conectar la pantalla LCD por comunicación i2c. Para ello, deberás conectar la alimentación (5V y gnd) y las líneas de comunicación SDA y SCL a los pines A4 y A5 correspondientemente.
Conecta el terminal central del potenciómetro a cualquier entrada analógica disponible [A0, A1, A2 ó A3]. conecta un terminal extremo a la alimentación 5V y el otro terminal a tierra (gnd). Con esto, el potenciómetro será un partidor de tensión variable, obteniéndose en su pata central un valor de tensión linealmente dependiente del ángulo de giro y comprendido entre 0V y 5V.

Programación

Explicación actividad a programar
El Arduino dispone de varios pines de entrada analógica, que permiten medir voltajes entre 0 y 5V. Estos voltajes se convierten en valores digitales que van de 0 a 1023, mediante un convertidor analógico-digital (ADC) de 10 bits. En esta actividad, el potenciómetro se utiliza como un divisor de voltaje, generando un voltaje variable basado en su posición angular. La lectura de un potenciómetro permite transformar una señal analógica en datos digitales que el microcontrolador puede procesar, haciendo posible la interacción analógica-digital.
La función map().
Esta función nos es útil para escalar medidas de un rango a otro. El convertidor analógico de 10bits (ADC), nos devuelve un valores entre 0 y 1023, que reflejan la tensión medida en la entrada analógica, que puede estar comprendida en el rango 0v a 5v.
y = map(Valor, fromLow, fromHigh, toLow, toHigh);
En donde el primer argumento, valor, representa el valor que tiene la variable, los siguientes argumentos (fromLow,fromHigh) indican el rango que esa variable puede tomar y los últimos argumentos (toLow,toHigh) indicamos el nuevo rango al cual queremos escalar la variable. Por ejemplo, si quisiéramos escalar el valor devuelto por el conversor ADC a la tensión (en milivoltios) medida en el pin analógico, la función map quedaría así:
Enunciado:
Crearemos un nuevo programa de cero, el cual deberá cumplir la siguiente funcionalidad: al arrancar el programa, se deberá mostrar un mensaje estático en la pantalla LCD durante 3 segundos.
[Mensaje][Bienvenida]
Transcurrido este tiempo, aparecerá en la pantalla el siguiente texto "Dial: {n}" en donde {n} es el dígito numérico (0-9) dado por la posición en tiempo real del potenciómetro.
[Dial: 6][]
Con la ayuda de la función map(), podrás re-escalar el rango 0-1023 al rango deseado. Este mapeo nos permite que el potenciómetro actúe como dial, seleccionando los dígitos numéricos a introducir (0-9)
LiquidCrystal_I2C lcd(i2c_address, columnas, filas);
En donde i2c_address es la dirección de la pantalla en el bus i2c, soliendo ser normalmente 0x27. Nuestra Lcd cuenta con 16 columnas y 2 filas. En el setup(), deberás inicializar la pantalla con el método lcd.init() y emplear el método lcd.backlight() para activar la retroiluminación de la misma.
Mediante el método lcd.print("texto de ejemplo"); podrás mostrar un texto estático en la pantalla. Para mostrar en tiempo real el dígito seleccionado por el dial, debes ejecutar continuamente lcd.print(digito) en el bucle loop(). Es una buena práctica introducir un delay() de 100 milisegundos. Esto evita tomar lecturas excesivas, al mismo tiempo que se mantiene un refresco lo suficientemente fluido en la pantalla. (refresco de 10 veces por segundo: 10Hz)
| Vistas | |
|---|---|
| 3 | Número de vistas |
| 3 | Vistas de miembros |
| 0 | Vistas públicas |
| Acciones | |
|---|---|
| 0 | Gustos |
| 0 | No me gusta |
| 0 | Comentarios |
Compartir por correo
Por favor iniciar sesión para compartir esto webpage por correo.