Съдържание:
- Стъпка 1: Веригата
- Стъпка 2: Доказателство - Excel
- Стъпка 3: Програмиране на Arduino
- Стъпка 4: TinkerCAD схеми
- Стъпка 5: „Толкова дълго и благодаря за цялата риба“. (реф.1)
- Стъпка 6: Препратки
Видео: Използвайте 1 аналогов вход за 6 бутона за Arduino: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Често съм се чудил как мога да получа повече цифрови входове за моя Arduino. Наскоро ми хрумна, че трябва да мога да използвам един от аналоговите входове за въвеждане на множество цифрови входове. Направих бързо търсене и открих къде хората могат да направят това, но това позволява само едно натискане на бутон наведнъж. Искам да мога да имам комбинация от бутони, които да се натискат едновременно. Така че, с помощта на TINKERCAD КРЪГИ, се заех да направя това да се случи.
Защо бих искал едновременно натискане на бутони? Както е илюстрирано в дизайна на TinkerCad Circuits, той може да се използва за DIP превключватели за избор на различни режими в рамките на програмата.
Схемата, която измислих, използва източника на 5V, наличен от Arduino, и използва 7 резистора и 6 бутона или превключвателя.
Стъпка 1: Веригата
Arduino имат аналогови входове, които приемат вход от 0V до 5V. Този вход има 10-битова резолюция, което означава, че сигналът е разделен на 2^10 сегмента или 1024 броя. Въз основа на това най -многото, което някога бихме могли да въведем в аналогов вход, като същевременно позволяваме едновременното натискане, биха били 10 бутона към 1 аналогов вход. Но това не е съвършен свят. Има съпротивление в проводниците, шум от външни източници и несъвършена мощност. Така че, за да си дам много гъвкавост, планирах да проектирам това за 6 бутона. Това отчасти беше повлияно от факта, че TinkerCAD Circuits имаше 6-Switch DIP Switch обект, което би улеснило тестването.
Първата стъпка в моя дизайн беше да се уверя, че всеки бутон, когато се натисне поотделно, ще осигури уникално напрежение. Това изключи всички резистори да имат еднаква стойност. Следващата стъпка беше, че стойностите на съпротивлението, когато се добавят паралелно, не могат да имат същото съпротивление като всяка единична стойност на резистора. Когато резисторите са свързани паралелно, полученото съпротивление може да бъде изчислено чрез Rx = 1/[(1/R1)+(1/R2)]. Така че, ако R1 = 2000 и R2 = 1000, Rx = 667. Предполагах, че като удвоя размера на всеки резистор, няма да видя същата съпротива за нито една от комбинациите.
Така че моята верига до този момент трябваше да има 6 превключвателя, всеки със собствен резистор. Но има още един резистор, необходим за завършване на тази верига.
Последният резистор има 3 цели. Първо, той действа като Pull-Down резистор. Без резистора, когато няма натиснати бутони, веригата е непълна. Това би позволило напрежението на аналоговия вход на Arduino да изплува до всеки потенциал на напрежението. Издърпващ се резистор по същество дърпа напрежението до 0 V. Втората цел е да се ограничи токът на тази верига. Законът на Ом гласи, че V = IR или напрежение = ток, умножен по съпротивление. При даден източник на напрежение, по -големият резистор означава, че токът ще бъде по -малък. Така че, ако 5V сигнал беше приложен към 500ohm резистор, най -големият ток, който можем да видим, ще бъде 0.01A или 10mA. Третата цел е да осигури напрежение на сигнала. Общият ток, протичащ през последния резистор, ще бъде: i = 5V/Rtotal, където Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Въпреки това, включете само 1/Rx за всеки резистор, който е натиснал съответния бутон. От общия ток, напрежението, подадено към аналоговия вход, ще бъде i*Rlast или i*500.
Стъпка 2: Доказателство - Excel
Най -бързият и лесен начин да докажа, че ще получа уникални съпротивления и по този начин уникални напрежения с тази схема беше да използвам възможностите на Excel.
Настроих всички възможни комбинации от входове за превключване и ги организирах последователно, следвайки двоични модели. Стойност "1" показва, че превключвателят е включен, празно означава, че е изключен. В горната част на електронната таблица поставям стойностите на съпротивлението за всеки превключвател и за падащия резистор. След това изчислих еквивалентното съпротивление за всяка от комбинациите, с изключение на случаите, когато всички резистори са изключени, тъй като тези резистори няма да повлияят, без да имат захранващ източник. За да направя изчисленията си лесни, за да мога да копирам и поставям във всяка комбинация, включих всички комбинации в изчислението, като умножа всяка стойност на превключвателя (0 или 1) по нейната стойност на обърнато съпротивление. Това премахва съпротивлението му от изчислението, ако превключвателят е бил изключен. Полученото уравнение може да се види в изображението на електронната таблица, но Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Използвайки Itotal = 5V / Req, ние определяме общия ток през веригата. Това е същият ток, който преминава през изтеглящия се резистор и ни осигурява напрежението към нашия аналогов вход. Това се изчислява като Vin = Общо x Rx. Разглеждайки както данните Req, така и данните Vin, можем да видим, че наистина имаме уникални стойности.
В този момент изглежда, че нашата верига ще работи. Сега, за да разберете как да програмирате Arduino.
Стъпка 3: Програмиране на Arduino
Когато започнах да мисля как да програмирам Arduino, първоначално планирах да настроя отделни диапазони на напрежение за определяне дали превключвателят е включен или изключен. Но докато лежах в леглото една нощ, ми хрумна, че трябва да мога да намеря уравнение за това. Как? ОТЛИЧНО. Excel има способността да изчислява уравнения, за да пасне най -добре на данните в диаграма. За да направя това, ще искам уравнение на целочислената стойност на превключвателите (двоично) спрямо входното напрежение, съответстващо на тази стойност. В моята работна книга на Excel поставих целочислената стойност в лявата част на електронната таблица. Сега да определя моето уравнение.
Ето кратък урок за това как да определите уравнението на ред в Excel.
1) Изберете клетка, която не съдържа никакви данни. Ако сте избрали клетка с данни, Excel ще се опита да отгатне какво искате да променяте. Това прави създаването на тенденция много по -трудно, тъй като Excel рядко прогнозира правилно.
2) Изберете раздела „Вмъкване“и изберете диаграма „Скатер“.
3) Щракнете с десния бутон в полето за диаграма и кликнете върху „Избор на данни …“. Това ще изскочи прозореца „Избор на източник на данни“. Изберете бутона Добавяне, за да продължите да избирате данните.
4) Дайте му име на серия (по избор). Изберете диапазона за оста X, като щракнете върху стрелката нагоре и след това изберете данните за напрежението. Изберете диапазона за оста Y, като щракнете върху стрелката нагоре и след това изберете Целочислени данни (0-63).
5) Щракнете с десния бутон върху точките с данни и изберете „Add Trendline…“В прозореца „Format Trendline“изберете бутона Polynomial. Разглеждайки тенденцията, виждаме, че редът 2 не съвпада напълно. Избрах Поръчка 3 и почувствах, че това е много по -точно. Поставете отметка в квадратчето за „Показване на уравнението на диаграмата“. Крайното уравнение сега се показва на диаграмата.
6) Готово.
ДОБРЕ. Обратно към програмата Arduino. Сега, когато имаме уравнението, програмирането на Arduino е лесно. Цялото число, което представлява позициите на превключвателя, се изчислява в 1 ред код. Използвайки функцията "bitread", можем да вземем стойността на всеки отделен бит и по този начин да знаем състоянието на всеки бутон. (ВИЖ СНИМКИ)
Стъпка 4: TinkerCAD схеми
Ако не сте проверили TinkerCAD Circuits, направете го сега. ИЗЧАКАЙТЕ!!!! Завършете четенето на моя Instructable и след това го проверете. TinkerCAD Circuits прави тестването на Arduino схеми много лесно. Той включва няколко електрически обекта и Arduinos, като дори ви позволява да програмирате Arduino за тестване.
За да тествам веригата си, настроих 6 превключвателя с помощта на пакет DIP превключватели и ги завързах към резисторите. За да докажа, че стойността на напрежението в моята електронна таблица на Excel е правилна, показах волтметър на входа на Arduino. Всичко това работеше според очакванията.
За да докажа, че програмирането на Arduino работи, извеждам състоянията на превключвателите към светодиоди, използвайки цифровите изходи на Arduino.
След това превключих всеки превключвател за всяка възможна комбинация и с гордост казвам "РАБОТИ" !!!
Стъпка 5: „Толкова дълго и благодаря за цялата риба“. (реф.1)
Все още не съм изпробвал това с истинско оборудване, тъй като в момента пътувам по работа. Но след като го доказах с TinkerCAD Circuits, вярвам, че ще работи. Предизвикателството е, че стойностите на резисторите, които посочих, не са всички стандартни стойности за резистори. За да заобиколя това, планирам да използвам потенциометри и комбинации от резистори, за да получа стойностите, от които се нуждая.
Благодаря ви, че прочетохте инструкциите ми. Надявам се, че това ще ви помогне с вашите проекти.
Моля, оставете коментари, ако сте се опитали да се справите със същата тази пречка и как сте я решили. Бих искал да науча повече начини за това.
Стъпка 6: Препратки
Не сте мислили, че ще дам цитат, без да посоча източника му, нали?
ref. 1: Адамс, Дъглас. Толкова дълго и благодаря за цялата риба. (Четвъртата книга от "Трилогията" на Пътеводителя на автостопа за галактиката)
Препоръчано:
4 игри с бутони, използващи един аналогов вход: 6 стъпки (със снимки)
4 игри с бутони, използващи един аналогов вход: Тази инструкция се фокусира върху използването на една линия за аналогов вход за множество бутони, които могат да бъдат открити независимо един от друг. Всички игри (8 в т
Моят опит към мелодията на зумера на бутона на Arduino: 11 стъпки
Моят опит към мелодията на зумера на бутона на Arduino: В този урок ще ви покажа как един бутон може да стартира мелодия. През учебната година много от живота ни се управляват от звънци или тонове, които ни казват кога е време за тръгване или време за тръгване. Повечето от нас рядко спират и мислят как тези различни
Arduino - Пиезо пиано с три бутона: 4 стъпки
Arduino - Пиезо пиано с три бутона: Пианото с три бутона е проект за начинаещи с известен опит в използването на Arduino. Бях побъркан в опитите да създам това, докато играех с пиезо зумер за първи път. Беше толкова силно! Опитвайки се да разбера различните
Свързване на няколко бутона към един щифт на Arduino: 4 стъпки
Свързване на множество бутони към един щифт на Arduino: Здравейте всички, Когато вашите проекти на Arduino са надраснали мигащи светодиоди, може да се окажете в нужда от някои допълнителни щифтове. Ще ви покажа един трик, който можете да използвате, където можете да имате няколко бутона, всички свързани към един и същ аналогов щифт
Аналогов вход на IoT - Първи стъпки с IoT: 8 стъпки
IoT Аналогов вход - Първи стъпки с IoT: Разбирането на аналоговите входове е решаваща част от разбирането как работят нещата около нас, повечето, ако не всички сензори са аналогови сензори (понякога тези сензори се преобразуват в цифрови). За разлика от цифровите входове, които могат да бъдат само включени или изключени, аналоговият вход