![Arduino UNO (Menyu və Funksiyalar yaratmaq): 4 addım Arduino UNO (Menyu və Funksiyalar yaratmaq): 4 addım](https://i.howwhatproduce.com/images/004/image-9747-10-j.webp)
Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
![Arduino UNO (Menyu və Funksiyalar yaratmaq) Arduino UNO (Menyu və Funksiyalar yaratmaq)](https://i.howwhatproduce.com/images/004/image-9747-11-j.webp)
![Arduino UNO (Menyu və Funksiyalar yaratmaq) Arduino UNO (Menyu və Funksiyalar yaratmaq)](https://i.howwhatproduce.com/images/004/image-9747-12-j.webp)
Bu təlimatda menyuların necə yaradılacağını, TC74A0 sensorundan temperaturun necə oxunacağını və "dəyərləri" (bu halda cib telefonu nömrələrini) sonsuz, lakin arduino yaddaş yaddaşı ilə məhdudlaşdırılacaq şəkildə göstərməyi öyrənəcəyik.
İstifadə edəcəyik
-Dairələr
-Maye kristal ekran
-Klaviatura
İstifadəçi təlimatı son mərhələyə daxil edilmişdir.
Addım 1: Komponentlər
Arduino Uno
· 4x4 klaviatura
· TC74A0 rəqəmsal temperatur sensoru
· I2c 16x2 LCD Modulu
· 16x2 maye kristal ekran
· Atlama telləri
· Çörək lövhəsi
· Şəxsi kompüter
· Arduino IDE
· Transfer kabeli
Addım 2: Komponent Kablolama
TEMP SENSORU və LCD SDA VƏ SCL (A4, A5) Eynilə Xəttdə Bağlandı
LCD (I2c Modulu)
o Arduino -da SDA -dan A5 -ə qədər
o Arduino -da A4 -ə SCL
o Arduinoda 5V -ə VCC
o Arduinoda GND -dən GND -ə
· 4 x 4 klaviatura
o Klaviaturada 1 - 8 Pin, müvafiq olaraq Arduino'da 9 - 2 pininə bağlıdır
TC74A0 temperatur sensoru
o TC74A0 pin 2, Arduino -da SDA -ya
o TC74A0 pin 3, Arduinoda GND -ə
o TC74A0 pin 4, Arduino üzərindəki SCL -ə
o Arduinoda TC74A0 pin 5 - 5V
Addım 3: Kod
#include // Tərtib edərkən kitabxanalar daxildir
#daxil edin
#daxil edin
#Şifrəni təyin edin_Uzunluğu 5
#təyin Komanda_Uzunluğu 3
#CellNumber 10 təyin edin
int users = 0;
int Display = 0;
int ünvanı = 72; // tc74a0 ÜNVAN
int I = 0;
int İSTİFADƏÇİ;
int X = 0;
int XY = 0;
int tempi;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char Məlumatları [Password_Lenght];
char Master [Password_Lenght] = "5466"; // ŞİFRƏ
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
char CELLArrayC [10];
const bayt ROWS = 4; // dörd sıra
const baytı COLS = 4; // dörd sütun
bayt rowPins [ROWS] = {5, 4, 3, 2};
bayt colPins [COLS] = {9, 8, 7, 6};
bayt data_count = 0, master_count = 0;
bool Pass_is_good;
LiquidCrystal_I2C lcd (0x26, 16, 2);
char hexaKeys [ROWS] [COLS] = // BAŞLAYAN Klaviatura
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Klaviatura xüsusiKeypad = Klaviatura (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
boş quraşdırma ()
{
Serial.begin (9600); // bu Serial Monitoru yaradır
Wire.begin (); // bu Wire obyekti yaradır
lcd.begin (16, 2);
lcd.lightlight ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Xahiş edirik 3 Gözləyin"); // EKRAN YÜKLƏNİR
gecikmə (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Xahiş edirik 2 Gözləyin");
gecikmə (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Zəhmət olmasa 1 Gözləyin");
gecikmə (300);
lcd.clear ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
gecikmə (2500);
for (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
gecikmə (300);
}
lcd.clear ();
lcd.print ("Şifrə daxil edin");
}
boşluq döngəsi ()
{
keçid (Ekran) // ANA MENÜDƏ HARADA BİZ
{// İSTİFADƏÇİ A, B, C, D BASDI
hal 0:
{
Şifrə ();
}
fasilə;
hal 1:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("Əsas Menyu");
Ekran = 2;
gecikmə (100);
fasilə;
}
hal 2:
{
char customKey = customKeypad.getKey ();
keçid (xüsusi açar)
{
hal 'A':
{
Serial.println ("A basıldı");
StoreUser ();
fasilə;
}
hal 'B':
{
Serial.println ("B basıldı");
əgər (istifadəçilər == 0) {
lcd.clear ();
lcd.print ("QEYDİYYATDAN İSTİFADƏÇİLƏR YOXDUR");
gecikmə (3000);
lcd.clear ();
Ekran = 1;
fasilə;
}
DisplayUsers (); fasilə;
}
hal 'C':
{
Serial.println ("C basıldı"); // SINAŞDAN İSTİFADƏ EDİLİR
int ext = 0;
isə (! ext) {
char ch;
temp = TempMenu ();
əgər (temp! = tempPre) {
lcd.clear ();
lcd.print ("Temperatur");
lcd.setCursor (0, 1);
lcd çap (temp);
lcd.print ("C");
tempPre = temp;
gecikmə (500);
}
ch = customKeypad.getKey ();
if (ch == ' *') // SICAKLIQ MENÜSÜNDƏN ÇIX (əgər * BASILIR)
{
daxili = 1;
lcd.clear ();
Ekran = 1;
}
}
fasilə;
TempMenu ();
fasilə;
}
hal 'D':
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
gecikmə (3000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("MAY 2019");
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
gecikmə (3000);
lcd.clear ();
Ekran = 1;
}
}
}
}
}
// DƏYƏRLƏRİ VƏ QAYDALARI ZƏNG EDƏN FƏRDİ FUNKSİYALAR
etibarsız parol ()
{
char customKey = customKeypad.getKey ();
əgər (customKey) // (customKey! = NO_KEY) -ə bərabər olan bir düymənin həqiqətən basıldığından əmin olur.
{
Məlumat [data_count] = customKey; // char -ı məlumat silsiləsində saxla
lcd.setCursor (data_count, 1); // hər yeni simvolu göstərmək üçün kursoru hərəkət etdirin
lcd.print ("*"); // qeyd olunan kursorda char yazdırın
data_count ++; // yeni simvol saxlamaq üçün məlumat dizisini 1 artırın, daxil edilən işarələrin sayını da izləyin
}
əgər (data_count == Password_Lenght-1) // sıra indeksi gözlənilən simvolların sayına bərabərdirsə, məlumatları master ilə müqayisə edin
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Şifrədir");
if (! strcmp (Data, Master)) // bərabərdirsə (strcmp (Data, Master) == 0)
{
lcd.print ("Yaxşı");
lcd.clear ();
Ekran = 1;
}
başqa
lcd.print ("Pis");
gecikmə (1000); // şifrənin təmizlənmədən əvvəl ekranda tamamilə göründüyündən əmin olmaq üçün 1 saniyə gecikmə əlavə etdi.
lcd.clear ();
clearData ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Şifrə daxil edin");
}
}
int TempMenu ()
{
Wire.beginTransmission (ünvan);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (ünvan, 1);
while (Wire.available () == 0);
int c = Wire.read ();
qayıt c;
}
void clearData ()
{
isə (data_count! = 0)
{// Bu hər hansı bir sıra ölçüsü üçün istifadə edilə bilər, Məlumat [data_count--] = 0; // yeni məlumatlar üçün silinən massiv
}
}
boş StoreUser ()
{
int ext = 0;
int istifadəçi;
char ch;
isə (! ext) {
lcd.clear ();
lcd.print ("İstifadəçi daxil edin");
istifadəçi = istifadəçilər + 1;
lcd.print (istifadəçi);
int x = 0;
isə (! x) {
üçün (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd çap (ch);
userNum [user - 1] = ch;
}
gecikmə (500);
lcd.clear ();
lcd.print ("Davam et");
lcd.setCursor (0, 1);
lcd.print ("* bəli # yox");
ch = customKeypad.waitForKey ();
əgər (ch == '*') {
x = 1;
}
əgər (ch == '#') {
x = 1;
daxili = 1;
lcd.clear ();
Ekran = 1;
}
}
istifadəçilər ++;
}
}
boş DisplayUsers ()
{
lcd.clear ();
üçün (int i = 0; i <istifadəçilər; i ++) {
lcd.print ("Saxlanılan İstifadəçi");
lcd.çap (i + 1);
üçün (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (istifadəçiSayı [u]);
}
gecikmə (2000);
lcd.clear ();
Ekran = 1;
}
}
Addım 4: İstifadəçi bələdçisi
1. Layihəni işə saldıqdan sonra yükləmə və ya qarşılama ekranı görünəcək.
2. "Şifrə daxil et" ekranı görünəcək, bu ekran 4 simvol, hərf və ya rəqəm daxil etməyinizə imkan verir, düzgün parol: 5466, bu sizə əsas menyuya giriş imkanı verəcək.
3. Doğru şifrəni daxil etdikdən sonra, mövcud olan müxtəlif funksiyaları gəzmək üçün 4 mümkün variantla əsas menyu görünəcək.
· A - İstifadəçinin mobil telefon nömrələrini daxil edin.
o İstifadəçini sistemə saxlamaq üçün 10 rəqəm daxil edin
o 10 rəqəm daxil edildikdən sonra daha çox istifadəçi əlavə etmək üçün " *" düyməsini, ya da əsas menyuya qayıtmaq üçün "#" düyməsini basın.
· B - Saxlanılan istifadəçiləri göstərin
o İstifadəçilər ekranın yanından keçəcək, hər biri 3 saniyə ərzində göstəriləcək, bütün istifadəçilər görünən kimi səhifə bağlanacaq və ana menyuya qayıdacaq.
o A menyu seçiminə heç bir istifadəçi əlavə edilmədikdə, "QEYDİYYATDAN İSTİFADƏÇİLƏR" göstəriləcək.
· C - Canlı temperaturu göstərir
o Əsas menyuya qayıtmaq üçün " *" düyməsini basın
· D - Qısa mətni göstərin
o Yaradıcının adını və tarixlə tərtib olunduğu mövzunu göstərir.
Tövsiyə:
Arduino OLED Ekran Menyu Seçim Seçimiylə: 8 Addım
![Arduino OLED Ekran Menyu Seçim Seçimiylə: 8 Addım Arduino OLED Ekran Menyu Seçim Seçimiylə: 8 Addım](https://i.howwhatproduce.com/images/001/image-1352-j.webp)
Arduino OLED Ekran Menyu Seçim Seçimi ilə: Bu dərslikdə OLED Display və Visuino istifadə edərək seçim seçimi ilə bir menyu necə quracağımızı öyrənəcəyik
Arduino üçün idarə olunan Stepper Speed Control Menyu: 6 Addım
![Arduino üçün idarə olunan Stepper Speed Control Menyu: 6 Addım Arduino üçün idarə olunan Stepper Speed Control Menyu: 6 Addım](https://i.howwhatproduce.com/images/001/image-37-50-j.webp)
Arduino üçün idarə olunan Stepper Speed Control Menyu: Bu SpeedStepper kitabxanası, step motorunun sürətinə nəzarət etmək üçün AccelStepper kitabxanasının yenidən yazılmasıdır. SpeedStepper kitabxanası, müəyyən edilmiş motor sürətini dəyişdirməyə imkan verir və sonra eyni alqoritmdən istifadə edərək yeni təyin olunan sürətə sürətlənir/yavaşlayır
Menyu ilə Arduino DHT22 Sensor və Torpaq Nəmliyi Layihəsi: 4 Addım
![Menyu ilə Arduino DHT22 Sensor və Torpaq Nəmliyi Layihəsi: 4 Addım Menyu ilə Arduino DHT22 Sensor və Torpaq Nəmliyi Layihəsi: 4 Addım](https://i.howwhatproduce.com/images/005/image-13788-j.webp)
Menyu ilə Arduino DHT22 Sensor və Torpaq Nəmliyi Layihəsi: Salam uşaqlar Bu gün sizə göstərişli ikinci layihəmi təqdim edirəm.Bu layihə, İstilik və rütubətin ölçülməsi üçün istifadə olunan Torpaq Nəmliyi sensoru və DHT22 sensoru istifadə etdiyim ilk layihəmi təqdim edir. . Bu layihə
Dərslik: Arduino UNO istifadə edərək VL53L0X Lazer Aralığı Sensor Modulunu Necə Yaratmaq olar: 3 addım
![Dərslik: Arduino UNO istifadə edərək VL53L0X Lazer Aralığı Sensor Modulunu Necə Yaratmaq olar: 3 addım Dərslik: Arduino UNO istifadə edərək VL53L0X Lazer Aralığı Sensor Modulunu Necə Yaratmaq olar: 3 addım](https://i.howwhatproduce.com/images/009/image-24901-j.webp)
Təlimat: Arduino UNO -dan istifadə edərək VL53L0X Lazer Aralığı Sensor Modulunu necə qurmaq olar: Təsvirlər: Bu təlimat VL53L0X Lazer Dəyişən Sensor Modulu və Arduino UNO -dan istifadə edərək məsafə detektorunun necə qurulacağına dair ətraflı məlumat verəcək və sizin kimi işləyəcək. istəmək. Təlimatları izləyin və bu müəllimi başa düşəcəksiniz
Rotary Encoder istifadə edərək Nokia 5110 Lcd -də Arduino Menyu: 6 addım (Şəkillərlə birlikdə)
![Rotary Encoder istifadə edərək Nokia 5110 Lcd -də Arduino Menyu: 6 addım (Şəkillərlə birlikdə) Rotary Encoder istifadə edərək Nokia 5110 Lcd -də Arduino Menyu: 6 addım (Şəkillərlə birlikdə)](https://i.howwhatproduce.com/images/002/image-3602-101-j.webp)
Nokia 5110 Lcd -də Arduino Menyu Rotary Encoder istifadə edərək: Əziz dostlar, başqa bir dərsliyə xoş gəldiniz! Bu videoda, layihələrimizi daha istifadəçi dostu və daha bacarıqlı etmək üçün məşhur Nokia 5110 LCD ekranı üçün öz menyuumuzu necə quracağımızı öyrənəcəyik. Başlayaq! Bu layihə