Съдържание:
- Етап 1:
- Стъпка 2:
- Стъпка 3:
- Стъпка 4:
- Стъпка 5:
- Стъпка 6:
- Стъпка 7: Множество превключватели
- Стъпка 8:
- Стъпка 9:
Видео: Превключватели Arduino и Thumbwheel: 9 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В тази статия разглеждаме използването на превключватели с бутало/колело с нашите системи Arduino. Ето някои примери, получени от PMD Way.
Етап 1:
За непосветените всеки превключвател е един вертикален сегмент и те могат да бъдат свързани заедно, за да образуват различни размери. Можете да използвате бутоните, за да избирате от цифри от нула до девет. Налични са алтернативи, които имат колело, което можете да движите с палец вместо с бутоните за увеличаване/намаляване.
Преди дните на фантастични потребителски интерфейси тези ключове бяха доста популярни методи за настройка на цифрово въвеждане на данни. Те обаче са налични и днес, така че нека да видим как работят и как можем да ги използваме. Стойността на превключвателя се предоставя чрез двоично кодиран десетичен или прав десетичен знак. Помислете за задната част на превключвателя под формата на BCD.
Стъпка 2:
Имаме общи отляво, след това контакти за 1, 2, 4 и 8. Ако приложите малко напрежение (да речем 5V) към общото, стойността на превключвателя може да бъде измерена чрез добавяне на стойностите на контактите, които са в ВИСОКО състояние. Например, ако изберете 3 - контактите 1 и 2 ще бъдат при общо напрежение. Стойностите между нула и девет могат да бъдат представени като такива в таблицата.
Стъпка 3:
Досега трябва да осъзнаете, че ще бъде лесно да прочетете стойността на превключвателя - и вие сте прав, така е. Можем да свържем 5V към общите, изходите към цифрови входни щифтове на нашите Arduino платки, след което използваме digitalRead (), за да определим стойността на всеки изход. В скицата използваме основна математика, за да преобразуваме стойността на BCD в десетично число. Така че нека направим това сега.
От хардуерна гледна точка трябва да вземем предвид още едно нещо-превключвателят на колелото се държи електрически като четири нормално отворени бутона. Това означава, че трябва да използваме издърпващи се резистори, за да имаме ясна разлика между високите и ниските състояния. Така че схемата за един превключвател е както е показано по -горе.
Стъпка 4:
Сега е просто да свържете изходите с етикет 1, 2, 4 и 8 към (например) цифрови пинове 8, 9, 10 и 11. Свържете 5V към превключвателя „C“точка и GND към… GND. След това трябва да имаме скица, която може да чете входовете и да преобразува BCD изхода в десетична. Обмислете следната скица:
/ * Използва SAA1064 щит за цифрови дисплеи https://www.gravitech.us/7segmentshield.html Използва сериен монитор, ако нямате щит SAA1064 */#включва "Wire.h" #дефинирайте q1 8 #define q2 9 # define q4 10 #define q8 11 void setup () {Serial.begin (9600); Wire.begin (); // присъединяване към i2c шина (адрес по избор за главен) забавяне (500); pinMode (q1, INPUT); // колело '1' pinMode (q2, INPUT); // колело '2' pinMode (q4, INPUT); // колело '4' pinMode (q8, INPUT); // колело '8'} void dispSAA1064 (int Count) // изпраща цяло число 'Count' към Gravitech SAA1064 щит {const int lookup [10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; int Хиляди, стотици, десетки, база; Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); Wire.endTransmission (); Wire.beginTransmission (0x38); Wire.write (1); Хиляди = Брой/1000; Стотици = (Брой- (Хиляди*1000))/100; Десетки = (Брой-((Хиляди*1000)+(Стотици*100)))/10; База = Брой-((Хиляди*1000)+(Стотици*100)+(Десетки*10)); Wire.write (търсене [База]); Wire.write (търсене [Десетки]); Wire.write (търсене [Стотици]); Wire.write (търсене [Хиляди]); Wire.endTransmission (); забавяне (10); } int readSwitch () {int общо = 0; if (digitalRead (q1) == HIGH) {общо+= 1; } if (digitalRead (q2) == HIGH) {общо+= 2; } if (digitalRead (q4) == HIGH) {общо+= 4; } if (digitalRead (q8) == HIGH) {общо+= 8; } обща сума на връщане; } void loop () {dispSAA1064 (readSwitch ()); // изпраща стойността на превключвателя към екрана за показване Serial.println (readSwitch ()); // изпраща стойност на превключвателя към кутия за сериен монитор}
Функцията readSwitch () е ключът. Той изчислява стойността на превключвателя, като добавя числовото представяне на всеки изход на превключвателя и връща общата сума като резултат. За този пример използвахме щит с цифров дисплей, който се управлява от NXP SAA1064.
Стъпка 5:
Функцията readSwitch () е ключът. Той изчислява стойността на превключвателя, като добавя числовото представяне на всеки изход на превключвателя и връща общата сума като резултат. За този пример използвахме щит с цифров дисплей, който се управлява от NXP SAA1064.
Ако нямате такъв, това е добре - резултатите се изпращат и на серийния монитор. Сега нека го видим в действие във видеото.
Стъпка 6:
Добре, не изглежда много, но ако имате нужда от цифрово въвеждане, това спестява много физическо пространство и предлага точен метод за въвеждане.
И така, има го. Наистина ли бихте ги използвали в проект? За една цифра - да. За четири? Вероятно не-може би би било по-лесно да използвате 12-цифрена клавиатура. Има идея…
Стъпка 7: Множество превключватели
Сега ще разгледаме как да четем четири цифри - и да не пропиляваме всички тези цифрови щифтове в процеса. Вместо това ще използваме IC IC за разширение на 16-битовия порт Microchip MCP23017, който комуникира чрез I2C шината. Той има шестнадесет цифрови входни/изходни пина, които можем да използваме, за да прочетем състоянието на всеки превключвател.
Преди да продължите напред, имайте предвид, че за тази статия са необходими някои предполагаеми познания - I2C шината (първа и втора част) и MCP23017. Първо ще опишем хардуерните връзки, а след това скицата на Arduino. Припомнете схемата, използвана за примера с единичен превключвател.
Когато превключвателят беше директно свързан към Arduino, четем състоянието на всеки пин, за да определим стойността на превключвателя. Ще направим това отново, в по -голям мащаб, използвайки MCP23017. Помислете за схемата на извеждане:
Стъпка 8:
Имаме 16 пина, което позволява да се свържат четири превключвателя. Общите за всеки превключвател все още се свързват към 5V и всеки контакт на превключвателя все още има 10k издърпващ се резистор към GND. След това свързваме 1, 2, 4, 8 пина на цифра едно към GPBA0 ~ 3; цифри две 1, 2, 4, 8 до GPA4 ~ 7; цифри три 1, 2, 4, 8 до GPB0 ~ 3 и цифри четири 1, 2, 4, 8 до GPB4 ~ 7.
Сега как да четем ключовете? Всички тези проводници може да ви накарат да мислите, че е трудно, но скицата е доста проста. Когато прочетем стойността на GPBA и B, за всяка банка се връща по един байт, като първо е най-значимият бит. Всеки четири бита ще съвпадат с настройката на превключвателя, свързан към съответстващите I/O пинове. Например, ако поискаме данните за двете IO банки и превключвателите са настроени на 1 2 3 4 - банка А ще върне 0010 0001, а банка В ще върне 0100 0011.
Използваме някои операции за преместване на битове, за да разделим всеки четири бита в отделна променлива - което ни оставя стойността на всяка цифра. Например, за да отделим стойността на превключвател четири, изместваме битовете от банка В >> 4. Това изтласква стойността на превключвател три навън и празните битове вляво стават нула.
За да разделим стойността за превключвател три, използваме съединение побитово & - което оставя стойността на превключвател три. Изображението показва разбивка на стойностите на двоичния превключвател - показва необработените стойности на GPIOA и B байтове, след това двоичната стойност на всяка цифра и десетичната стойност.
Стъпка 9:
Нека да видим демонстрационната скица:
/ * Пример 40а-Прочетете четири BCD превключвателя с колело чрез MCP23017, дисплей на SAA1064/4-цифрен 7-сегментен LED дисплей */// MCP23017 щифтове 15 ~ 17 към GND, адресът на I2C шината е 0x20 // SAA1064 I2C шинен адрес 0x38 # включва "Wire.h" // за дефиниции на LED цифри int цифри [16] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 119, 124, 57, 94, 121, 113 }; байт GPIOA, GPIOB, dig1, dig2, dig3, dig4; void initSAA1064 () {// настройка 0x38 Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); // 12mA изход, без блокиране на цифри Wire.endTransmission (); } void setup () {Serial.begin (9600); Wire.begin (); // стартиране на I2C шина initSAA1064 (); } void loop () {// чете входовете на банка A Wire.beginTransmission (0x20); Wire.write (0x12); Wire.endTransmission (); Wire.requestFrom (0x20, 1); GPIOA = Wire.read (); // този байт съдържа данните за превключване за цифри 1 и 2 // чете входовете на банка B Wire.beginTransmission (0x20); Wire.write (0x13); Wire.endTransmission (); Wire.requestFrom (0x20, 1); GPIOB = Wire.read (); // този байт съдържа данните за превключване за цифри 3 и 4 // извличане на стойност за всеки превключвател // dig1 LHS, dig4 RHS dig4 = GPIOB >> 4; dig3 = GPIOB & B00001111; dig2 = GPIOA >> 4; dig1 = GPIOA & B00001111; // изпращаме всички данни за GPIO и отделни превключватели към сериен монитор // за отстраняване на грешки и интерес Serial.print ("GPIOA ="); Serial.println (GPIOA, BIN); Serial.print ("GPIOB ="); Serial.println (GPIOB, BIN); Serial.println (); Serial.print ("цифра 1 ="); Serial.println (dig1, BIN); Serial.print ("цифра 2 ="); Serial.println (dig2, BIN); Serial.print ("цифра 3 ="); Serial.println (dig3, BIN); Serial.print ("цифра 4 ="); Serial.println (dig4, BIN); Serial.println (); Serial.print ("цифра 1 ="); Serial.println (dig1, DEC); Serial.print ("цифра 2 ="); Serial.println (dig2, DEC); Serial.print ("цифра 3 ="); Serial.println (dig3, DEC); Serial.print ("цифра 4 ="); Serial.println (dig4, DEC); Serial.println (); // изпраща стойността на превключвателя към LED дисплея чрез SAA1064 Wire.beginTransmission (0x38); Wire.write (1); Wire.write (цифри [dig4]); Wire.write (цифри [dig3]); Wire.write (цифри [dig2]); Wire.write (цифри [dig1]); Wire.endTransmission (); забавяне (10); забавяне (1000); }
А за невярващите … видео демонстрация.
И така, има го. Четири цифри вместо една и над шината I2C, запазваща цифровите входно/изходни щифтове на Arduino. Използвайки осем MCP23017, можете да четете 32 цифри наведнъж. Забавлявайте се с това!
Можете да поръчате както BCD, така и десетични ключове в различни размери от PMD Way, с безплатна доставка по целия свят.
Тази публикация ви е предоставена от pmdway.com - всичко за производители и любители на електрониката, с безплатна доставка по целия свят.
Препоръчано:
Универсална USB клавиатура с RGB превключватели: 6 стъпки
Универсална USB клавиатура с RGB превключватели: В тази инструкция ще ви покажа как да създадете своя собствена USB клавиатура, която да се държи точно като обикновена компютърна клавиатура. Можете да зададете произволна комбинация от клавиши или последователност от клавиши, които да бъдат натиснати, докато натискате само един бутон. Можете да го използвате
Как да си направим интелигентни ролетни щори със смарт превключватели SONOFF?: 14 стъпки
Как да си направим интелигентни ролетни щори с интелигентни превключватели SONOFF?: Използвайте режима за блокиране в интелигентните превключватели SONOFF, за да превърнете обикновените си ролетни щори/щори в интелигентни Дали повечето от вас ще се съгласят, че това е задача, която дърпате ролетите/щорите сутрин и да го сваля вечер? Както и да е, аз съм
Направи си сам волан и педали за компютър от картон! (Обратна връзка, превключватели на гребла, дисплей) за състезателни симулатори и игри: 9 стъпки
Направи си сам волан и педали за компютър от картон! (Обратна връзка, превключватели на гребла, дисплей) за състезателни симулатори и игри: Здравейте всички! В тези скучни времена всички се разхождаме и търсим какво да правим. Състезанията в реалния живот са отменени и са заменени със симулатори. Реших да създам евтин симулатор, който работи безупречно
НАЧАЛО АВТОМАТИЗАЦИЯ В ДОМА - Сменете традиционните светлинни превключватели: 5 стъпки
DIY HOME AUTOMATION - Заменете традиционните светлинни превключватели: Включете или изключете LIGHTS с помощта на сензори за докосване Характеристики: Капацитивните сензори за докосване се използват за включване на светлините вместо традиционните механични превключватели. PIR сензори за автоматични светлини
Пиано Arduino с превключватели с бутони: 3 стъпки
Пиано Arduino с превключватели с бутони: Създадено от: Haotian Ye Обзор: Това е пиано дъска с осем превключвателя с бутони, което ви позволява да играете една октава (Do Re Mi Fa So La Si Do) и с тази една октава можете да опитате да свирите някои песни, които харесвате. За този проект има някои последици