Mündəricat:

Arduino UNO (Menyu və Funksiyalar yaratmaq): 4 addım
Arduino UNO (Menyu və Funksiyalar yaratmaq): 4 addım

Video: Arduino UNO (Menyu və Funksiyalar yaratmaq): 4 addım

Video: Arduino UNO (Menyu və Funksiyalar yaratmaq): 4 addım
Video: VL53L1X Лазерный дистанционный датчик времени полета 400 см 2024, Iyul
Anonim
Arduino UNO (Menyu və Funksiyalar yaratmaq)
Arduino UNO (Menyu və Funksiyalar yaratmaq)
Arduino UNO (Menyu və Funksiyalar yaratmaq)
Arduino UNO (Menyu və Funksiyalar yaratmaq)

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ə: