Obsah:
Video: Prepínače Arduino a Thumbwheel: 9 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
V tomto článku skúmame používanie prepínačov typu koliesko/koliesko s našimi systémami Arduino. Tu je niekoľko príkladov pochádzajúcich z PMD Way.
Krok 1:
Pre nezainteresovaných je každý spínač jedným vertikálnym segmentom a dajú sa navzájom spojiť a vytvoriť rôzne veľkosti. Pomocou tlačidiel môžete vyberať od číslic od nuly po deväť. K dispozícii sú alternatívy, ktoré majú koliesko, ktoré môžete presúvať palcom namiesto tlačidiel na zvýšenie/zníženie.
Pred dobami efektných používateľských rozhraní boli tieto prepínače veľmi obľúbenou metódou na zadávanie číselných údajov. Napriek tomu sú stále k dispozícii, takže sa pozrime, ako fungujú a ako ich môžeme použiť. Hodnota prepínača je k dispozícii prostredníctvom binárne kódovaných desatinných alebo desatinných miest. Zvážte zadnú časť prepínača vo forme BCD.
Krok 2:
Vľavo máme spoločné, potom kontakty pre 1, 2, 4 a 8. Ak na spoločné použijete malé napätie (povedzme 5V), hodnotu spínača je možné merať sčítaním hodnôt kontaktov, ktoré sú v VYSOKÝ stav. Ak napríklad vyberiete 3 - kontakty 1 a 2 budú na spoločnom napätí. Hodnoty medzi nulou a deviatimi môžu byť v tabuľke reprezentované ako také.
Krok 3:
Teraz by ste si mali uvedomiť, že by bolo ľahké prečítať hodnotu prepínača - a máte pravdu, je to tak. Môžeme pripojiť 5 V na spoločný, výstupy na digitálne vstupné piny našich dosiek Arduino, potom pomocou digitalRead () určiť hodnotu každého výstupu. V náčrte použijeme základnú matematiku na prevod hodnoty BCD na desatinné číslo. Tak to urobme teraz.
Z hľadiska hardvéru musíme vziať do úvahy ešte jednu vec-spínač na volante sa správa elektricky ako štyri normálne otvorené tlačidlá. To znamená, že musíme použiť sťahovacie odpory, aby sme mali jasný rozdiel medzi vysokými a nízkymi stavmi. Schéma pre jeden prepínač je teda uvedená vyššie.
Krok 4:
Teraz je jednoduché pripojiť výstupy označené 1, 2, 4 a 8 na (napríklad) digitálne piny 8, 9, 10 a 11. Pripojte 5V k prepínaciemu bodu „C“a GND k … GND. Ďalej musíme mať náčrt, ktorý dokáže čítať vstupy a prevádzať výstup BCD na desatinné miesto. Zvážte nasledujúci náčrt:
/ * Používa štít na numerický displej SAA1064 https://www.gravitech.us/7segmenthield.html Používa sériový monitor, ak nemáte štít SAA1064 */#include "Wire.h" #define q1 8 #define q2 9 # definujte q4 10 #define q8 11 void setup () {Serial.begin (9600); Wire.begin (); // pripojenie i2c zbernice (adresa voliteľná pre master) zdržanie (500); pinMode (q1, INPUT); // koliesko '1' pinMode (q2, INPUT); // koliesko '2' pinMode (q4, INPUT); // koliesko '4' pinMode (q8, INPUT); // koliesko '8'} neplatné dispSAA1064 (int Count) // pošle celočíselné 'Count' na štít Gravitech SAA1064 {const int lookup [10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; int Tisíce, stovky, desiatky, základňa; Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); Wire.endTransmission (); Wire.beginTransmission (0x38); Wire.write (1); Tisíce = počet/1000; Stovky = (Počet- (Tisíce*1000))/100; Desiatky = (počet-((tisíce*1000)+(stovky*100)))/10; Základňa = počet-((tisíce*1 000)+(stovky*100)+(desiatky*10)); Wire.write (vyhľadávanie [základňa]); Wire.write (vyhľadávanie [desiatky]); Wire.write (vyhľadávanie [stovky]); Wire.write (vyhľadávanie [tisíce]); Wire.endTransmission (); oneskorenie (10); } int readSwitch () {int total = 0; if (digitalRead (q1) == HIGH) {total+= 1; } if (digitalRead (q2) == HIGH) {total+= 2; } if (digitalRead (q4) == HIGH) {total+= 4; } if (digitalRead (q8) == HIGH) {total+= 8; } celkový výnos; } prázdna slučka () {dispSAA1064 (readSwitch ()); // pošle hodnotu prepínača na displej štít Serial.println (readSwitch ()); // pošle hodnotu prepínača do poľa sériového monitora}
Funkcia readSwitch () je kľúčová. Vypočíta hodnotu prepínača sčítaním numerického znázornenia každého výstupu spínača a ako výsledok vráti súčet. V tomto prípade sme použili numerický štít displeja, ktorý je ovládaný NXP SAA1064.
Krok 5:
Funkcia readSwitch () je kľúčová. Vypočíta hodnotu prepínača sčítaním numerického znázornenia každého výstupu spínača a ako výsledok vráti súčet. V tomto prípade sme použili numerický štít displeja, ktorý je ovládaný NXP SAA1064.
Ak ho nemáte, je to v poriadku - výsledky sa odošlú aj na sériový monitor. Teraz sa na to pozrime v praxi vo videu.
Krok 6:
Ok, nevyzerá to veľa, ale ak potrebujete numerické zadanie, ušetrí to veľa fyzického priestoru a ponúka presný spôsob zadávania.
Tak tu to máte. Skutočne by ste ich použili v projekte? Na jednu číslicu - áno. Za štyroch? Pravdepodobne nie-možno by bolo jednoduchšie použiť 12-miestnu klávesnicu. Existuje nápad…
Krok 7: Viaceré prepínače
Teraz preskúmame, ako čítať štyri číslice - a neplytvať pri tom všetkými tými digitálnymi pinmi. Namiesto toho použijeme IC 16-bitový expandér portov Microchip MCP23017, ktorý komunikuje cez zbernicu I2C. Má šestnásť digitálnych vstupných/výstupných pinov, ktoré môžeme použiť na čítanie stavu každého prepínača.
Predtým, ako sa pohneme vpred, upozorňujeme, že pre tento článok sú potrebné určité predpokladané znalosti - zbernica I2C (časť jedna a dve) a MCP23017. Najprv popíšeme hardvérové pripojenia a potom skicu Arduino. Pripomeňme si schému použitú pre príklad jedného prepínača.
Keď bol spínač priamo pripojený k Arduinu, odčítali sme stav každého pinu, aby sme určili hodnotu spínača. Urobíme to znova, vo väčšom meradle pomocou MCP23017. Zvážte diagram vývodov:
Krok 8:
Máme 16 pinov, čo umožňuje pripojenie štyroch prepínačov. Spoločné signály pre každý prepínač sa stále pripájajú na 5 V a každý prepínací kontakt má stále 10k sťahovací odpor k GND. Potom pripojíme 1, 2, 4, 8 pinov číslice jedna k GPBA0 ~ 3; číslica dva je 1, 2, 4, 8 až GPA4 ~ 7; číslice tri 1, 2, 4, 8 až GPB0 ~ 3 a číslice štyri 1, 2, 4, 8 až GPB4 ~ 7.
Ako teraz čítame prepínače? Všetky tieto drôty môžu spôsobiť, že si myslíte, že je to ťažké, ale náčrt je celkom jednoduchý. Keď čítame hodnotu GPBA a B, pre každú banku sa vráti jeden bajt, pričom ako prvý sa použije najdôležitejší bit. Každé štyri bity budú zodpovedať nastaveniam prepínača pripojeného k zodpovedajúcim I/O kolíkom. Ak napríklad požadujeme údaje pre banky IO a prepínače sú nastavené na 1 2 3 4 - banka A vráti 0010 0001 a banka B vráti 0100 0011.
Niektoré operácie bitového posuvu používame na oddelenie každých štyroch bitov do samostatnej premennej - čo nám ponecháva hodnotu každej číslice. Napríklad, aby sme oddelili hodnotu prepínača štyri, posunieme bity z banky B >> 4. Tým sa hodnota prepínača tri vytlačí von a prázdne bity vľavo sa stanú nulovými.
Na oddelenie hodnoty pre prepínač tri použijeme kombináciu bitov & -, ktorá ponechá hodnotu prepínača tri. Obrázok ukazuje rozpis hodnôt binárnych prepínačov - ukazuje surové hodnoty bajtov GPIOA a B, potom binárne hodnoty každej číslice a desatinnú hodnotu.
Krok 9:
Pozrime sa teda na ukážkový náčrt:
/ * Príklad 40a-Načítajte štyri tlačidlá BCD prepínača cez MCP23017, displej na SAA1064/4-miestny 7-segmentový LED displej */// MCP23017 piny 15 ~ 17 na GND, adresa zbernice I2C je 0x20 // Adresa zbernice SAA1064 I2C 0x38 # zahrnúť „Wire.h“// pre definície číslic LED int číslice [16] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 119, 124, 57, 94, 121, 113 }; bajt GPIOA, GPIOB, dig1, dig2, dig3, dig4; void initSAA1064 () {// nastavenie 0x38 Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); // výstup 12mA, bez zatemnenia číslice Wire.endTransmission (); } neplatné nastavenie () {Serial.begin (9600); Wire.begin (); // spustenie zbernice I2C initSAA1064 (); } void loop () {// prečítajte vstupy banky A Wire.beginTransmission (0x20); Wire.write (0x12); Wire.endTransmission (); Wire.requestFrom (0x20, 1); GPIOA = Wire.read (); // tento bajt obsahuje údaje prepínača pre číslice 1 a 2 // číta vstupy banky B Wire.beginTransmission (0x20); Wire.write (0x13); Wire.endTransmission (); Wire.requestFrom (0x20, 1); GPIOB = Wire.read (); // tento bajt obsahuje údaje prepínača pre číslice 3 a 4 // extrahujúca hodnota pre každý prepínač // dig1 LHS, dig4 RHS dig4 = GPIOB >> 4; dig3 = GPIOB & B00001111; dig2 = GPIOA >> 4; dig1 = GPIOA & B00001111; // odoslanie všetkých údajov GPIO a jednotlivých prepínačov na sériový monitor // kvôli ladeniu a záujmu Serial.print ("GPIOA ="); Serial.println (GPIOA, BIN); Serial.print ("GPIOB ="); Serial.println (GPIOB, BIN); Serial.println (); Serial.print ("číslica 1 ="); Serial.println (dig1, BIN); Serial.print ("číslica 2 ="); Serial.println (dig2, BIN); Serial.print ("číslica 3 ="); Serial.println (dig3, BIN); Serial.print ("číslica 4 ="); Serial.println (dig4, BIN); Serial.println (); Serial.print ("číslica 1 ="); Serial.println (dig1, DEC); Serial.print ("číslica 2 ="); Serial.println (dig2, DEC); Serial.print ("číslica 3 ="); Serial.println (dig3, DEC); Serial.print ("číslica 4 ="); Serial.println (dig4, DEC); Serial.println (); // odoslanie hodnoty spínača na LED displej cez SAA1064 Wire.beginTransmission (0x38); Wire.write (1); Wire.write (číslice [dig4]); Wire.write (číslice [dig3]); Wire.write (číslice [dig2]); Wire.write (číslice [dig1]); Wire.endTransmission (); oneskorenie (10); oneskorenie (1000); }
A pre neveriacich … video ukážka.
Tak tu to máte. Štyri číslice namiesto jednej a nad zbernicou I2C zachovávajúcou digitálne I/O piny Arduino. Pomocou ôsmich MCP23017 ste mohli prečítať 32 číslic naraz. Bavte sa s tým!
U spoločnosti PMD Way si môžete objednať BCD aj desatinné prepínače v rôznych veľkostiach s bezplatným doručením do celého sveta.
Tento príspevok vám prináša pmdway.com - všetko pre výrobcov a nadšencov elektroniky s bezplatným doručením do celého sveta.
Odporúča:
Prepínače skrine robota: 4 kroky
Prepínače krytu robota: Potrebujem hlavný západkový vypínač napájania a dva okamžité spínače na vypnutie počítačov. Potrebujem tiež nabíjací kábel k batérii s LED na potvrdenie nabíjania a konektor SMA pre WIFI. Všetko musí byť pre tohto vonkajšieho robota vodotesné
ČASŤ 2 - MONTÁŽ GPIO ARM - RGB - FUNKČNÉ HOVORY - Prepínače: 6 krokov
ČASŤ 2 - Zostava GPIO ARM - RGB - FUNKČNÉ HOVORY - Prepínače: V časti 1 sme sa naučili prepínať jednu červenú diódu LED na vývojovej doske MSP432 LaunchPad od spoločnosti Texas Instruments pomocou zostavy namiesto C / C ++. V tomto návode na obsluhu sme urobí niečo podobné - ovláda RGB LED, ktorá je tiež na tomto sam
Prepínače na čítanie s krokmi ATtiny2313: 9
Prepínače na čítanie s ATtiny2313: Existuje niekoľko inštrukcií zaoberajúcich sa výstupmi z ATtiny2313 a podobných zariadení AVR. Napríklad https://www.instructables.com/id/Ghetto-Programming%3a-Getting-started-with-AVR-micro/, https://www.instructables.com/id/Drive-a-St
Trojcestné a štvorsmerové prepínače-ako fungujú: 6 krokov
Trojcestné a štvorsmerové prepínače-Ako fungujú: Aj keď je trojcestný prepínač veľmi jednoduchý pre mnohých, ktorí navštívia stránku Instructables.com, je pre mnoho ďalších záhadou. Pochopenie toho, ako obvod funguje, uspokojuje zvedavosť. Môže tiež pomôcť diagnostikovať trojcestný prepínač, ktorý nefunguje, pretože niekto
Rýchle a jednoduché mäkké prepínače (pre rýchle prototypovanie): 5 krokov
Rýchle a jednoduché mäkké prepínače (pre rýchle vytváranie prototypov): Existuje mnoho rôznych spôsobov, ako vytvoriť mäkké prepínače. Tento návod ukazuje ďalšiu možnosť veľmi rýchleho prototypu mäkkého spínača, ktorý používa namiesto vodivej textílie hliníkovú pásku a namiesto vodivého vlákna pevné drôty, ktoré