
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48

Բարեւ Ձեզ! Սա Arduino Uno- ի և TFT LCD վահանի միջոցով սենսորային հաշվիչ ստեղծելու նախագիծ է: Ես մշակեցի իմ տնային ծրագրավորման դասի հայեցակարգը, և այս նախագիծը կառուցելու փորձը շատ հետաքրքիր էր: Այս հաշվիչը կարող է կատարել չորս պարզ մաթեմատիկական գործողություններ (գումարում, հանում, բազմապատկում և բաժանում): Այն նաև ցուցադրում է մինչև երկու տասնորդական կետ `դրանք ունեցող բաժանման պատասխանների համար: Եկեք սուզվենք անմիջապես: Այս նախագծի մատակարարումները թվարկված են ստորև:
Պարագաներ
- Արդուինո Ունո
-2.4 TFT LCD Shield (ահա որտեղից եմ այն գնել ՝
- USB A- ից B մալուխ (լար Arduino- ին համակարգչին միացնելու համար)
- Տեղադրված է Arduino IDE համակարգիչ
- Դուք նաև պետք է ներբեռնեք երկու գրադարան ՝ MCUFRIEND_kbv և Touchscreen: Առաջինը կարող եք գտնել github- ում (հղում ՝ https://github.com/prenticedavid/MCUFRIEND_kbv) կամ կարող եք օգտագործել գրադարանի zip ֆայլը, որը ես ներառել եմ ստորև: Երկրորդը տեղադրման համար գտնվում է Arduino գրադարանի մենեջերում:
Քայլ 1: Սարքավորման միացումներ



Սենսորային վահանի միացումը Arduino Uno- ին պարզ և արագ է: Մնում է միայն վահանի ամենացածր կապում շարել Arduino- ի ամենացածր կապումներով և վահանը քորոցների մեջ մղել: Վերին 5 Վ -ի քորոցը և հոսանքի կողմում չպիտակված քորոցը չպետք է ունենան վահանի կապիչներ, տախտակի մյուս կողմում SCL և SDA պիտակներով նույն պարամետրերի դեպքում: Այժմ, մենք պատրաստ ենք ծածկագրել:
Քայլ 2: Կոդ. Գլոբալ սահմանումներ և կարգավորում
#ներառում
MCUFRIEND_kbv tft; // UNO վահանների համար, ամեն դեպքում, լարված:
#ներառում
#սահմանել YP A3- ը
#սահմանի XM A2
#սահմանել YM 9
#սահմանեք XP 8 -ը
TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);
#սահմանել ՄԻՆՊՐՈՍՈԹՅՈՆ 10
Սա կոդի սկիզբն է, որտեղ մենք ներառում ենք գրադարաններ (MCUFRIEND_kbv & Touchscreen), սահմանում ենք X և Y կապում, կարգավորում ենք սենսորային էկրանի պարամետրերը և սահմանում նվազագույն ճնշումը, որն անհրաժեշտ է Arduino- ին `օգտվողի մամուլ գրանցելու համար:
int ID;
int user_selection;
բոց փրկված_թիվ = 0;
float term1;
int op_num;
լողացող արդյունք;
int cursorLocX = 5;
int cursorLocY = 20;
Տեղադրումից անմիջապես առաջ մենք պետք է որոշ գլոբալ փոփոխականներ ստեղծենք: ID- ն օգնում է գործարկել սենսորային էկրանը: user_selection- ը պահում է մի շարք, որը համապատասխանում է այն ստեղնին, որն ընտրում է օգտվողը սենսորային էկրանին սեղմելիս: save_number- ը այն փոփոխականն է, որը մենք տպում ենք էկրանին օգտվողի մուտքից հետո (այս մասին ավելին ՝ օղակում): Այն բոց է, այնպես որ կարող է պահել տասնորդական թվեր, ինչպես նաև ամբողջ թվեր: term1- ը այն փոփոխականն է, որում հավասարման առաջին թիվը պահվում է օպերանդի ընտրությունից հետո: op_num- ը օպերանդը պահում է որպես թիվ (1 -ը ՝ գումարման, 2 -ը ՝ հանման, 3 -ը ՝ բազմապատկման և 4 -ը ՝ բաժանման համար): արդյունքը այն փոփոխականն է, որը տպվում է էկրանին այն բանից հետո, երբ օգտատերը սեղմել է հավասարության նշանը: Այն նաեւ բոց է: cursorLocX- ը և cursorLocY- ը սենսորային էկրանի քարտեզագրման կետերն են, որտեղ կուրսորը բազմապատկված է (այն գտնվում է վերևի մոխրագույն բարում, այլապես հայտնի է որպես արդյունքների դաշտ):
void setup () {
tft.reset ();
ID = tft.readID ();
tft.begin (ID);
tft.setRotation (0);
tft.fillScreen (TFT_DARKGREY);
քառակուսիներ ();
թվեր ();
tft.setTextSize (3);
tft.setTextColor (TFT_BLUE, TFT_DARKGREY);
}
Մեր կարգաբերման գործառույթը նախ պարունակում է հպման էկրանի վահանի նախաստորագրում (տողեր 1-3): Վահանի կողմնորոշումը սահմանվում է tft.setRotation () հրամանի միջոցով, 0 -ն ուղղահայաց է: Ամբողջ էկրանը մուգ մոխրագույն է tft.fillScreen () հրամանով, որը մենք կգրենք վերևում (բացառությամբ արդյունքների դաշտի): Քառակուսիներ () և թվեր () գործառույթները գծում են հաշվիչի քառակուսիները, սև ու սպիտակ քառակուսիները գունավորում են շախմատային տախտակի տեսքով, իսկ քառակուսիների վրա կապույտ գույնով գրում թվեր/օպերանդներ: Մենք հաջորդ քայլին կհասնենք նրանց: Tft.setTextSize () հրամանը արդյունքների դաշտի տեքստի չափը սահմանում է 3, որը միջին տառատեսակ է: Tft.setTextColor () հրամանը արդյունքների դաշտի տեքստի գույնը սահմանում է կապույտ, որը գրված է մուգ մոխրագույն դաշտի վրա:
Քայլ 3: Կոդ. Օղակ
void loop () {numberSelect ();
ուշացում (100);
եթե (user_selection == 16) {
;
} ուրիշ {
եթե (օգտվողի ընտրություն <10) {
փրկված_թիվ = պահված_թիվ * 10 + օգտվողի_ընտրություն;
tft.setCursor (cursorLocX, cursorLocY);
tft.print (պահված_թիվ);
} else if (user_selection> 10) {
անջատիչ (օգտվողի_ընտրություն) {
գործ 11:
op_num = 1;
tft.setCursor (cursorLocX, cursorLocY);
tft.print ("+");
տերմին 1 = պահված_թիվ;
պահված_թիվ = 0;
ընդմիջում;
դեպք 12:
op_num = 2;
tft.setCursor (cursorLocX, cursorLocY);
tft.print ("-");
տերմին 1 = պահված_թիվ;
պահված_թիվ = 0;
ընդմիջում;
գործ 13:
op_num = 3;
tft.setCursor (cursorLocX, cursorLocY);
tft.print ("X");
տերմին 1 = պահված_թիվ;
խնայված_թիվ = 0;
ընդմիջում;
գործ 14:
op_num = 4;
tft.setCursor (cursorLocX, cursorLocY);
tft.print ("/");
տերմին 1 = պահված_թիվ;
խնայված_թիվ = 0;
ընդմիջում;
գործ 15:
պահված_թիվ = 0;
տերմին 1 = 0;
op_num = 0;
tft.setCursor (cursorLocX, cursorLocY);
tft.print ("");
ընդմիջում;
}
tft.setCursor (cursorLocX, cursorLocY);
Սա շատ բան է ծամելու, այնպես որ ես կբացատրեմ վերը նշվածը: Մենք սկսում ենք կանչել numberSelect () ֆունկցիան, որը մի շարք է վերագրում սենսորային էկրանի յուրաքանչյուր քառակուսուն: Երբ օգտվողը սեղմում է այդ քառակուսիներից մեկը, գործառույթը user_selection փոփոխականը դնում է քառակուսի թվի վրա: Առաջին if հայտարարությունը պետք է անցնի միայն օղակով, եթե օգտագործողի վավեր ընտրություն է կատարվել: Եթե այդպես է, հաջորդ if հայտարարությունը հարցնում է, թե արդյոք user_selection- ում պահպանված է 10-ից փոքր թիվ (0-9 համարները): Եթե դա այդպես լինի, պահված_թիվը բազմապատկվում է 10 -ով, և օգտվողի ընտրության թիվը ավելացվում է պահված_թվին, որը տպված է սենսորային էկրանի արդյունքների դաշտում: Եթե դա այդպես չէ, հաջորդ if հայտարարությունը հարցնում է, թե արդյոք user_selection- ում պահպանված է 10 -ից ավելի մեծ թիվ (օպերանդի համարները ՝ 11 -ը +, 12 -ը -, 13 -ը X- ի համար, 14 -ը /և 15 -ը `հստակ էկրանի քառակուսու համար:): Անջատիչի գործառույթը հոգում է յուրաքանչյուր դեպքի մասին (որոշվում է օգտագործողի_ընտրությամբ): Op_num փոփոխականին տրվում է մի շարք, որը համապատասխանում է ընտրված օպերանդին (1 + -ի համար, 2 -ի համար, 3 -ը X- ի համար, և 4 -ը ` /): Պահված_թվաքանակի արժեքը պահվում է փոփոխական տերմինի մեջ 1 այնպես, որ պահված_թվային փոփոխականը կարող է օգտագործվել հավասարման երկրորդ կեսի համար: Օպերանդի խորհրդանիշը տպվում է էկրանին `արդյունքների դաշտում ցանկացած թվեր ջնջելու հետ միասին: Միակ բացառությունը մաքուր էկրանի քառակուսին է, որը վերականգնում է հաշվարկման բոլոր փոփոխականները և մաքրում արդյունքների դաշտը դրա վրա եղած որևէ բանից:
} ուրիշ {
անջատիչ (op_num) {
դեպք 1:
արդյունք = տերմին 1 + պահված_թիվ;
tft.setCursor (cursorLocX, cursorLocY);
tft.print (կրկնակի (արդյունք));
ընդմիջում;
դեպք 2:
արդյունք = տերմին 1 - պահված_թիվ;
tft.setCursor (cursorLocX, cursorLocY);
tft.print (կրկնակի (արդյունք));
ընդմիջում;
դեպք 3:
արդյունք = տերմին 1 * պահված_թիվ;
tft.setCursor (cursorLocX, cursorLocY);
tft.print (կրկնակի (արդյունք));
ընդմիջում;
դեպք 4:
արդյունք = բոց (տերմին 1) / բոց (պահված_թիվ);
tft.setCursor (cursorLocX, cursorLocY);
tft.print (արդյունք);
ընդմիջում;
}
tft.setCursor (cursorLocX, cursorLocY);
փրկված_թիվ = արդյունք;
տերմին 1 = 0;
op_num = 0;
ուշացում (1000);
}
}
}
Օղակի վերջին մասը վերաբերում է օգտվողի ՝ հավասարության նշանը ընտրելու իրադարձությանը (user_selection == 10): Մեկ այլ անջատիչ գործառույթ աշխատում է չորս մաթեմատիկական գործառույթների միջոցով (որոշվում է op_num- ով): Լրացման գործը (դեպք 1) ավելացնում է term1- ը և պահված_թիվը միասին և թիվը պահում արդյունքի փոփոխականի մեջ: Արդյունքը տպվում է արդյունքների դաշտում կրկնակի: Հանումի գործը (դեպք 2) հանում է պահված_թիվը տերմինից 1 -ից և թիվը պահում արդյունքի փոփոխականի մեջ: Արդյունքը տպվում է արդյունքների դաշտում կրկնակի տեսքով: Բազմապատկման գործը (դեպք 3) բազմապատկում է տերմինը 1 պահված_թվով և թիվը պահում արդյունքի փոփոխականի մեջ: Արդյունքը տպվում է արդյունքների դաշտում կրկնակի: Բաժանման գործը (դեպք 4) կիսում է տերմինը 1 խնայված_թվով միասին և թիվը պահում արդյունքի փոփոխականի մեջ: Արդյունքը տպվում է արդյունքների դաշտում որպես բոց (քանի որ բաժանման պատասխանները կարող են լինել տասնորդական թվեր): Թիվը, օպերանդը կամ արդյունքը էկրանին տպվելուց հետո կուրսորը զրոյացվում է, պահված_թիվը դրվում է նախորդ արդյունքի վրա, իսկ տերմինը 1 & op_num- ը վերակայվում է:
Մի քանի նշում. Օգտագործողը չի կարող տասնորդական թվեր մուտքագրել հաշվիչ `տասնորդական կետի քառակուսի բացակայության պատճառով: Բացի այդ, օգտագործողը կարող է միաժամանակ կատարել միայն մեկ հավասարություն: Դուք չեք կարող հաշվարկել արդյունքը, այնուհետև ավելացնել/հանել/բազմապատկել/բաժանել այդ արդյունքը: NumberSelect () գործառույթում կա մի գործառույթ, որը մաքրում է էկրանը արդյունքը տպելուց հետո, եթե օգտագործողը սեղմել է մեկ այլ քառակուսի:
Քայլ 4: Կոդ. Քառակուսիների գործառույթ
դատարկ քառակուսիներ () {
// Սև և սպիտակ քառակուսիները փոխարինվում են յուրաքանչյուր տողում, և առաջին և երրորդ տողերն ունեն հակառակ օրինաչափություն, քան երկրորդ և չորրորդ տողերը
tft.fillRect (0, 60, 60, 65, TFT_BLACK); // սկսվում է քառակուսիների առաջին շարքը ՝ սևից սպիտակ tft.fillRect (60, 60, 60, 65, TFT_WHITE);
tft.fillRect (120, 60, 60, 65, TFT_BLACK);
tft.fillRect (180, 60, 60, 65, TFT_WHITE); // ավարտվում է քառակուսիների առաջին շարքը
tft.fillRect (0, 125, 60, 65, TFT_WHITE); // սկսվում է քառակուսիների երկրորդ շարքը ՝ սպիտակից մինչև սև tft.fillRect (60, 125, 60, 65, TFT_BLACK);
tft.fillRect (120, 125, 60, 65, TFT_WHITE);
tft.fillRect (180, 125, 60, 65, TFT_BLACK); // ավարտվում է քառակուսիների երկրորդ շարքը
tft.fillRect (0, 190, 60, 65, TFT_BLACK); // սկսվում է քառակուսիների երրորդ շարքը ՝ սևից սպիտակ tft.fillRect (60, 190, 60, 65, TFT_WHITE);
tft.fillRect (120, 190, 60, 65, TFT_BLACK);
tft.fillRect (180, 190, 60, 65, TFT_WHITE); // ավարտվում է քառակուսիների երրորդ շարքը
tft.fillRect (0, 255, 60, 65, TFT_WHITE); // սկսվում է քառակուսիների չորրորդ շարքը ՝ սպիտակից մինչև սև tft.fillRect (60, 255, 60, 65, TFT_BLACK);
tft.fillRect (120, 255, 60, 65, TFT_WHITE);
tft.fillRect (180, 255, 60, 65, TFT_BLACK); // ավարտվում է քառակուսիների չորրորդ շարքը
}
Քառակուսիների () գործառույթը բավականին պարզ է: Tft.fillRect (X1, Y1, X2, Y2, TFT_COLOR) հրամանը նկարում է ուղղանկյուն ՝ ըստ իրեն փոխանցված պարամետրերի, որոնք են x և y- ի առաջին դիրքերը, x և y- ի երկրորդ դիրքերը և գույնը, որով լցված է ուղղանկյունը:. Այս գործառույթը գծում է քառակուսիների բոլոր չորս շարքերը (տեխնիկապես ուղղանկյուններ) և յուրաքանչյուր քառակուսին լրացնում է իրեն փոխանցված գույնով:
Քայլ 5: Կոդ. Թվերի գործառույթ
դատարկ թվեր () {
tft.setTextColor (TFT_BLUE); // համարը/բնույթի գույնը սահմանում է կապույտ
tft.setTextSize (5); // թիվը/նիշի չափը սահմանում է 5
tft.setCursor (18, 75); // սահմանում է կուրսորը թվերի/նիշերի առաջին տողի համար
tft.print ("7 8 9 /"); // տպում է թվերի/նիշերի առաջին տողը
tft.setCursor (18, 140); // սահմանում է կուրսորը թվերի/նիշերի երկրորդ տողի համար
tft.print («4 5 6 X»); // տպում է թվերի/նիշերի երկրորդ տողը
tft.setCursor (18, 205); // սահմանում է կուրսորը թվերի/նիշերի երրորդ տողի համար
tft.print ("1 2 3 -"); // տպում է թվերի/նիշերի երրորդ տողը
tft.setCursor (18, 270); // սահմանում է կուրսորը թվերի/նիշերի չորրորդ տողի համար
tft.print ("C 0 = +"); // տպում է թվերի/նիշերի չորրորդ տողը
}
Թվերի () գործառույթը նույնպես պարզ է: Առաջին երկու տողերում տեքստի չափը ավելի մեծ է, իսկ գույնը `կապույտ: Tft.setCursor () հրամանը կուրսորը դնում է յուրաքանչյուր տողի դիրքի վրա, որտեղից սկսվում է թվերի գրառումը: Այնուհետեւ tft.print () հրամանը տպում է թվերը/նիշերը քառակուսիների վրա:
Քայլ 6: Կոդը ՝ NumberSelect գործառույթը
դատարկ համար Ընտրել () {
TSPoint p = ts.getPoint ();
pinMode (XM, OUTPUT);
pinMode (YP, OUTPUT);
եթե (p.z> MINPRESSURE) {
p.x = քարտեզ (p.x, 250, 845, 0, 239);
p.y = քարտեզ (p.y, 245, 860, 0, 319);
եթե (արդյունք! = 0) {
արդյունք = 0;
պահված_թիվ = 0;
tft.print («Մաքուր արժեքներ»);
ուշացում (500);
tft.setCursor (cursorLocX, cursorLocY);
tft.print ("");
tft.setCursor (cursorLocX, cursorLocY);
}
NumberSelect () գործառույթը գործարկելու համար մենք ts.getPoint () հրամանի միջոցով դիպչում ենք էկրանի օգտագործողի մուտքը: Երբ այդ տվյալները հավաքվեն, մենք ստուգում ենք, թե արդյոք նվազագույն ճնշումը գերազանցվել է (կամ, այլ կերպ ասած, եթե օգտագործողը սեղմել է հպման էկրանին ինչ -որ տեղ): Եթե այդպես է, ապա x և y կոորդինատները քարտեզային կոորդինատներից քարտեզագրվում են դիպչող էկրանին հատուկ կոորդինատներին: (0, 0) սենսորային էկրանի վերին ձախ անկյունն է, որի առանցքը x- ով անցնում է, իսկ y առանցքը ՝ ներքև: Հաջորդ մասը ստուգում է ՝ արդյո՞ք արդյունքում պահպանված թիվ կա: Եթե կա, արդյունքը և պահված_թիվը վերակայվում են 0 -ի: «Մաքրել արժեքներ» հաղորդագրությունը տպվում է արդյունքների դաշտում, և էկրանը մաքրվում է կուրսորը հետ վերադարձնելով իր սկզբնական դիրքին:
եթե (էջ 60) {// քառակուսիների առաջին շարքը
եթե (p.x <60)
օգտվողի ընտրություն = 7;
հակառակ դեպքում (p.x <120)
օգտվողի ընտրություն = 8;
այլապես (p.x <180)
օգտվողի ընտրություն = 9;
այլ օգտվողի ընտրություն = 14;
} else if (p.y 125) {// քառակուսիների երկրորդ շարքը
եթե (p.x <60)
օգտվողի ընտրություն = 4;
այլապես, եթե (p.x <120)
օգտվողի ընտրություն = 5;
այլապես (p.x <180)
օգտվողի ընտրություն = 6;
այլ օգտվողի ընտրություն = 13;
} else if (էջ 190) {// քառակուսիների երրորդ շարքը
եթե (p.x <60)
օգտվողի_ընտրություն = 1;
հակառակ դեպքում (p.x <120)
օգտվողի_ընտրություն = 2;
այլապես (p.x <180)
օգտվողի_ընտրություն = 3;
այլ օգտվողի ընտրություն = 12;
} else if (p.y> 255) {// քառակուսիների չորրորդ շարքը
եթե (p.x <60)
օգտվողի_ընտրություն = 15;
այլապես, եթե (p.x <120)
օգտվողի ընտրություն = 0;
այլապես (p.x <180)
օգտվողի ընտրություն = 10;
այլ օգտվողի ընտրություն = 11;
}
} ուրիշ {
օգտվողի_ընտրություն = 16; // user_selection- ը 16 է (փոփոխական ոչինչ)
}
}
Սա այն մասն է, որը որոշում է, թե որ կոճակն է ընտրված: Սկսելով քառակուսիների վերին շարքից և ավարտելով ներքևի տողերով ՝ Arduino- ն փնտրում է այն տեղը, որտեղ իրականում սեղմված էր էկրանը: Այնուհետև քառակուսուն տալիս է մի թիվ և պահում է այդ թիվը user_selection- ում: 0-9 թվերը համապատասխանում են թվերի քառակուսիներին, 11-15 թվերը `օպերանդի քառակուսիներին և պարզ քառակուսուն, իսկ 10 թիվը` հավասարների նշանի քառակուսուն: Եթե քառակուսի չի ընտրվել, ապա user_selection- ը սահմանվում է 16, ինչը հանգեցնելու է, որ օղակը նորից սկսվի (տես օղակի գործառույթը):
Քայլ 7: Վայելեք ձեր ավարտված նախագիծը:
Ահա դուք ունեք այն: Այժմ դուք ունեք սենսորային հաշվիչ, որը կարող է գումարել, հանել, բազմապատկել և բաժանել: Այս նախագիծը փոխեց իմ մտածած հաշվիչի աշխատանքի ամբողջ ձևը: Երբ ես աշխատում էի այս նախագծի վրա, ես հիշում եմ, որ դասղեկիս դասարանում ասում էի. «Ես այլևս երբեք նույն կերպ չեմ նայի հաշվիչին»: Այն գործառույթները, որոնք դուք, որպես օգտվողի կարծիքով, հեշտ եք համարում, որոշ չափով դժվար են, երբ համակարգչի հետևում եք և փորձում եք ընդօրինակել ձեր գաղափարը: Հուսով եմ, որ ձեզ դուր եկավ նախագիծը, և ես հույս ունեմ, որ ձեր մտածելակերպը, թե ինչպես է աշխատում հաշվիչը, նույնպես փոխվել է:
Ահա ամբողջ ծածկագիրը `ձեր հարմարության համար: Այն լի է մեկնաբանություններով, այնպես որ, եթե խնդիրներ ունեք, նրանք պետք է ձեզ ցույց տան, թե ինչ է անում յուրաքանչյուր տող:
Խորհուրդ ենք տալիս:
Arduino Flappy Bird - Arduino 2.4 "TFT Touchscreen SPFD5408 Bird Game Project: 3 քայլ

Arduino Flappy Bird | Arduino 2.4 "TFT Touchscreen SPFD5408 Bird Game Project. Flappy Bird- ը շատ տարածված խաղ էր այնտեղ մի քանի տարի անց, և շատ մարդիկ այն ստեղծեցին իրենց ձևով, այնպես էլ ես: Սենսորային էկրան SPFD5408, ուստի եկեք սկսենք
Arduino TFT LCD Touchscreen Հաշվիչ `3 քայլ

Arduino TFT LCD Touchscreen Հաշվիչ. Ողջույն, տղերք, այս հրահանգում մենք կսովորենք, թե ինչպես հաշվիչ սարքել Arduino Uno- ի միջոցով 3.5 " TFT LCD սենսորային էկրան: Այսպիսով, մենք կգրենք ծածկագիր և կբեռնենք այն arduino- ում, որը կցուցադրի հաշվիչի ինտերֆեյսը էկրանին և չի
BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ. 12 քայլ (նկարներով)

BluBerriSix - TFT TouchScreen / Arduino ձեռնարկ. 2019 -ը RIM Blackberry 850 -ի 20 -ամյակն է: Կանադայի այս փոքրիկ գյուտը փոխեց աշխարհի հաղորդակցության ձևը: Այն վաղուց անցել է, բայց նրա ժառանգությունը շարունակվում է: Այս ուսանելի դասում դուք կսովորեք, թե ինչպես օգտագործել MCUfriend.com 2.4 " TFT- ի ցուցադրում
Ինչպես օգտագործել ստեղնաշարն ու LCD- ը Arduino- ով Arduino հաշվիչ պատրաստելու համար. 5 քայլ

Ինչպես օգտագործել ստեղնաշարն ու LCD- ը Arduino- ի հետ Arduino հաշվիչ պատրաստելու համար. Այս ձեռնարկում ես կկիսվեմ, թե ինչպես կարող եք օգտագործել 4x4 մատրիցային ստեղնաշար և 16x2 LCD Arduino- ի հետ և օգտագործել այն պարզ Arduino հաշվիչ պատրաստելու համար: Այսպիսով, եկեք սկսենք
Arduino Uno. Bitmap Animation ILI9341 TFT Touchscreen Display Shield With Visuino. 12 քայլ (նկարներով)

Arduino Uno. Bitmap Animation on ILI9341 TFT Touchscreen Display Shield With Visuino. ILI9341 based TFT Touchscreen Display Shields are very popular low cost Display Shields for Arduino. Visuino- ն նրանց աջակցում էր բավականին երկար ժամանակ, բայց ես երբեք առիթ չեմ ունեցել գրել դրանք օգտագործելու վերաբերյալ ձեռնարկ: Վերջերս, սակայն, քչերն էին հարցնում