Mundarija:
- 1 -qadam: komponentlar
- 2 -qadam: Komponentli simlarni ulash
- 3 -qadam: kod
- 4 -qadam: Foydalanuvchi qo'llanmasi
Video: Arduino UNO (menyu va funktsiyalarni yaratish): 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Bu yo'riqnomada menyu tuzish, TC74A0 sensori orqali haroratni o'qish va "qadriyatlar" ni (bu holda mobil telefon raqamlari) cheksiz, lekin bort xotirasi bilan chegaralanadigan tarzda ko'rsatishni o'rganamiz.
Biz foydalanamiz
-Array
-Suyuq kristalli displey
-Klaviatura
Foydalanuvchi qo'llanmasi oxirgi bosqichga kiritilgan.
1 -qadam: komponentlar
Arduino Uno
· 4x4 klaviatura
· TC74A0 raqamli harorat sensori
· I2c 16x2 LCD moduli
· 16x2 lik suyuq kristalli displey
· O'tish simlari
· Non paneli
· Shaxsiy kompyuter
· Arduino IDE
· Uzatish kabeli
2 -qadam: Komponentli simlarni ulash
TEMP SENSORI va LCD SDA VA SCL (A4, A5) ga bir chiziqda ulangan
LCD (I2c moduli)
o SDA -dan A5 -ga Arduino -da
o Arduino -da A4 -ga SCL
o Arduino -da 5V ga VCC
o Arduino -da GND dan GNDgacha
· 4 x 4 klaviatura
o Klaviaturadagi 1-8 -pin, mos ravishda Arduino -dagi 9 - 2 -pinlarga ulangan
TC74A0 harorat sensori
o TC74A0 pin 2 Arduino -dagi SDA -ga
o TC74A0 pin 3 Arduino -dagi GND -ga
o TC74A0 pin 4 Arduino -dagi SCL -ga
o TC74A0 pin 5 dan 5 V gacha Arduino
3 -qadam: kod
#include // Kompilyatsiya paytida kutubxonalarni o'z ichiga oladi
#qo'shing
#qo'shing
#parolni belgilash_uzi 5
#buyruq_ uzunligini belgilang 3
#hujayra raqami 10 ni belgilang
int foydalanuvchilar = 0;
int ko'rsatish = 0;
int manzili = 72; // tc74a0 MANZILI
int I = 0;
int USER;
int X = 0;
int XY = 0;
int temp;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char Ma'lumotlar [Password_Lenght];
char Master [Password_Lenght] = "5466"; // parol
char ExitData [Buyruq_Uzunligi]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
char CELLArrayC [10];
const bayt ROWS = 4; // to'rt qator
const bayt COLS = 4; // to'rtta ustun
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] = // Klaviaturani ishga tushirish
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
CustomKeypad klaviaturasi = Klaviatura (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
bo'sh o'rnatish ()
{
Serial.begin (9600); // bu ketma -ket monitorni yaratadi
Wire.begin (); // bu Wire ob'ektini yaratadi
lcd.begin (16, 2);
lcd.backlight ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Iltimos 3 kuting"); // EKRAN yuklanmoqda
kechikish (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Iltimos, 2 kuting");
kechikish (1000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Iltimos, 1 kuting");
kechikish (300);
lcd.clear ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
kechikish (2500);
uchun (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
kechikish (300);
}
lcd.clear ();
lcd.print ("Parolni kiriting");
}
bo'sh halqa ()
{
switch (Displey) // ASOSI MENYUDA QAYERDA BIZ
{// USER A, B, C, D bosdi
0 holat:
{
Parol ();
}
tanaffus;
1 -holat:
{
lcd.clear ();
lcd.setCursor (0, 1);
lcd.print ("A B C D");
lcd.setCursor (0, 0);
lcd.print ("Asosiy menyu");
Ko'rsatish = 2;
kechikish (100);
tanaffus;
}
2 -holat:
{
char customKey = customKeypad.getKey ();
almashtirish (customKey)
{
"A" holati:
{
Serial.println ("A bosildi");
StoreUser ();
tanaffus;
}
"B" holati:
{
Serial.println ("B bosildi");
agar (foydalanuvchilar == 0) {
lcd.clear ();
lcd.print ("SAVDALANILGAN FOYDALANIShLAR YO'Q");
kechikish (3000);
lcd.clear ();
Ko'rsatish = 1;
tanaffus;
}
DisplayUsers (); tanaffus;
}
"C" holati:
{
Serial.println ("C bosildi"); // TESTDAN KO'RSATILADI
int ext = 0;
while (! ext) {
char ch;
temp = TempMenu ();
agar (temp! = tempPre) {
lcd.clear ();
lcd.print ("Harorat");
lcd.setCursor (0, 1);
lcd.print (temp);
lcd.print ("C");
tempPre = temp;
kechikish (500);
}
ch = customKeypad.getKey ();
if (ch == ' *') // TEMPERATURE MENYUSIDAN CHIQISH (agar * BASILGAN bo'lsa)
{
ext = 1;
lcd.clear ();
Ko'rsatish = 1;
}
}
tanaffus;
TempMenu ();
tanaffus;
}
"D" holati:
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print ("JB SCHOEMAN");
kechikish (3000);
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("2019 yil MAY");
lcd.setCursor (0, 1);
lcd.print ("CC OOSTHUIZEN");
kechikish (3000);
lcd.clear ();
Ko'rsatish = 1;
}
}
}
}
}
// QIMMATLAR VA TARTIBLARNI QO'NG'IR QILISH UChUN MAXSUS FUNKSIYALAR
parolni bekor qilish ()
{
char customKey = customKeypad.getKey ();
agar (customKey) // tugma bosilganligiga ishonch hosil qilsa, (customKey! = NO_KEY)
{
Ma'lumotlar [data_count] = customKey; // charni ma'lumotlar qatoriga saqlang
lcd.setCursor (data_count, 1); // har bir yangi belgini ko'rsatish uchun kursorni siljiting
lcd.print ("*"); // ko'rsatilgan kursorga char yozing
data_count ++; // yangi simlarni saqlash uchun ma'lumotlar qatorini 1 ga oshirish, shuningdek kiritilgan belgilar sonini kuzatib borish
}
agar (data_count == Password_Lenght-1) // agar massiv indeksi kutilgan belgilar soniga teng bo'lsa, ma'lumotlarni master bilan solishtiring
{
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Parol - bu");
if (! strcmp (Data, Master)) // teng (strcmp (Data, Master) == 0)
{
lcd.print ("Yaxshi");
lcd.clear ();
Ko'rsatish = 1;
}
boshqa
lcd.print ("Yomon");
kechikish (1000); // parolni tozalashdan oldin ekranda to'liq ko'rsatilishini ta'minlash uchun 1 soniya kechiktirish qo'shildi.
lcd.clear ();
clearData ();
lcd.clear ();
lcd.setCursor (0, 0);
lcd.print ("Parolni kiriting");
}
}
int TempMenu ()
{
Wire.beginTransmission (manzil);
Wire.write (0);
Wire.endTransmission ();
Wire.requestFrom (manzil, 1);
while (Wire.available () == 0);
int c = Wire.read ();
qaytish c;
}
void clearData ()
{
vaqt (data_count! = 0)
{// Buni har qanday massiv o'lchami uchun ishlatish mumkin, Ma'lumotlar [data_count--] = 0; // yangi ma'lumotlar uchun aniq qator
}
}
void StoreUser ()
{
int ext = 0;
int foydalanuvchi;
char ch;
while (! ext) {
lcd.clear ();
lcd.print ("Foydalanuvchini kiriting");
foydalanuvchi = foydalanuvchilar + 1;
lcd.print (foydalanuvchi);
int x = 0;
vaqt (! x) {
uchun (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [foydalanuvchi - 1] = ch;
}
kechikish (500);
lcd.clear ();
lcd.print ("Davom etish");
lcd.setCursor (0, 1);
lcd.print ("* ha # yo'q");
ch = customKeypad.waitForKey ();
agar (ch == '*') {
x = 1;
}
agar (ch == '#') {
x = 1;
ext = 1;
lcd.clear ();
Ko'rsatish = 1;
}
}
foydalanuvchilar ++;
}
}
void DisplayUsers ()
{
lcd.clear ();
uchun (int i = 0; i <foydalanuvchilar; i ++) {
lcd.print ("Saqlangan foydalanuvchi");
lcd.print (i + 1);
uchun (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (userNum [u]);
}
kechikish (2000);
lcd.clear ();
Ko'rsatish = 1;
}
}
4 -qadam: Foydalanuvchi qo'llanmasi
1. Loyihani ishga tushirgandan so'ng, yuklash yoki qabul qilish ekrani paydo bo'ladi.
2. "Parolni kiriting" ekrani paydo bo'ladi, bu ekran sizga 4 ta belgini, harflarni yoki raqamlarni kiritishga imkon beradi, to'g'ri parol: 5466, bu sizga asosiy menyuga kirishga ruxsat beradi.
3. Parolni to'g'ri kiritganingizda, asosiy menyu mavjud bo'lgan turli xil funktsiyalarni boshqarish uchun 4 ta variant bilan paydo bo'ladi.
· A - Foydalanuvchining mobil telefon raqamlarini kiriting.
o Foydalanuvchini tizimga saqlash uchun 10 ta raqamni kiriting
10 ta raqam kiritilgandan so'ng ko'proq foydalanuvchilarni qo'shish uchun " *" tugmasini bosing yoki asosiy menyuga qaytish uchun "#" tugmasini bosing.
· B - saqlangan foydalanuvchilarni ko'rsatish
o Foydalanuvchilar ekran bo'ylab o'tadilar, ular har biri 3 soniya davomida ko'rsatiladi, barcha foydalanuvchilar ko'rsatilgandan so'ng, sahifa yopiladi va asosiy menyuga qaytadi.
o Agar A menyusida hech qanday foydalanuvchi qo'shilmagan bo'lsa, unda "SAVDATLANILGANLAR YO'Q" ko'rsatiladi.
· C - jonli haroratni ko'rsatadi
o Asosiy menyuga qaytish uchun " *" tugmasini bosing
· D - Qisqa matnni ko'rsatish
o Yaratuvchining ismi va sanasi bilan tuzilgan mavzuni ko'rsatadi.
Tavsiya:
Menyu va nashrida nazorati bilan M5StickC ajoyib ko'rinadigan soat: 8 qadam
Menyu va nashrida nazorati bilan M5StickC ajoyib ko'rinadigan soat: Bu qo'llanmada biz ESP32 M5Stack StickC ni Arduino IDE va Visuino bilan LCD displeyda vaqtni ko'rsatish uchun dasturlashni, shuningdek menyu va StickC tugmalari yordamida vaqt va yorqinlikni o'rnatishni o'rganamiz. .Ko'rgazmali videoni tomosha qiling
Menyu bilan Arduino DHT22 sensori va tuproq namligi loyihasi: 4 qadam
Menyu bilan Arduino DHT22 sensori va tuproq namligi loyihasi: Salom bolalar bugun men sizlarga ko'rsatuvlar bo'yicha ikkinchi loyihamni taqdim etaman. Bu loyihada men namlik va namlikni o'lchash uchun ishlatiladigan namlik sensori va DHT22 sensori ishlatilgan birinchi loyihamni taqdim etaman. . Bu loyiha
RaspberryPi -ga qo'shimcha funktsiyalarni qo'shish uchun RaspberryPi 3/4 kengaytmasi: 15 qadam (rasmlar bilan)
Raspberry Pi -ga qo'shimcha funktsiyalarni qo'shish uchun RaspberryPi 3/4 kengaytma kengashi: biz bilamizki, malina pi 3/4 ADC (analogdan raqamli konvertorga) va RTC (real vaqtda soat) o'rnatilgan emas, shuning uchun men o'z ichiga 16 ta tenglikni yarataman. 12bit kanalli ADC, RTC, SIM7600 4G moduli, tugmachalar, o'rni, USB quvvatini o'chirish, 5V o'chirish, 12V kuch
Qo'llanma: Arduino UNO yordamida VL53L0X lazer diapazonini o'zgartirish modulini qanday yaratish kerak: 3 qadam
Qo'llanma: Arduino UNO yordamida VL53L0X lazer diapazonini o'zgartirish modulini qanday yaratish kerak: Tavsiflar: Ushbu qo'llanma sizga hammaga VL53L0X lazer o'lchash sensori moduli va Arduino UNO yordamida masofa detektorini yaratish haqida batafsil ma'lumot beradi va u siz kabi ishlaydi. xohlamoq. Ko'rsatmalarga amal qiling va siz bu o'qituvchini tushunasiz
Mac terminalini qanday ishlatish va asosiy funktsiyalarni qanday ishlatish kerak: 4 qadam
Mac terminalini qanday ishlatish va asosiy funktsiyalarni qanday ishlatish kerak: Biz sizga MAC terminalini qanday ochish kerakligini ko'rsatamiz. Shuningdek, biz sizga terminalda ifconfig, kataloglarni o'zgartirish, fayllarga kirish va arp kabi bir nechta xususiyatlarni ko'rsatamiz. Ifconfig sizga IP manzilingizni va MAC reklamangizni tekshirishga imkon beradi