Tabla de contenido:

Arduino UNO (creación de menús y funciones): 4 pasos
Arduino UNO (creación de menús y funciones): 4 pasos

Video: Arduino UNO (creación de menús y funciones): 4 pasos

Video: Arduino UNO (creación de menús y funciones): 4 pasos
Video: Introducción Arduino #1 : Conociendo Arduino Uno | Partes y sus funciones 2024, Mes de julio
Anonim
Arduino UNO (creación de menús y funciones)
Arduino UNO (creación de menús y funciones)
Arduino UNO (creación de menús y funciones)
Arduino UNO (creación de menús y funciones)

En este instructivo exploraremos cómo crear menús, leer la temperatura de un sensor TC74A0 y mostrar "valores" (en este caso, números de teléfono celular) de una manera infinita, pero limitada a la memoria interna del arduino.

Nosotros usaremos

-Arreglos

-Pantalla de cristal líquido

-Teclado

Guía de usuario incluida en el paso final.

Paso 1: componentes

Arduino Uno

· Teclado 4x4

· Sensor de temperatura digital TC74A0

· Módulo LCD I2c 16x2

· Pantalla de cristal líquido 16x2

· Cables de puente

· Protoboard

· Computadora personal

· IDE de Arduino

· Cable de transferencia

Paso 2: cableado de componentes

SENSOR DE TEMPERATURA Y LCD CONECTADOS EN LA MISMA LÍNEA A SDA Y SCL (A4, A5)

LCD (módulo I2c)

o SDA a A5 en Arduino

o SCL a A4 en Arduino

o VCC a 5V en Arduino

o GND a GND en Arduino

· Teclado 4 x 4

o Pin 1-8 en el teclado conectado al pin 9-2 en Arduino respectivamente

Sensor de temperatura TC74A0

o TC74A0 pin 2 a SDA en Arduino

o TC74A0 pin 3 a GND en Arduino

o TC74A0 pin 4 a SCL en Arduino

o TC74A0 pin 5 a 5V en Arduino

Paso 3: Código

#include // Incluye bibliotecas al compilar

#incluir

#incluir

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

int users = 0;

int Display = 0;

int dirección = 72; // tc74a0 DIRECCIÓN

int I = 0;

int USER;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

char userNum [10] [10] = {{}, {}, {}};

char Data [Password_Lenght];

char Master [Password_Lenght] = "5466"; //CONTRASEÑA

char ExitData [Command_Lenght]; //

char Master1 [Command_Lenght] = "**"; //

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const byte FILAS = 4; // cuatro filas

const byte COLS = 4; // cuatro columnas

byte rowPins [FILAS] = {5, 4, 3, 2};

byte colPins [COLS] = {9, 8, 7, 6};

byte data_count = 0, master_count = 0;

bool Pass_is_good;

LiquidCrystal_I2C lcd (0x26, 16, 2);

char hexaKeys [ROWS] [COLS] = // INICIANDO TECLADO

{

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}

};

