Cuprins:

Arduino UNO (crearea de meniuri și funcții): 4 pași
Arduino UNO (crearea de meniuri și funcții): 4 pași

Video: Arduino UNO (crearea de meniuri și funcții): 4 pași

Video: Arduino UNO (crearea de meniuri și funcții): 4 pași
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, Noiembrie
Anonim
Arduino UNO (crearea de meniuri și funcții)
Arduino UNO (crearea de meniuri și funcții)
Arduino UNO (crearea de meniuri și funcții)
Arduino UNO (crearea de meniuri și funcții)

În acest instructable vom explora cum să creăm meniuri, să citim temperatura de la un senzor TC74A0 și să afișăm „valori” (în acest caz numerele de telefon mobil) într-un mod infinit, dar limitat la memoria arduino de la bord.

Vom folosi

-Matrici

-Ecran cu cristale lichide

-Tastatura

Ghidul utilizatorului inclus în pasul final.

Pasul 1: Componente

Arduino Uno

· Tastatură 4x4

· Senzor digital de temperatură TC74A0

· Modul LCD I2c 16x2

· Afișaj cu cristale lichide 16x2

· Firele jumperului

· Pană de pâine

· Calculator personal

· IDE Arduino

· Cablu de transfer

Pasul 2: Cablarea componentelor

SENZOR DE TEMP ȘI LCD CONECTAT PE ACEEAȘI LINIE LA SDA ȘI SCL (A4, A5)

LCD (modul I2c)

o SDA la A5 pe Arduino

o SCL la A4 pe Arduino

o VCC la 5V pe Arduino

o GND la GND pe Arduino

· Tastatură 4 x 4

o Pinul 1 - 8 de pe tastatură conectat la pinul 9 - 2 de pe Arduino, respectiv

Senzor de temperatură TC74A0

o TC74A0 pin 2 la SDA pe Arduino

o TC74A0 pinul 3 la GND pe Arduino

o TC74A0 pinul 4 la SCL pe Arduino

o TC74A0 pin 5 la 5V pe Arduino

Pasul 3: Cod

#include // Include biblioteci la compilare

#include

#include

#define Password_Lenght 5

#define Command_Lenght 3

#define Numărul de celulă 10

utilizatori int = 0;

int Afișaj = 0;

adresa int = 72; // tc74a0 ADRESA

int I = 0;

int UTILIZATOR;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char Data [Password_Lenght];

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

char ExitData [Command_Lenght]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

octet const ROWS = 4; // patru rânduri

octet const COLS = 4; // patru coloane

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

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

octet date_count = 0, master_count = 0;

bool Pass_is_good;

LiquidCrystal_I2C lcd (0x26, 16, 2);

char hexaKeys [ROWS] [COLS] = // INITIATING KEYPAD

{

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

};

Tastatură personalizatăTastatură = Tastatură (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

configurare nulă ()

{

Serial.begin (9600); // se creează Serial Monitor

Wire.begin (); // aceasta creează un obiect Wire

lcd.inceput (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („Vă rugăm să așteptați 3”); // ECRANUL DE ÎNCĂRCARE

întârziere (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („Vă rugăm să așteptați 2”);

întârziere (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („Vă rugăm să așteptați 1”);

întârziere (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

întârziere (2500);

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

{

lcd.scrollDisplayLeft ();

întârziere (300);

}

lcd.clear ();

lcd.print („Introduceți parola”);

}

bucla nulă ()

{

comutați (Afișați) // UNDE ÎN MENIUL PRINCIPAL SUNTEM

{// UTILIZATORUL A APĂSAT A, B, C, D

caz 0:

{

Parola();

}

pauză;

cazul 1:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print („Meniul principal”);

Afișaj = 2;

întârziere (100);

pauză;

}

cazul 2:

{

char customKey = customKeypad.getKey ();

comutare (customKey)

{

cazul „A”:

{

Serial.println ("A a fost apăsat");

StoreUser ();

pauză;

}

cazul „B”:

{

Serial.println ("B a fost apăsat");

if (utilizatori == 0) {

lcd.clear ();

lcd.print („FĂRĂ UTILIZATORI SALVATI”);

întârziere (3000);

lcd.clear ();

Afișaj = 1;

pauză;

}

DisplayUsers (); pauză;

}

cazul „C”:

{

Serial.println ("C a fost apăsat"); // FOLOSIT ÎN TIMP

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;

întârziere (500);

}

ch = customKeypad.getKey ();

if (ch == '*') // IEȘIȚI DIN MENIUL DE TEMPERATURĂ (dacă * APĂSAȚI)

{

ext = 1;

lcd.clear ();

Afișaj = 1;

}

}

pauză;

TempMenu ();

pauză;

}

cazul „D”:

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

întârziere (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („MAI 2019”);

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

întârziere (3000);

lcd.clear ();

Afișaj = 1;

}

}

}

}

}

// FUNCȚII PERSONALIZATE DE A APELA VALORI SAU PROCEDURI

anula parola ()

{

char customKey = customKeypad.getKey ();

dacă (customKey) // se asigură că o tastă este de fapt apăsată, egal cu (customKey! = NO_KEY)

{

Date [date_count] = customKey; // stochează caracterele în matrice de date

lcd.setCursor (date_count, 1); // mutați cursorul pentru a afișa fiecare caracter nou

lcd.print ("*"); // imprimați caracterul la cursorul menționat

date_count ++; // creșteți matricea de date cu 1 pentru a stoca noi caractere, de asemenea, țineți evidența numărului de caractere introduse

}

if (data_count == Password_Lenght-1) // dacă indexul matricei este egal cu numărul de caractere așteptate, comparați datele cu masterul

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („Parola este”);

if (! strcmp (Data, Master)) // egal cu (strcmp (Data, Master) == 0)

{

lcd.print („Bun”);

lcd.clear ();

Afișaj = 1;

}

altceva

lcd.print („Bad”);

delay (1000); // a adăugat 1 second întârziere pentru a vă asigura că parola este complet afișată pe ecran înainte de a fi ștearsă.

lcd.clear ();

date clare();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print („Introduceți parola”);

}

}

int TempMenu ()

{

Wire.beginTransmission (adresa);

Wire.write (0);

Wire.endTransmission ();

Wire.requestFrom (adresa, 1);

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

int c = Wire.read ();

retur c;

}

void clearData ()

{

while (date_count! = 0)

{// Aceasta poate fi utilizată pentru orice dimensiune de matrice, Date [date_count--] = 0; // ștergeți matricea pentru date noi

}

}

void StoreUser ()

{

int ext = 0;

int utilizator;

char ch;

while (! ext) {

lcd.clear ();

lcd.print („Introduceți utilizatorul”);

utilizator = utilizatori + 1;

lcd.print (utilizator);

int x = 0;

while (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [utilizator - 1] = ch;

}

întârziere (500);

lcd.clear ();

lcd.print („Continuați”);

lcd.setCursor (0, 1);

lcd.print ("* da # nu");

ch = customKeypad.waitForKey ();

if (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Afișaj = 1;

}

}

utilizatori ++;

}

}

void DisplayUsers ()

{

lcd.clear ();

for (int i = 0; i <utilizatori; i ++) {

lcd.print („Utilizator salvat”);

lcd.print (i + 1);

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

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

întârziere (2000);

lcd.clear ();

Afișaj = 1;

}

}

Pasul 4: GHIDUL UTILIZATORULUI

1. La pornirea proiectului, va apărea un ecran de încărcare sau de întâmpinare.

2. Va apărea un ecran „Introduceți parola”, acest ecran vă permite să introduceți 4 caractere, litere sau cifre, parola corectă este: 5466, aceasta vă va permite accesul la meniul principal.

3. La introducerea parolei corecte, va apărea meniul principal cu 4 opțiuni posibile pentru a naviga diferitele funcții disponibile.

· A - Introduceți numerele de telefon mobil ale utilizatorului.

o Introduceți 10 cifre pentru a salva un utilizator în sistem

o După introducerea a 10 cifre, apăsați „*“pentru a adăuga mai mulți utilizatori sau apăsați „#” pentru a ieși din nou în meniul principal

· B - Afișează utilizatorii salvați

o Utilizatorii vor parcurge ecranul, vor fi afișați timp de 3 secunde fiecare, de îndată ce sunt afișați toți utilizatorii, pagina se va închide și va reveni la meniul principal.

o Dacă nu a fost adăugat niciun utilizator în opțiunea de meniu A, acesta va afișa „NICI UN UTILIZATOR SALVAT”.

· C - Afișează temperatura curentă

o Apăsați „*“pentru a reveni la meniul principal

· D - Afișează text scurt

o Afișează numele creatorului și subiectul pentru care a fost compilat cu o dată.

Recomandat: