Բովանդակություն:
Video: Arduino UNO (ընտրացանկերի և գործառույթների ստեղծում). 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Այս ուսանելի դասում մենք ուսումնասիրելու ենք, թե ինչպես ստեղծել ընտրացանկեր, կարդալ ջերմաստիճանը TC74A0 սենսորից և ցուցադրել «արժեքները» (այս դեպքում բջջային հեռախոսների համարները) անսահմանափակ, բայց սահմանափակված ինքնաթիռի հիշողությամբ:
Մենք կօգտագործենք
-rանգվածներ
-Հեղուկ բյուրեղյա էկրան
-Ստեղնաշար
Օգտագործողի ուղեցույցը ներառված է վերջին քայլին:
Քայլ 1: Բաղադրիչներ
Արդուինո Ունո
· 4x4 ստեղնաշար
· TC74A0 թվային ջերմաստիճանի տվիչ
· I2c 16x2 LCD մոդուլ
· 16x2 հեղուկ բյուրեղյա էկրան
· Թռիչքային լարեր
· Հացաթուղթ
· Անհատական համակարգիչ
· Arduino IDE
· Փոխանցման մալուխ
Քայլ 2: Բաղադրիչի միացում
EMերմաստիճանի տվիչ և LCD, որոնք միացված են նույն գծին SDA- ին և SCL- ին (A4, A5)
LCD (I2c մոդուլ)
o SDA- ից A5 Arduino- ում
o SCL- ից A4 Arduino- ում
o VCC- ից մինչև 5V Arduino- ով
o GND- ից GND Arduino- ում
· 4 x 4 ստեղնաշար
o Ստեղնաշարի 1 - 8 կապը համապատասխանաբար Arduino- ի 9 - 2 կապին միացված է
TC74A0 ջերմաստիճանի տվիչ
o TC74A0 կապ 2 SDA- ին Arduino- ում
o TC74A0 փին 3 դեպի GND Arduino- ում
o TC74A0 կապում 4 -ը SCL- ին Arduino- ում
o TC74A0 կապում 5 -ից 5 Վ Arduino- ին
Քայլ 3: Կոդ
#ներառել // Կազմելիս ներառում է գրադարաններ
#ներառում
#ներառում
#սահմանեք գաղտնաբառի_երկար 5
#սահմանել հրամանատարության_երկար 3
#սահմանեք բջջային համարը 10
int օգտվողներ = 0;
int Displayուցադրել = 0;
int հասցե = 72; // tc74a0 ՀԱՍRԵ
int I = 0;
int USER;
int X = 0;
int XY = 0;
int ջերմաստիճան;
int tempPre = 0;
char userNum [10] [10] = {{}, {}, {}};
char Տվյալներ [Գաղտնաբառ_լայնություն];
char Վարպետ [Password_Lenght] = "5466"; // ԱՆՎԱՆ ՈՈՎ
char ExitData [Command_Lenght]; //
char Master1 [Command_Lenght] = "**"; //
char MenuItem;
char CELLArrayA [10];
char CELLArrayB [10];
char CELLArrayC [10];
const բայթ ROWS = 4; // չորս տող
const բայթ COLS = 4; // չորս սյունակ
բայթ rowPins [ROWS] = {5, 4, 3, 2};
բայթ colPins [COLS] = {9, 8, 7, 6};
բայթ data_count = 0, master_count = 0;
bool Pass_is_good;
LiquidCrystal_I2C LCD (0x26, 16, 2);
char hexaKeys [ROWS] [COLS] = // INITIATING TYPEAD
{
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
};
Ստեղնաշարի customKeypad = Ստեղնաշար (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
դատարկ կարգավորում ()
{
Serial.begin (9600); // սա ստեղծում է Serial Monitor
Wire.begin (); // սա ստեղծում է Wire օբյեկտ
lcd. սկսել (16, 2);
lcd. լուսարձակը ();
lcd. հստակ ();
lcd.setCursor (0, 0);
lcd.print («Խնդրում ենք սպասել 3»); // Բեռնման էկրան
ուշացում (1000);
lcd. հստակ ();
lcd.setCursor (0, 0);
lcd.print («Խնդրում ենք սպասել 2»);
ուշացում (1000);
lcd. հստակ ();
lcd.setCursor (0, 0);
lcd.print («Խնդրում ենք սպասել 1»);
ուշացում (300);
lcd. հստակ ();
String myString = "ARDUINO INSTRUCTABLE";
lcd.setCursor (2, 2);
lcd.print (myString);
ուշացում (2500);
համար (int scrollCounter = 0; scrollCounter <24; scrollCounter ++)
{
lcd.scrollDisplayLeft ();
ուշացում (300);
}
lcd. հստակ ();
lcd.print («Մուտքագրեք գաղտնաբառը»);
}
դատարկ շրջան ()
{
անջատիչ (Displayուցադրել) // ՈՐՏԵ THE ՄԵՆՔ ՄԵՆՔ ԵՆՔ
{// ՕԳՏԱԳՈՐՈԸ ՄԱՄՈԼ Է Ա, Բ, Գ, Դ
գործ 0:
{
Գաղտնաբառ ();
}
ընդմիջում;
դեպք 1:
{
lcd. հստակ ();
lcd.setCursor (0, 1);
lcd.print («A B C D»);
lcd.setCursor (0, 0);
lcd.print («Հիմնական ընտրացանկ»);
Displayուցադրել = 2;
ուշացում (100);
ընդմիջում;
}
դեպք 2:
{
char customKey = customKeypad.getKey ();
անջատիչ (customKey)
{
դեպք 'A':
{
Serial.println («A- ն սեղմված էր»);
StoreUser ();
ընդմիջում;
}
գործ 'B':
{
Serial.println («B- ն սեղմված էր»);
եթե (օգտվողներ == 0) {
lcd. հստակ ();
lcd.print («ՉԻ ՓՐԿՎԱ US ՕԳՆՈԹՅՈՆՆԵՐ»);
ուշացում (3000);
lcd. հստակ ();
Displayուցադրել = 1;
ընդմիջում;
}
DisplayUsers (); ընդմիջում;
}
գործ 'C':
{
Serial.println («C- ն սեղմված էր»); // ՕԳՏԱԳՈՐՎՈՄ Է ԹԵՍՏԻ ԳՈՐՈՄ
int ext = 0;
իսկ (! ext) {
char ch;
temp = TempMenu ();
եթե (temp! = tempPre) {
lcd. հստակ ();
lcd.print («Temparature»);
lcd.setCursor (0, 1);
lcd.print (ջերմաստիճան);
lcd.print («C»);
tempPre = ջերմաստիճան;
ուշացում (500);
}
ch = customKeypad.getKey ();
եթե (ch == ' *') // ԵԼՔ EMերմաստիճանի ընտրացանկից (եթե * ՍՏԱՎԱ է)
{
ext = 1;
lcd. հստակ ();
Displayուցադրել = 1;
}
}
ընդմիջում;
TempMenu ();
ընդմիջում;
}
դեպք 'D':
{
lcd. հստակ ();
lcd.setCursor (0, 0);
lcd.print ("NUA PRAC");
lcd.setCursor (0, 1);
lcd.print («JB SCHOEMAN»);
ուշացում (3000);
lcd. հստակ ();
lcd.setCursor (0, 0);
lcd.print («ՄԱՅԻՍԻ 2019»);
lcd.setCursor (0, 1);
lcd.print («CC OOSTHUIZEN»);
ուշացում (3000);
lcd. հստակ ();
Displayուցադրել = 1;
}
}
}
}
}
// ԱՐ VALԵՔՆԵՐԻ ORԱՆԳՈԹՅՈՆՆԵՐԻ ԵՎ ԿԱՐԳԵՐ
անվավեր գաղտնաբառ ()
{
char customKey = customKeypad.getKey ();
եթե (customKey) // համոզված է, որ բանալին իսկապես սեղմված է, հավասար է (customKey! = NO_KEY)
{
Տվյալներ [data_count] = customKey; // char- ը պահել տվյալների զանգվածում
lcd.setCursor (տվյալների_հաշիվ, 1); // տեղափոխել կուրսորը ՝ յուրաքանչյուր նոր նշանը ցուցադրելու համար
lcd.print ("*"); // տպել նշանը նշված կուրսորի վրա
տվյալների_հաշիվ ++; // տվյալների զանգվածը ավելացրեք 1 -ով `նոր նշան պահելու համար, ինչպես նաև հետևեք մուտքագրված նշանների քանակին
}
եթե (data_count == Password_Lenght-1) // եթե զանգվածների ինդեքսը հավասար է ակնկալվող նշանների թվին, ապա տվյալները համեմատեք վարպետի հետ
{
lcd. հստակ ();
lcd.setCursor (0, 0);
lcd.print («Գաղտնաբառ է»);
եթե (! strcmp (Տվյալներ, Վարպետ)) // հավասար է (strcmp (Տվյալներ, Վարպետ) == 0)
{
lcd.print («Լավ»);
lcd. հստակ ();
Displayուցադրել = 1;
}
ուրիշ
lcd.print («Վատ»);
ուշացում (1000); // ավելացրել է 1 վայրկյան ուշացում ՝ համոզվելու համար, որ գաղտնաբառը ամբողջությամբ ցուցադրվում է էկրանին, նախքան այն մաքրվելը:
lcd. հստակ ();
clearData ();
lcd. հստակ ();
lcd.setCursor (0, 0);
lcd.print («Մուտքագրեք գաղտնաբառը»);
}
}
int TempMenu ()
{
Wire.beginTransmission (հասցե);
Wire.write (0);
Wire.endTransmission ();
Հաղորդալար. Խնդրում ենք (հասցե, 1);
իսկ (Wire.available () == 0);
int c = Wire.read ();
վերադարձ գ;
}
void clearData ()
{
իսկ (տվյալների_հաշիվ! = 0)
{// Սա կարող է օգտագործվել զանգվածի ցանկացած չափի համար, Տվյալներ [data_count--] = 0; // մաքուր զանգված նոր տվյալների համար
}
}
անվավեր StoreUser ()
{
int ext = 0;
int օգտվող;
char ch;
իսկ (! ext) {
lcd. հստակ ();
lcd.print («Մուտքագրեք օգտվողին»);
օգտվող = օգտվողներ + 1;
lcd.print (օգտվող);
int x = 0;
մինչդեռ (! x) {
համար (int i = 0; i <10; i ++) {
ch = customKeypad.waitForKey ();
lcd.setCursor (i, 1);
lcd.print (ch);
userNum [օգտվող - 1] = ch;
}
ուշացում (500);
lcd. հստակ ();
lcd.print («Շարունակել»);
lcd.setCursor (0, 1);
lcd.print ("* այո # ոչ");
ch = customKeypad.waitForKey ();
եթե (ch == '*') {
x = 1;
}
եթե (ch == '#') {
x = 1;
ext = 1;
lcd. հստակ ();
Displayուցադրել = 1;
}
}
օգտվողներ ++;
}
}
դատարկ DisplayUsers ()
{
lcd. հստակ ();
համար (int i = 0; i <օգտվողներ; i ++) {
lcd.print («Պահված օգտվող»);
lcd.print (i + 1);
համար (int u = 0; u <10; u ++) {
lcd.setCursor (u, 1);
lcd.print (userNum [u]);
}
ուշացում (2000);
lcd. հստակ ();
Displayուցադրել = 1;
}
}
Քայլ 4: Օգտագործողի ուղեցույց
1. Նախագիծը միացնելուց հետո կհայտնվի բեռնման կամ ողջույնի էկրան:
2. «Մուտքագրեք գաղտնաբառ» էկրանը կհայտնվի, այս էկրանը թույլ է տալիս մուտքագրել 4 նիշ, տառ կամ թիվ, ճիշտ գաղտնաբառը ՝ 5466, սա ձեզ հնարավորություն կտա մուտք գործել հիմնական ընտրացանկ:
3. passwordիշտ գաղտնաբառ մուտքագրելիս կհայտնվի հիմնական ընտրացանկը `առկա տարբեր գործառույթներում նավարկելու 4 հնարավոր տարբերակով:
· A - Մուտքագրեք օգտվողի բջջային հեռախոսահամարները:
o Մուտքագրեք 10 թվանշան ՝ օգտվողին համակարգում պահելու համար
o 10 թվանշան մուտքագրելուց հետո սեղմեք « *» ՝ ավելի շատ օգտվողներ ավելացնելու համար, կամ սեղմեք «#» ՝ հիմնական ընտրացանկ վերադառնալու համար:
· B - savedուցադրել պահպանված օգտվողներին
o Օգտվողները ոլորում են էկրանի վրայով, դրանք ցուցադրվում են յուրաքանչյուրը 3 վայրկյան, բոլոր օգտվողներին ցուցադրվելուն պես էջը կփակվի և կվերադառնա հիմնական ընտրացանկ:
o Եթե ընտրացանկի A տարբերակում ոչ մի օգտվող չի ավելացվել, այն կցուցադրի «ՉԻ ՓՐԿՎԱ US Օգտվողներ»:
· C - ցուցադրում է կենդանի ջերմաստիճանը
o Սեղմեք « *» ՝ հիմնական մենյու վերադառնալու համար
· D - Displayուցադրել կարճ տեքստ
o Disուցադրում է ստեղծողի անունը և թեման, որի համար այն կազմվել է ամսաթվով:
Խորհուրդ ենք տալիս:
Միայն Arduino- ի միջոցով ֆիլմերից տարբեր հնչյունների ստեղծում. 3 քայլ
Միայն Arduino- ի միջոցով ֆիլմերից տարբեր հնչյունների ստեղծում. As-salamu alaykum! Ես ուզում էի առաջացնել տարբեր ձայներ, ինչպիսիք են գիշատիչը, optimus prime & իշամեղու տրանսֆորմատորային ֆիլմից: Իրականում ես նայում էի " դարբին " տեսանյութ գիշատիչ սաղավարտ պատրաստելու մասին
Arduino Odometer- ի ստեղծում - մաս I: 4 քայլ
Արդուինո հեռաչափի ստեղծում - մաս 1: Հեծանվորդների և հեծանիվ վարող օգտվողների համար բավականին տարածված է, որ նրանք պետք է չափեն իրենց արագությունը և անցած տարածությունը: Դրա համար մեզ պետք է մի սարք, որը հայտնի է որպես հեռաչափ: Հեռաչափը պատասխանատու է այդ փոփոխականների չափման և այս տեղեկատվության փոխանցման համար
Տարբեր տեսակների տոնների ստեղծում ՝ օգտագործելով մաթեմատիկական հավասարումներ (MathsMusic) Arduino: 5 քայլ
Մաթեմատիկական հավասարումների (MathsMusic) միջոցով տարբեր տեսակների ստեղծում Arduino. Նախագծի նկարագրություն. Սկսվել է նոր ճանապարհորդություն, որտեղ գաղափարները կարող են հեշտությամբ իրականացվել բաց կոդով համայնքի միջոցով (Շնորհիվ Arduino): Այսպիսով, ահա մի միջոց · Նայեք ձեր շուրջը և դիտեք ձեր շրջապատը · Բացահայտեք խնդիրներ, որոնք պետք է լինեն
Arduino տոնային գեներատոր `առանց գրադարանի կամ սերիական գործառույթների (ընդհատումներով). 10 քայլ
Arduino Tone Generator Առանց գրադարանի կամ սերիական գործառույթների (ընդհատումներով). Սա այն չէ, ինչին սովորաբար սովորեցնելու հնարավորություն ունեի, ես նախընտրում եմ իմ մետաղագործությունը, բայց քանի որ էլեկտրատեխնիկայի ուսանող եմ և պետք է դասեր անցնեմ միկրոկոնտրոլերների վրա ( Ներկառուցված համակարգերի ձևավորում), ես մտածեցի, որ իմ ձեռնարկներից մեկի վրա ուսանելի կդարձնեմ
SOLIDWORKS- ի մի քանի հիմնական գործառույթների սովորում. Վեց կողմ զառ պատրաստելը. 22 քայլ
SOLIDWORKS- ի մի քանի հիմնական գործառույթներ սովորելը. Վեց կողմի զառեր պատրաստելը. Այս հրահանգը կանցնի ձեզ այն քայլերով, որոնք անհրաժեշտ են վեց կողքի զառերի եռաչափ մոդել պատրաստելու համար: Մոդելը նախագծելիս դուք նկարելու եք ինքնաթիռների և մակերեսների վրա, արտամղելու և կտրելու 3D ձևեր և ֆիլեի ներքին և արտաքին անկյուններ կամ 3D մոդել: Աշխատանքի ժամանակ