Teclado customKeypad = Teclado (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

configuración vacía ()

{

Serial.begin (9600); // esto crea el monitor serial

Wire.begin (); // esto crea un objeto Wire

lcd. comienzo (16, 2);

LCD luz de fondo();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Espere 3"); //CARGANDO PANTALLA

retraso (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Espere 2");

retraso (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Espere 1");

retraso (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

retraso (2500);

para (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)

{

lcd.scrollDisplayLeft ();

retraso (300);

}

lcd.clear ();

lcd.print ("Ingresar contraseña");

}

bucle vacío ()

{

switch (Display) // DÓNDE ESTAMOS EN EL MENÚ PRINCIPAL

{// ¿EL USUARIO PRESIONÓ A, B, C, D?

caso 0:

{

Contraseña();

}

rotura;

caso 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

lcd.print ("A B C D");

lcd.setCursor (0, 0);

lcd.print ("Menú principal");

Pantalla = 2;

retraso (100);

rotura;

}

caso 2:

{

char customKey = customKeypad.getKey ();

cambiar (customKey)

{

caso 'A':

{

Serial.println ("Se presionó A");

StoreUser ();

rotura;

}

caso 'B':

{

Serial.println ("Se presionó B");

si (usuarios == 0) {

lcd.clear ();

lcd.print ("NO HAY USUARIOS GUARDADOS");

retraso (3000);

lcd.clear ();

Pantalla = 1;

rotura;

}

DisplayUsers (); rotura;

}

caso 'C':

{

Serial.println ("Se presionó C"); // UTILIZADO DURANTE LAS PRUEBAS

int ext = 0;

while (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temperatura");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

retraso (500);

}

ch = customKeypad.getKey ();

if (ch == '*') // SALIR DEL MENÚ DE TEMPERATURA (si * PULSADO)

{

ext = 1;

lcd.clear ();

Pantalla = 1;

}

}

rotura;

TempMenu ();

rotura;

}

caso 'D':

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

retraso (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("MAYO 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

retraso (3000);

lcd.clear ();

Pantalla = 1;

}

}

}

}

}

// FUNCIONES PERSONALIZADAS PARA LLAMAR VALORES O PROCEDIMIENTOS

Void Password ()

{

char customKey = customKeypad.getKey ();

if (customKey) // se asegura de que una tecla esté realmente presionada, igual a (customKey! = NO_KEY)

{

Datos [recuento_datos] = customKey; // almacena char en la matriz de datos

lcd.setCursor (recuento_datos, 1); // mueve el cursor para mostrar cada nuevo carácter

lcd.print ("*"); // imprimir char en dicho cursor

cuenta_datos ++; // incrementa la matriz de datos en 1 para almacenar nuevos caracteres, también realiza un seguimiento del número de caracteres ingresados

}

if (data_count == Password_Lenght-1) // si el índice de la matriz es igual al número de caracteres esperados, compare los datos con el maestro

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("La contraseña es");

if (! strcmp (Datos, Maestro)) // igual a (strcmp (Datos, Maestro) == 0)

{

lcd.print ("Bueno");

lcd.clear ();

Pantalla = 1;

}

demás

lcd.print ("Malo");

delay (1000); // se agregó 1 segundo de retraso para asegurarse de que la contraseña se muestre completamente en la pantalla antes de que se borre.

lcd.clear ();

borrar datos();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Ingresar contraseña");

}

}

int TempMenu ()

{

Wire.beginTransmission (dirección);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (dirección, 1);

while (Wire.available () == 0);

int c = Wire.read ();

return c;

}

void clearData ()

{

while (recuento_datos! = 0)

{// Esto se puede utilizar para cualquier tamaño de matriz, Datos [recuento_datos--] = 0; // borrar matriz para nuevos datos

}

}

anular StoreUser ()

{

int ext = 0;

int usuario;

char ch;

while (! ext) {

lcd.clear ();

lcd.print ("Ingresar usuario");

usuario = usuarios + 1;

lcd.print (usuario);

int x = 0;

while (! x) {

para (int i = 0; i <10; i ++) {

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [usuario - 1] = ch;

}

retraso (500);

lcd.clear ();

lcd.print ("Continuar");

lcd.setCursor (0, 1);

lcd.print ("* sí # no");

ch = customKeypad.waitForKey ();

if (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Pantalla = 1;

}

}

usuarios ++;

}

}

anular DisplayUsers ()

{

lcd.clear ();

para (int i = 0; i <usuarios; i ++) {

lcd.print ("Usuario guardado");

impresión lcd (i + 1);

para (int u = 0; u <10; u ++) {

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

retraso (2000);

lcd.clear ();

Pantalla = 1;

}

}

Paso 4: GUÍA DEL USUARIO

1. Al encender el proyecto, aparecerá una pantalla de carga o de bienvenida.

2. Aparecerá una pantalla de “Ingresar Contraseña”, esta pantalla le permite ingresar 4 caracteres, letras o números, la contraseña correcta es: 5466, esto le dará acceso al menú principal.

3. Al ingresar la contraseña correcta, aparecerá el menú principal con 4 opciones posibles para navegar por las diferentes funciones disponibles.

· A - Ingrese los números de teléfono celular del usuario.

o Ingrese 10 dígitos para guardar un usuario en el sistema

o Después de haber ingresado 10 dígitos, presione "*" para agregar más usuarios, o presione "#" para volver al menú principal

· B - Mostrar usuarios guardados

o Los usuarios se desplazarán más allá de la pantalla, se mostrarán durante 3 segundos cada uno, tan pronto como se muestren todos los usuarios, la página se cerrará y volverá al menú principal.

o Si no se agregaron usuarios en la opción A del menú, se mostrará “NO HAY USUARIOS GUARDADOS”.

· C: muestra la temperatura en vivo

o Presione "*" para volver al menú principal

· D - Mostrar texto corto

o Muestra el nombre del creador y el tema para el que se compiló con una fecha.

Recomendado: