Taula de continguts:

Arduino UNO (creació de menús i funcions): 4 passos
Arduino UNO (creació de menús i funcions): 4 passos

Vídeo: Arduino UNO (creació de menús i funcions): 4 passos

Vídeo: Arduino UNO (creació de menús i funcions): 4 passos
Vídeo: Arduino OLED Menu Tutorial (for beginners - Arduino UNO, 128x64px SSD1306 OLED screen, u8g) 2024, Juliol
Anonim
Arduino UNO (creació de menús i funcions)
Arduino UNO (creació de menús i funcions)
Arduino UNO (creació de menús i funcions)
Arduino UNO (creació de menús i funcions)

En aquest instructiu, explorarem com crear menús, llegir la temperatura des d’un sensor TC74A0 i mostrar els “valors” (en aquest cas, els números de telèfon mòbil) d’una manera infinita, però limitada a la memòria de la placa arduino.

Ho farem servir

-Matrius

-Pantalla de cristall liquid

-Teclado

Guia de l'usuari inclosa al pas final.

Pas 1: components

Arduino Uno

· Teclat 4x4

· Sensor de temperatura digital TC74A0

· Mòdul LCD I2c 16x2

· Pantalla de cristall líquid de 16x2

· Cables de pont

· Tauler de pa

· Ordinador personal

· IDE Arduino

· Cable de transferència

Pas 2: cablejat de components

SENSOR TEMP I LCD CONECTATS EN LA MATEIXA LÍNIA A SDA I SCL (A4, A5)

LCD (mòdul I2c)

o SDA a A5 a Arduino

o SCL a A4 a Arduino

o VCC a 5V a Arduino

o GND a GND a Arduino

· Teclat 4 x 4

o Pin 1-8 del teclat connectat al pin 9-2 d'Arduino respectivament

Sensor de temperatura TC74A0

o TC74A0 pin 2 a SDA a Arduino

o TC74A0 pin 3 a GND a Arduino

o TC74A0 pin 4 a SCL a Arduino

o TC74A0 pin 5 a 5V a Arduino

Pas 3: Codi

#include // Inclou biblioteques quan es compila

#incloure

#incloure

#define Password_Longght 5

#define Command_Longt 3

#defineix el número de cel·la 10

usuaris int = 0;

int Display = 0;

adreça int = 72; // ADREÇA tc74a0

int I = 0;

int USUARI;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char Dades [Contrasenya_Longitud];

char Master [Password_Lenght] = "5466"; // CONTRASENYA

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

byte const ROWS = 4; // quatre files

byte const COLS = 4; // quatre columnes

byte rowPins [ROWS] = {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] = // INICIATING KEYPAD

{

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

};

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

configuració nul·la ()

{

Serial.begin (9600); // això crea el monitor de sèrie

Wire.begin (); // això crea un objecte Wire

lcd.begin (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Espereu 3"); // PANTALLA DE CARREGAMENT

retard (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Espereu 2");

retard (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Espereu 1");

retard (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

retard (2500);

per a (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)

{

lcd.scrollDisplayLeft ();

retard (300);

}

lcd.clear ();

lcd.print ("Introduïu la contrasenya");

}

bucle buit ()

{

commutador (Visualització) // ON SOM EL MENÚ PRINCIPAL

{// L'USUARI VA PRESSAR A, B, C, D

cas 0:

{

Contrasenya ();

}

trencar;

cas 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Menú principal");

Visualització = 2;

retard (100);

trencar;

}

cas 2:

{

char customKey = customKeypad.getKey ();

commutador (tecla personalitzada)

{

cas "A":

{

Serial.println ("A s'ha premut");

StoreUser ();

trencar;

}

cas "B":

{

Serial.println ("S'ha premut B");

if (usuaris == 0) {

lcd.clear ();

lcd.print ("SENSE USUARIS SALVATS");

retard (3000);

lcd.clear ();

Visualització = 1;

trencar;

}

DisplayUsers (); trencar;

}

cas "C":

{

Serial.println ("S'ha premut C"); // USAT DURANT LES PROVES

int ext = 0;

while (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Temparatura");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = temp;

retard (500);

}

ch = customKeypad.getKey ();

if (ch == '*') // SURT DEL MENÚ DE TEMPERATURA (si * PRESSA)

{

ext = 1;

lcd.clear ();

Visualització = 1;

}

}

trencar;

TempMenu ();

trencar;

}

cas "D":

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

retard (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("MAIG 2019");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

retard (3000);

lcd.clear ();

Visualització = 1;

}

}

}

}

}

// FUNCIONS PERSONALITZADES PER CONVOCAR VALORS O PROCEDIMENTS

contrasenya nul·la ()

{

char customKey = customKeypad.getKey ();

if (customKey) // assegura que es prem una tecla, igual a (customKey! = NO_KEY)

{

Dades [recompte_dades] = clau personalitzada; // emmagatzema el caràcter a la matriu de dades

lcd.setCursor (nombre_dades, 1); // mou el cursor per mostrar cada caràcter nou

lcd.print ("*"); // imprimeix el caràcter en aquest cursor

data_count ++; // augmentar la matriu de dades per 1 per emmagatzemar caràcters nous, també feu un seguiment del nombre de caràcters introduïts

}

if (data_count == Password_Lenght-1) // si l'índex de matriu és igual al nombre de caràcters esperats, compareu les dades amb el mestre

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("La contrasenya és");

if (! strcmp (Data, Master)) // igual a (strcmp (Data, Master) == 0)

{

lcd.print ("Bo");

lcd.clear ();

Visualització = 1;

}

en cas contrari

lcd.print ("dolent");

delay (1000); // ha afegit un retard d'1 segon per assegurar-se que la contrasenya es mostra completament a la pantalla abans que s'esborri.

lcd.clear ();

esborrar les dades();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Introduïu la contrasenya");

}

}

int TempMenu ()

{

Wire.beginTransmission (adreça);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (adreça, 1);

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

int c = Wire.read ();

retorn c;

}

void clearData ()

{

while (nombre_dades! = 0)

{// Es pot utilitzar per a qualsevol mida de matriu, Dades [compte_dades--] = 0; // esborra la matriu per obtenir dades noves

}

}

void StoreUser ()

{

int ext = 0;

int usuari;

char ch;

while (! ext) {

lcd.clear ();

lcd.print ("Introduïu l'usuari");

usuari = usuaris + 1;

lcd.print (usuari);

int x = 0;

mentre (! x) {

per a (int i = 0; i <10; i ++) {

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [usuari - 1] = ch;

}

retard (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 ();

Visualització = 1;

}

}

usuaris ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

per a (int i = 0; i <usuaris; i ++) {

lcd.print ("Usuari desat");

lcd.print (i + 1);

per a (int u = 0; u <10; u ++) {

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

endarreriment (2000);

lcd.clear ();

Visualització = 1;

}

}

Pas 4: GUIA DE L'USUARI

1. En iniciar el projecte, apareixerà una pantalla de càrrega o benvinguda.

2. Apareixerà una pantalla "Introduïu la contrasenya", aquesta pantalla us permet introduir 4 caràcters, lletres o números, la contrasenya correcta és: 5466, us donarà accés al menú principal.

3. En introduir la contrasenya correcta, apareixerà el menú principal amb 4 possibles opcions per navegar per les diferents funcions disponibles.

· A - Introduïu els números de telèfon mòbil de l'usuari.

o Introduïu 10 dígits per desar un usuari al sistema

o Després d'haver introduït 10 dígits, premeu "*" per afegir més usuaris o premeu "#" per tornar al menú principal

· B: mostra els usuaris desats

o Els usuaris passaran per la pantalla, es mostraran durant 3 segons cadascun, tan aviat com es mostrin tots els usuaris, la pàgina es tancarà i tornarà al menú principal.

o Si no s'ha afegit cap usuari a l'opció de menú A, es mostrarà "SENSE USUARIS".

· C - Mostra la temperatura en viu

o Premeu "*" per tornar al menú principal

· D: mostra el text breu

o Mostra el nom del creador i el tema per al qual es va compilar amb una data.

Recomanat: