Tartalomjegyzék:
Videó: Arduino UNO (menük és funkciók létrehozása): 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
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:
IOT funkciók hozzáadása a projektekhez: 5 lépés
IOT funkciók hozzáadása a projektjeihez: Semmi sem jobb, mint egy DIY projekt elkészítése, amely helyettesíti a hasznosnak talált kereskedelmi terméket. Nos, valójában van ennél jobb. IOT képesség hozzáadása a projekthez. Ami az automatizálást illeti, a kezdők általában megijednek
A Mac terminál és a legfontosabb funkciók használata: 4 lépés
A Mac terminál és a kulcsfunkciók használata: Megmutatjuk, hogyan kell megnyitni a MAC terminált. Ezenkívül bemutatunk néhány funkciót a terminálon belül, például az ifconfig, a könyvtárak megváltoztatása, a fájlok elérése és az arp. Az Ifconfig lehetővé teszi az IP -cím és a MAC -hirdetés ellenőrzését
IoT bit funkciók: 6 lépés
IoT bitfunkciók: Ebben az oktatóanyagban megmutatjuk, hogyan kell használni az IoT Bit Functions GUI -t olyan miniszámítógépeihez, mint a Raspberry Pi 1,2 és 3. A GUI funkciói a V1 -ben a következők: " SMS küldése ", " SMS megjelenítése ", " De
Arduino hanggenerátor könyvtár vagy soros funkciók nélkül (megszakításokkal): 10 lépés
Arduino hanggenerátor könyvtár vagy soros funkciók nélkül (megszakításokkal): Általában nem ezt tanítom, ezért inkább a fémmegmunkálást részesítem előnyben, de mivel villamosmérnök hallgató vagyok, és részt kell vennem a mikrokontrollereken ( Beágyazott rendszerek tervezése), úgy gondoltam, megtaníthatok egy tanulhatót az egyik p
Guardian V1.0 --- Ajtókalapú kamera frissítése Arduino -val (mozgásérzékelő felvétel és áramütés funkciók): 5 lépés
Guardian V1.0 ||| Ajtókijelző kamera frissítése Arduino -val (Mozgásérzékelő felvétel és áramütés funkciók): Rendeltem egy kukucskáló kamerát, de amikor azt használom, rájöttem, hogy nincs automatikus felvételi funkció (mozgásérzékeléssel aktiválva). Aztán elkezdtem vizsgálni, hogyan működik. Videó rögzítéséhez 1- tartsa lenyomva a bekapcsológombot majdnem 2 másodpercig