Tartalomjegyzék:

Arduino UNO (menük és funkciók létrehozása): 4 lépés
Arduino UNO (menük és funkciók létrehozása): 4 lépés

Videó: Arduino UNO (menük és funkciók létrehozása): 4 lépés

Videó: Arduino UNO (menük és funkciók létrehozása): 4 lépés
Videó: Learn Arduino in 30 Minutes: Examples and projects 2024, November
Anonim
Arduino UNO (menük és funkciók létrehozása)
Arduino UNO (menük és funkciók létrehozása)
Arduino UNO (menük és funkciók létrehozása)
Arduino UNO (menük és funkciók létrehozása)

Ebben az utasításban megvizsgáljuk, hogyan lehet menüket létrehozni, hőmérsékletet olvasni a TC74A0 érzékelőből, és megjeleníteni az "értékeket" (ebben az esetben a mobiltelefonszámokat) végtelen módon, de csak az arduino fedélzeti memóriájára.

Használni fogjuk

-Tömbök

-Folyadékkristályos kijelző

-Billentyűzet

A felhasználói útmutató az utolsó lépésben található.

1. lépés: Alkatrészek

Arduino Uno

· 4x4 -es billentyűzet

· TC74A0 digitális hőmérséklet -érzékelő

· I2c 16x2 LCD modul

· 16x2 folyadékkristályos kijelző

· Jumper vezetékek

· Kenyeretábla

· Személyi számítógép

· Arduino IDE

· Átviteli kábel

2. lépés: Alkatrészek bekötése

TEMP ÉRZÉKELŐ ÉS LCD Ugyanazon a vonalon csatlakozik az SDA -hoz és az SCL -hez (A4, A5)

LCD (I2c modul)

o SDA - A5 az Arduino -n

o SCL -ről A4 -re az Arduino -n

o VCC 5V -ra az Arduino -n

o GND -GND az Arduino -n

· 4 x 4 billentyűzet

o 1–8. pin a billentyűzeten az Arduino 9–2

TC74A0 hőmérséklet érzékelő

o TC74A0 2. tű az SDA -hoz az Arduino -n

o TC74A0 3. tű GND -hez az Arduino -n

o TC74A0 4. tű az SCL -hez az Arduino -n

o TC74A0 5–5 V -os érintkező az Arduino -n

3. lépés: Kód

#include // Könyvtárakat tartalmaz a fordítás során

#befoglalni

#befoglalni

#define Password_Lenght 5

#define Command_Lenght 3

#define CellNumber 10

int felhasználók = 0;

int Kijelző = 0;

int cím = 72; // tc74a0 CÍM

int I = 0;

int USER;

int X = 0;

int XY = 0;

int temp;

int tempPre = 0;

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

char adatok [Jelszó_hossz];

char Master [Password_Lenght] = "5466"; //JELSZÓ

char ExitData [Parancs_hossz]; //

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

char MenuItem;

char CELLArrayA [10];

char CELLArrayB [10];

char CELLArrayC [10];

const byte ROWS = 4; // négy sor

const bájt COLS = 4; // négy oszlop

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

bájt colPins [COLS] = {9, 8, 7, 6};

bájt adatszáma = 0, törzsszám = 0;

bool Pass_is_good;

LiquidCrystal_I2C LCD (0x26, 16, 2);

char hexaKeys [SOROK] [COLS] = // KEZELŐBEÁLLÍTÁS

{

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

};

Billentyűzet customKeypad = Billentyűzet (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);

üres beállítás ()

{

Sorozat.kezdet (9600); // ez létrehozza a Soros monitort

Wire.begin (); // ez egy Wire objektumot hoz létre

lcd. kezdet (16, 2);

lcd.backlight ();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Kérjük, várjon 3"); // TÖLTÉSI KÉPERNYŐ

késleltetés (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Please Wait 2");

késleltetés (1000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Kérjük, várjon 1");

késleltetés (300);

lcd.clear ();

String myString = "ARDUINO INSTRUCTABLE";

lcd.setCursor (2, 2);

lcd.print (myString);

késleltetés (2500);

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

{

lcd.scrollDisplayLeft ();

késleltetés (300);

}

lcd.clear ();

lcd.print ("Jelszó megadása");

}

üres hurok ()

{

kapcsoló (Kijelző) // HOL VANNAK A FŐMENÜBEN

{// A FELHASZNÁLÓ NYOMTA A, B, C, D

0. eset:

{

Jelszó();

}

szünet;

1. eset:

{

lcd.clear ();

lcd.setCursor (0, 1);

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

lcd.setCursor (0, 0);

lcd.print ("Főmenü");

Kijelző = 2;

késleltetés (100);

szünet;

}

2. eset:

{

char customKey = customKeypad.getKey ();

kapcsoló (customKey)

{

„A” eset:

{

Serial.println ("A megnyomásra került");

StoreUser ();

szünet;

}

„B” eset:

{

Serial.println ("B megnyomva");

if (felhasználók == 0) {

lcd.clear ();

lcd.print ("NINCS MENTETT FELHASZNÁLÓ");

késleltetés (3000);

lcd.clear ();

Kijelző = 1;

szünet;

}

DisplayUsers (); szünet;

}

„C” eset:

{

Serial.println ("C lenyomva"); // HASZNÁLT A TESZTelés során

int ext = 0;

míg (! ext) {

char ch;

temp = TempMenu ();

if (temp! = tempPre) {

lcd.clear ();

lcd.print ("Hőmérséklet");

lcd.setCursor (0, 1);

lcd.print (temp);

lcd.print ("C");

tempPre = hőmérséklet;

késleltetés (500);

}

ch = customKeypad.getKey ();

if (ch == ' *') // KILÉPÉS A HŐMÉRSÉKLET MENÜBŐL (ha * PRESSED)

{

ext = 1;

lcd.clear ();

Kijelző = 1;

}

}

szünet;

TempMenu ();

szünet;

}

„D” eset:

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("NUA PRAC");

lcd.setCursor (0, 1);

lcd.print ("JB SCHOEMAN");

késleltetés (3000);

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("2019. MÁJUS");

lcd.setCursor (0, 1);

lcd.print ("CC OOSTHUIZEN");

késleltetés (3000);

lcd.clear ();

Kijelző = 1;

}

}

}

}

}

// EGYEDI FUNKCIÓK ÉRTÉKEK VAGY ELJÁRÁSOK HÍVÁSÁHOZ

érvénytelen jelszó ()

{

char customKey = customKeypad.getKey ();

if (customKey) // meggyőződik arról, hogy a billentyűt valóban lenyomták, egyenlő (customKey! = NO_KEY)

{

Data [data_count] = customKey; // char -t tárol az adattömbbe

lcd.setCursor (adatszám, 1); // mozgassa a kurzort minden új karakter megjelenítéséhez

lcd.print ("*"); // karakter nyomtatása a kurzorral

data_count ++; // növelje az adatsort 1 -el az új karakterek tárolásához, és kövesse nyomon a bevitt karakterek számát is

}

if (data_count == Password_Lenght-1) // ha a tömbindex megegyezik a várt karakterek számával, hasonlítsa össze az adatokat a masterrel

{

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("A jelszó");

if (! strcmp (Data, Master)) // egyenlő (strcmp (Data, Master) == 0)

{

lcd.print ("Jó");

lcd.clear ();

Kijelző = 1;

}

más

lcd.print ("Rossz");

delay (1000); // hozzáadott 1 másodperces késleltetést annak biztosítása érdekében, hogy a jelszó teljesen megjelenik a képernyőn, mielőtt törlődik.

lcd.clear ();

adatok törlése();

lcd.clear ();

lcd.setCursor (0, 0);

lcd.print ("Jelszó megadása");

}

}

int TempMenu ()

{

Wire.beginTransmission (cím);

Vezeték.írás (0);

Wire.endTransmission ();

Wire.requestFrom (cím, 1);

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

int c = Drót.olvasás ();

visszatérés c;

}

void clearData ()

{

míg (data_count! = 0)

{// Bármilyen tömbmérethez használható, Adatok [data_count--] = 0; // tömb törlése az új adatokhoz

}

}

void StoreUser ()

{

int ext = 0;

int felhasználó;

char ch;

míg (! ext) {

lcd.clear ();

lcd.print ("Felhasználó megadása");

felhasználó = felhasználók + 1;

lcd.print (felhasználó);

int x = 0;

közben (! x) {

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

ch = customKeypad.waitForKey ();

lcd.setCursor (i, 1);

lcd.print (ch);

userNum [felhasználó - 1] = ch;

}

késleltetés (500);

lcd.clear ();

lcd.print ("Folytatás");

lcd.setCursor (0, 1);

lcd.print ("* igen # nem");

ch = customKeypad.waitForKey ();

ha (ch == '*') {

x = 1;

}

if (ch == '#') {

x = 1;

ext = 1;

lcd.clear ();

Kijelző = 1;

}

}

felhasználók ++;

}

}

érvénytelen DisplayUsers ()

{

lcd.clear ();

(int i = 0; i <felhasználók; i ++) {

lcd.print ("Mentett felhasználó");

lcd.print (i + 1);

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

lcd.setCursor (u, 1);

lcd.print (userNum [u]);

}

késleltetés (2000);

lcd.clear ();

Kijelző = 1;

}

}

4. lépés: FELHASZNÁLÓI ÚTMUTATÓ

1. A projekt bekapcsolásakor megjelenik egy betöltő vagy üdvözlő képernyő.

2. Megjelenik a „Jelszó megadása” képernyő, amely lehetővé teszi 4 karakter, betű vagy szám bevitelét, a helyes jelszó: 5466, ez hozzáférést biztosít a főmenühöz.

3. A helyes jelszó megadása után megjelenik a főmenü, amely 4 lehetséges opcióval navigálhat a különböző elérhető funkciók között.

· A - Adja meg a felhasználói mobiltelefonszámokat.

o Írjon be 10 számjegyet, hogy elmentse a felhasználót a rendszerbe

o 10 számjegy beírása után nyomja meg a „ *” gombot további felhasználók hozzáadásához, vagy nyomja meg a „#” gombot a főmenübe való visszatéréshez

· B - Mentett felhasználók megjelenítése

o A felhasználók görgetni fognak a képernyőn, egyenként 3 másodpercig jelennek meg, amint az összes felhasználó megjelenik, az oldal bezárul, és visszatér a főmenübe.

o Ha az A menüpontban nem adtak hozzá felhasználót, akkor a „NO SAVED USERS” felirat jelenik meg.

· C - Az élő hőmérséklet megjelenítése

o Nyomja meg a „ *“gombot a főmenübe való visszatéréshez

· D - Rövid szöveg megjelenítése

o Megjeleníti az alkotó nevét és a témát, amelyhez összeállították, dátummal.

Ajánlott: