Съдържание:
- Стъпка 1: Сметка на материалите
- Стъпка 2: Схеми и Cicruit
- Стъпка 3: Кодът
- Стъпка 4: Корекция на стойностите
- Стъпка 5: Проект след критика и преглед
- Стъпка 6: След известна работа по запояване
- Стъпка 7: Моментът на истината
- Стъпка 8: Краят
Видео: Клавиатура с един щифт 4 × 4: 10 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Всеки път, когато видя клавиатура, тя идва с много щифтове, това е голяма загуба на вашите щифтове на Arduino, така че можем ли да пуснем клавиатура с един и само един щифт?. Отговорът е тук.
Стъпка 1: Сметка на материалите
Хардуер:
01 Arduino UNO
02 Бордове
01 LCD с I2C
16 бутони
04 резистори 1,5 kΩ
04 резистори 620 Ω
04 резистори 220 Ω
08 резистори 100 Ω
01 резистор 1 kΩ
07 Кабелни проводници
Софтуер:
Arduino IDE инсталиран на вашия компютър
Стъпка 2: Схеми и Cicruit
Цялата идея е, че имаме 4*4 матрица от бутони, свързани вертикално към земята от десния проводник и хоризонтално от другия проводник (проводника на бутона) и резистори от 1,5 kΩ, 620Ω, 220Ω и 100Ω, краищата на четирите реда са свързани с четири 100Ω резистора, както е показано на схемата.
Всеки път, когато натиснете бутон, затваряте веригата и токът преминава по различен път и различна верига от резистори, поради което щифт A0 получава различно аналогово четене за всеки бутон. Всичко, от което се нуждаете сега, е кодирането.
Стъпка 3: Кодът
#включва
#включва
LiquidCrystal_I2C LCD (0x3f, 20, 4);
int Бутон = A0;
int readvalue;
void setup ()
{
Serial.begin (9600);
lcd.begin ();
pinMode (Бутон, ВХОД);
lcd.backlight ();
lcd.print ("Здравей свят");
забавяне (2000);
lcd.clear ();
lcd.print ("Един щифт 4*4 клавиатура");
забавяне (2000); }
void loop ()
{
readvalue = analogRead (Бутон);
Serial.println (readvalue);
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: Проект след критика и преглед
Няма съмнение, че всички сме тук, за да се учим и споделяме знанията си, благодарение на някои коментари, оставени от някои хора от общността, които бяха много полезни, реших да направя някои корекции и подобрения в моя проект:
Хардуерът:
Реших да запоя всички компоненти в печатна платка, за да избегна проблема с лошата връзка в макетите.
Кодът:
Един приятел ме посъветва да използвам софтуер за отстраняване на проблеми и това е просто цикъл (например "за" цикъл), за да накара програмата да отнеме известно време, за да избере четене, това означава, че прави много четения (500 в моя изпит), но отнема само последната.
for (i = 1; i <= 500; i ++) {// вземете само 500 -ия аналогов прочит
value = analogRead (Button);} // това помага да се отдели известно време и да се избегнат лоши показания
Друг приятел благодарение на него ме посъветва да сравня "readvalue" с диапазон от стойности, а не с един, защото "readvalue" приема много стойности за един и същ бутон. "A" например дава четене на: 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: Краят
Надявам се този проект да ви хареса и да се опитате да го направите, може би ще се справите по -добре от мен.
Попитайте ме, ако имате въпроси, оставете коментари и не забравяйте да гласувате за мен, ако това ви харесва.
Препоръчано:
Как да прочетете множество аналогови стойности, използвайки един аналогов щифт: 6 стъпки (със снимки)
Как да прочетете множество аналогови стойности с помощта на един аналогов щифт: В този урок ще ви покажа как да четете множество аналогови стойности, използвайки само един аналогов входен щифт
Включена верига за изключване с UC. Бутон с едно натискане. Един щифт. Дискретен компонент .: 5 стъпки
Включена верига за изключване с UC. Бутон с едно натискане. Един щифт. Дискретен компонент.: Здравейте на всички, търсех верига за включване/изключване в мрежата. Всичко, което намерих, не беше това, което търсех. Говорих си сам, задължително има начин за това. Това ми беше необходимо. -Само един бутон за включване и изключване.-Трябва да използвам само
Ръководство за използване на Raspberry Pi с клавиатура с един щифт: 9 стъпки
Клавиатура с един щифт Raspberry Pi Ръководство за използване: ОТКАЗ ОТ ОТГОВОРНОСТ: ТОВА Е РЪКОВОДСТВО ЗА УПОТРЕБА ЗА ОТВОРЕН ИЗТОЧНИК ПРОДУКТ: ЕДИНИЧНАТА КЛАВИАТУРА. ТОВА НЕ Е ПРОЕКТ „Направи си сам“. АКО ИСКАТЕ ДА СЕ НАПРАВИТЕ ДОСКИТЕ, ФАЙЛОВЕТЕ НА ОРЛА МОЖЕ ДА СЕ НАМЕРАТ В КРАЯ НА УЧЕБНИКА. Какво представлява клавиатурата с един щифт? Клавиатура с един щифт
100+ превключвателя в един щифт на Arduino: 6 стъпки (със снимки)
100+ превключвателя в един щифт на Arduino: Въведение Изчерпали ли сте входните щифтове? Не се притеснявайте, тук има решение без регистри за смяна. В това видео ще научим за свързването на повече от 100 превключвателя към един щифт на Arduino
Свързване на няколко бутона към един щифт на Arduino: 4 стъпки
Свързване на множество бутони към един щифт на Arduino: Здравейте всички, Когато вашите проекти на Arduino са надраснали мигащи светодиоди, може да се окажете в нужда от някои допълнителни щифтове. Ще ви покажа един трик, който можете да използвате, където можете да имате няколко бутона, всички свързани към един и същ аналогов щифт