Mundarija:

Arduino UNO (menyu va funktsiyalarni yaratish): 4 qadam
Arduino UNO (menyu va funktsiyalarni yaratish): 4 qadam

Video: Arduino UNO (menyu va funktsiyalarni yaratish): 4 qadam

Video: Arduino UNO (menyu va funktsiyalarni yaratish): 4 qadam
Video: Lesson 95: Using L293D 4 DC Motors Shield for Arduino UNO and Mega | Arduino Step By Step Course 2024, Noyabr
Anonim
Arduino UNO (menyu va funktsiyalarni yaratish)
Arduino UNO (menyu va funktsiyalarni yaratish)
Arduino UNO (menyu va funktsiyalarni yaratish)
Arduino UNO (menyu va funktsiyalarni yaratish)

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: