Мазмұны:

Бір түйреуіш 4 × 4 пернетақта: 10 қадам
Бір түйреуіш 4 × 4 пернетақта: 10 қадам

Бейне: Бір түйреуіш 4 × 4 пернетақта: 10 қадам

Бейне: Бір түйреуіш 4 × 4 пернетақта: 10 қадам
Бейне: Turn ON and OFF LED using mobile App using Bluetooth on ESP32 board 2024, Қараша
Anonim
Бір түйреуіш 4 × 4 пернетақта
Бір түйреуіш 4 × 4 пернетақта

Мен пернетақтаны көрген сайын, ол көптеген түйреуіштермен бірге келеді, бұл сіздің Arduino түйреуіштеріңіздің үлкен шығыны, сондықтан біз бір ғана түйреуішпен пернетақтаны басқара аламыз ба?. Жауабы осында.

1 -қадам: материалдар туралы есеп

Материалдық есеп
Материалдық есеп

Жабдық:

01 Arduino UNO

02 Науалар тақтасы

01 СК I2C бар

16 Түймешіктерді басыңыз

04 резисторы 1,5 кОм

04 резисторлары 620 Ω

04 резисторлары 220 Ω

08 резисторы 100 Ω

01 резистор 1 кОм

07 Өтпелі сымдар

Бағдарламалық қамтамасыз ету:

Сіздің компьютеріңізге Arduino IDE орнатылған

2 -қадам: схемалық және циклит

Схемалық және циклит
Схемалық және циклит
Схемалық және циклит
Схемалық және циклит

Барлық идея бізде Жерге тігінен оң сыммен және көлденеңінен басқа сыммен (түйме сымы) және 1,5 кОм, 620Ω, 220Ω және 100Ω резисторлармен бекітілген 4*4 түймешіктерінің матрицасы бар. 4 жол схемада көрсетілгендей 100Ω төрт резистормен қосылады.

Сіз түймені басқан сайын тізбекті жабасыз және ток басқа жолдан және резисторлардың басқа тізбегінен өтеді, сондықтан A0 түйреуіші әр түйме үшін басқа аналогты оқиды. Сізге қажет нәрсе - кодтау.

3 -қадам: Кодекс

#қосу

#қосу

LiquidCrystal_I2C LCD (0x3f, 20, 4);

int батырмасы = A0;

int readvalue;

жарамсыз орнату ()

{

Serial.begin (9600);

lcd.begin ();

pinMode (Түйме, INPUT);

lcd.backlight ();

lcd.print («Сәлем әлемі»);

кешіктіру (2000);

lcd.clear ();

lcd.print («Бір істікшелі 4*4 пернетақта»);

кешіктіру (2000); }

бос цикл ()

{

readvalue = analogRead (Түйме);

Serial.println (оқу мәні);

if (readvalue == 852) {lcd.clear (); lcd.print («A»);}

else {if (readvalue == 763) {lcd.clear (); lcd.print («B»);}

else {if (readvalue == 685) {lcd.clear (); lcd.print («C»);}

else {if (readvalue == 965) {lcd.clear (); lcd.print («D»);}

else {if (readvalue == 565) {lcd.clear (); lcd.print («9»);}

else {if (readvalue == 614) {lcd.clear (); lcd.print («6»);}

else {if (readvalue == 360) {lcd.clear (); lcd.print («3»);}

else {if (readvalue == 335) {lcd.clear (); lcd.print («#»);}

else {if (readvalue == 396) {lcd.clear (); lcd.print («8»);}

else {if (readvalue == 349) {lcd.clear (); lcd.print («5»);}

else {if (readvalue == 235) {lcd.clear (); lcd.print («2»);}

else {if (readvalue == 279) {lcd.clear (); lcd.print («0»);}

else {if (readvalue == 452) {lcd.clear (); lcd.print («7»);}

else {if (readvalue == 271) {lcd.clear (); lcd.print («4»);}

else {if (readvalue == 170) {lcd.clear (); lcd.print («1»);}

else {if (readvalue == 92) {lcd.clear (); lcd.print («*»);} else {}}}}}}}}}}}}}}}}

4 -қадам: Құндылықтарды түзету

Құндылықтарды түзету
Құндылықтарды түзету

Сіз сериялық мониторды ашқанда, ол 1023 мәнін көрсетеді, егер сіз түймені бассаңыз, ол сізге басқа мән береді, сіз бұл мәндерді қабылдап, кодқа кейбір өзгерістер енгізуіңіз керек.

5 -қадам: Сын мен шолудан кейінгі жоба

Сын мен шолудан кейінгі жоба
Сын мен шолудан кейінгі жоба

Біз барлығымыз өз білімімізді үйренуге және бөлісуге келгенімізге күмән жоқ, қоғамдастықтың кейбір адамдарының өте пайдалы пікірлерінің арқасында мен өз жобама кейбір түзетулер мен жетілдірулер енгізуді шештім:

Аппараттық құралдар:

Нан тақтасындағы нашар байланыс мәселесін болдырмау үшін мен барлық компоненттерді ПХД -да дәнекерлеуді шештім.

Код:

Менің досым маған бағдарламалық жасақтаманы жоюды қолдануға кеңес берді және бұл бағдарламаны оқуға біраз уақыт кетіру үшін цикл (мысалы, «for» циклы), бұл көп оқылымды білдіреді (менің емтиханымда 500), бірақ қажет тек соңғысы.

for (i = 1; i <= 500; i ++) {// тек 500 -ші аналогты оқуды алыңыз

value = analogRead (Button);} // бұл нашар оқудан аулақ болуға уақыт бөлуге көмектеседі

Оның арқасында басқа дос маған «оқу мәнін» мәндер диапазонымен салыстыруға кеңес берді, себебі «оқу мәні» бір батырманы басу үшін көп мәнді алады. «А» мысалы: 849, 850, 851 852, 853, 854, 855 сондықтан бұл 7 мәндер диапазоны: шекті мән (852) және 3 мән солға және оңға. мұнда біз не істеуіміз керек - «readvalue» мен «852» арасындағы айырмашылықтың абсолюттік мәнін «3» -ке салыстыру.

if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print («A»);}

6 -қадам: Сатудан кейін

Кейбір сатылым жұмыстарынан кейін
Кейбір сатылым жұмыстарынан кейін
Кейбір сатылым жұмыстарынан кейін
Кейбір сатылым жұмыстарынан кейін
Кейбір сатылым жұмыстарынан кейін
Кейбір сатылым жұмыстарынан кейін

7 -қадам: Ақиқат сәті

Көріп отырғаныңыздай, бағдарлама кейде түймелерді шатастырады, бірақ ол әлі де жұмыс істейді, теориялық тұрғыда схемада қате жоқ, бірақ кодты калибрлеу қажет.

8 -қадам: Соңы

Сізге бұл жоба ұнады деп үміттенемін және сіз оны жасауға тырысасыз, мүмкін сіз маған қарағанда жақсы жасай аласыз.

Сұрақтарыңыз болса, сұраңыз, түсініктеме қалдырыңыз, егер сізге ұнаса, маған дауыс беруді ұмытпаңыз.

Ұсынылған: