Cuprins:
Video: Arduino UNO (crearea de meniuri și funcții): 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Î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:
Cunoașterea „Setului de bricolaj profesionist ILC8038 Generator de funcții”: 5 pași
Cunoașterea „Professional DIY ILC8038 Function Generator DIY Kit”: Mă ocupam de câteva proiecte electronice noi, când am dat de un mic kit de generator de funcții drăguț. Este facturat ca „Kit de bricolaj profesionist ILC8038 Generator de funcții Sine Triangle Square Wave” și este disponibil de la mai mulți furnizori
Generator de funcții: 12 pași (cu imagini)
Generator de funcții: Acest instructabil descrie proiectarea generatorului de funcții pe baza circuitului analogic MAX038 al Maxims. Generatorul de funcții este un instrument foarte util pentru ciudatele electronice. Este necesar pentru reglarea circuitelor de rezonanță, testarea aud
Generator de funcții portabil pe Arduino: 7 pași (cu imagini)
Generator de funcții portabil pe Arduino: Generatorul de funcții este un instrument foarte util, mai ales atunci când ne gândim să testăm răspunsul circuitului nostru la un anumit semnal. În acest instructable voi descrie secvența de construcție a unui generator de funcții portabil mic, ușor de utilizat. Caracteristici ale
Generator de tonuri Arduino Fără bibliotecă sau funcții seriale (cu întreruperi): 10 pași
Generator de tonuri Arduino Fără bibliotecă sau funcții seriale (cu întreruperi): nu este ceva pe care aș face în mod normal un lucru instructiv, prefer prelucrarea metalelor mele, dar, deoarece sunt student la inginerie electrică și trebuie să urmez o clasă de microcontrolere ( Proiectare sisteme încorporate), m-am gândit să fac un instructable pe unul dintre p
Guardian V1.0 --- Îmbunătățirea camerei de vizionare a ușii cu Arduino (funcții de înregistrare a detectării mișcării și șocuri electrice): 5 pași
Guardian V1.0 ||| Îmbunătățirea camerei de vizionare a ușii cu Arduino (funcții de înregistrare a detectării mișcării și șocuri electrice): am comandat o cameră de vizionare a ușii, dar când o folosesc, mi-am dat seama că nu există funcție de înregistrare automată (activată prin detectarea mișcării). Apoi am început să investighez cum funcționează. Pentru a înregistra un videoclip, ar trebui să 1 - să țineți apăsat butonul de alimentare aproape 2 secunde