2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-23 14:38
V tomto článku zkoumáme použití přepínačů s kolečky/kolečky v našich systémech Arduino. Zde je několik příkladů pocházejících z PMD Way.
Krok 1:
Pro nezasvěcené je každý přepínač jedním svislým segmentem a mohou být spojeny dohromady a vytvářet různé velikosti. Pomocí tlačítek můžete vybírat od číslic od nuly do devíti. K dispozici jsou alternativy, které mají kolečko, které můžete přesouvat palcem místo tlačítek pro zvýšení/snížení.
Před dobami efektních uživatelských rozhraní byly tyto přepínače velmi oblíbenými metodami pro zadávání číselných dat. Jsou však stále k dispozici i dnes, pojďme se tedy podívat, jak fungují a jak je můžeme použít. Hodnota přepínače je k dispozici prostřednictvím binárně kódovaných desetinných míst nebo rovných desetinných míst. Zvažte zadní část přepínače ve formě BCD.
Krok 2:
Vlevo máme společné, potom kontakty pro 1, 2, 4 a 8. Pokud na společné použijete malé napětí (řekněme 5V), lze hodnotu spínače změřit sečtením hodnot kontaktů, které jsou v VYSOKÝ stav. Pokud například vyberete 3 - kontakty 1 a 2 budou na společném napětí. Hodnoty mezi nulou a devíti lze v tabulce znázornit jako takové.
Krok 3:
Nyní byste si měli uvědomit, že by bylo snadné přečíst hodnotu přepínače - a máte pravdu, je to tak. Můžeme připojit 5 V ke společnému, výstupy k digitálním vstupním pinům našich desek Arduino, poté pomocí digitalRead () určit hodnotu každého výstupu. V náčrtu použijeme základní matematiku k převodu hodnoty BCD na desítkové číslo. Udělejme to tedy nyní.
Z hlediska hardwaru musíme vzít v úvahu ještě jednu věc-spínač na volantu se chová elektricky jako čtyři normálně otevřená tlačítka. To znamená, že musíme použít stahovací odpory, abychom měli jasný rozdíl mezi vysokými a nízkými stavy. Schéma pro jeden přepínač je tedy uvedeno výše.
Krok 4:
Nyní je jednoduché připojit výstupy označené 1, 2, 4 a 8 k (například) digitálním pinům 8, 9, 10 a 11. Připojte 5V k bodu přepínače „C“a GND k… GND. Dále potřebujeme náčrt, který dokáže číst vstupy a převést výstup BCD na desítkové. Zvažte následující skicu:
/ * Používá štít numerického displeje SAA1064 https://www.gravitech.us/7segmenthield.html Používá sériový monitor, pokud 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 (); // připojení sběrnice i2c (adresa volitelná pro master) zpoždění (500); pinMode (q1, INPUT); // kolečko '1' pinMode (q2, INPUT); // kolečko '2' pinMode (q4, INPUT); // kolečko '4' pinMode (q8, INPUT); // kolečko '8'} neplatné dispSAA1064 (int Count) // posílá celočíselné 'Count' do štítu Gravitech SAA1064 {const int lookup [10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; int Tisíce, stovky, desítky, základna; Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); Wire.endTransmission (); Wire.beginTransmission (0x38); Wire.write (1); Tisíce = počet/1000; Stovky = (Count- (tisíce*1000))/100; Desítky = (počet-((tisíce*1000)+(stovky*100)))/10; Základ = počet-((tisíce*1000)+(stovky*100)+(desítky*10)); Wire.write (vyhledávání [Base]); Wire.write (vyhledávání [desítky]); Wire.write (vyhledávání [stovky]); Wire.write (vyhledávání [tisíce]); Wire.endTransmission (); zpoždění (10); } int readSwitch () {int celkem = 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; } void loop () {dispSAA1064 (readSwitch ()); // pošle hodnotu přepínače na displej štít Serial.println (readSwitch ()); // pošle hodnotu přepínače do boxu sériového monitoru}
Klíčem je funkce readSwitch (). Vypočítá hodnotu přepínače přidáním číselného vyjádření každého výstupu spínače a jako výsledek vrátí součet. V tomto případě jsme použili numerický štít displeje, který je řízen NXP SAA1064.
Krok 5:
Klíčem je funkce readSwitch (). Vypočítá hodnotu přepínače přidáním číselné reprezentace každého výstupu spínače a jako výsledek vrátí součet. V tomto případě jsme použili numerický štít displeje, který je řízen NXP SAA1064.
Pokud žádný nemáte, je to v pořádku - výsledky jsou také odeslány na sériový monitor. Pojďme se na to nyní podívat ve videu.
Krok 6:
Dobře, nevypadá to moc, ale pokud potřebujete číselné zadání, ušetří to spoustu fyzického prostoru a nabízí přesný způsob zadávání.
Tak tady to máte. Opravdu byste je použili v projektu? Za jednu číslici - ano. Pro čtyři? Pravděpodobně ne-možná by bylo jednodušší použít 12místnou klávesnici. Existuje nápad…
Krok 7: Více přepínačů
Nyní prozkoumáme, jak číst čtyři číslice - a neztratit přitom všechny ty digitální piny. Místo toho použijeme 16bitový IC expandér Microchip MCP23017, který komunikuje přes sběrnici I2C. Má šestnáct digitálních vstupních/výstupních pinů, které můžeme použít ke čtení stavu každého přepínače.
Než se pohneme kupředu, vezměte prosím na vědomí, že pro tento článek jsou vyžadovány určité předpokládané znalosti - sběrnice I2C (část jedna a dvě) a MCP23017. Nejprve popíšeme hardwarová připojení a poté skicu Arduina. Připomeňme si schéma použité pro příklad jednoho přepínače.
Když byl přepínač přímo připojen k Arduinu, přečetli jsme stav každého pinu, abychom určili hodnotu přepínače. Uděláme to znovu, ve větším měřítku pomocí MCP23017. Zvažte diagram pinoutu:
Krok 8:
Máme 16 pinů, což umožňuje připojení čtyř přepínačů. Komunikace pro každý spínač se stále připojuje na 5 V a každý kontakt spínače má stále 10k stahovací odpor vůči GND. Poté připojíme 1, 2, 4, 8 pinů číslice jedna k GPBA0 ~ 3; číslice dvě 1, 2, 4, 8 až GPA4 ~ 7; číslice tři 1, 2, 4, 8 až GPB0 ~ 3 a číslice čtyři 1, 2, 4, 8 až GPB4 ~ 7.
Jak teď přečteme přepínače? Všechny tyto dráty vám mohou způsobit, že si myslíte, že je to obtížné, ale skica je celkem jednoduchá. Když odečteme hodnotu GPBA a B, vrátí se jeden bajt pro každou banku, přičemž nejdřív se použije nejvýznamnější bit. Každé čtyři bity budou odpovídat nastavení přepínače připojeného k odpovídajícím I/O pinům. Pokud například požadujeme data pro IO banky a přepínače jsou nastaveny na 1 2 3 4 - banka A vrátí 0010 0001 a banka B vrátí 0100 0011.
Pomocí některých operací bitshift oddělíme každé čtyři bity do samostatné proměnné - což nám ponechá hodnotu každé číslice. Například, abychom oddělili hodnotu přepínače čtyři, přesuneme bity z banky B >> 4. Tím se hodnota přepínače tři vytlačí ven a prázdné bity vlevo se stanou nulou.
K oddělení hodnoty pro přepínač tři používáme složenou bitovou & - která ponechá hodnotu přepínače tři. Obrázek ukazuje rozpis hodnot binárních přepínačů - ukazuje nezpracované hodnoty bajtů GPIOA a B, pak binární hodnotu každé číslice a desetinnou hodnotu.
Krok 9:
Pojďme se tedy podívat na ukázkový náčrtek:
/ * Příklad 40a-Přečíst čtyři tlačítkové BCD přepínače přes MCP23017, zobrazení na SAA1064/4místný 7segmentový LED displej */// MCP23017 piny 15 ~ 17 na GND, adresa sběrnice I2C je 0x20 // Adresa sběrnice SAA1064 I2C 0x38 # zahrnout „Wire.h“// pro definice číslic LED int číslice [16] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111, 119, 124, 57, 94, 121, 113 }; byte GPIOA, GPIOB, dig1, dig2, dig3, dig4; void initSAA1064 () {// nastavení 0x38 Wire.beginTransmission (0x38); Wire.write (0); Wire.write (B01000111); // výstup 12mA, bez zatemňování číslic Wire.endTransmission (); } neplatné nastavení () {Serial.begin (9600); Wire.begin (); // spuštění sběrnice I2C initSAA1064 (); } void loop () {// přečte vstupy banky A Wire.beginTransmission (0x20); Wire.write (0x12); Wire.endTransmission (); Wire.requestFrom (0x20, 1); GPIOA = Wire.read (); // tento byte obsahuje data přepínače pro číslice 1 a 2 // čte vstupy banky B Wire.beginTransmission (0x20); Wire.write (0x13); Wire.endTransmission (); Wire.requestFrom (0x20, 1); GPIOB = Wire.read (); // tento byte obsahuje data přepínače pro číslice 3 a 4 // extrahovací hodnota pro každý přepínač // dig1 LHS, dig4 RHS dig4 = GPIOB >> 4; dig3 = GPIOB & B00001111; dig2 = GPIOA >> 4; dig1 = GPIOA & B00001111; // odeslání všech dat GPIO a jednotlivých přepínačů na sériový monitor // kvůli ladění a zájmu Serial.print ("GPIOA ="); Serial.println (GPIOA, BIN); Serial.print ("GPIOB ="); Serial.println (GPIOB, BIN); Serial.println (); Serial.print ("číslice 1 ="); Serial.println (dig1, BIN); Serial.print ("číslice 2 ="); Serial.println (dig2, BIN); Serial.print ("digit 3 ="); Serial.println (dig3, BIN); Serial.print ("číslice 4 ="); Serial.println (dig4, BIN); Serial.println (); Serial.print ("číslice 1 ="); Serial.println (dig1, DEC); Serial.print ("číslice 2 ="); Serial.println (dig2, DEC); Serial.print ("digit 3 ="); Serial.println (dig3, DEC); Serial.print ("číslice 4 ="); Serial.println (dig4, DEC); Serial.println (); // odeslání hodnoty spínače na LED displej přes 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 (); zpoždění (10); zpoždění (1000); }
A pro nevěřící … video ukázka.
Tak tady to máte. Čtyři číslice místo jedné a přes sběrnici I2C šetřící digitální I/O piny Arduino. Pomocí osmi MCP23017 můžete přečíst 32 číslic najednou. Bavte se s tím!
U PMD Way si můžete objednat BCD i desítkové přepínače v různých velikostech s doručením zdarma po celém světě.
Tento příspěvek vám přinesl web pmdway.com - vše pro výrobce a nadšence do elektroniky s doručením zdarma po celém světě.
Doporučuje:
Modifikace WiFi přepínače Sinilink se snímačem napětí/proudu INA219: 11 kroků
Modifikace WiFi přepínače Sinilink se snímačem napětí/proudu INA219: USB přepínač Sinilink XY-WFUSB WIFI je pěkné malé zařízení pro vzdálené zapnutí/vypnutí připojeného zařízení USB. Bohužel mu chybí schopnost měřit napájecí napětí nebo použitý proud připojeného zařízení. Tento návod ukazuje, jak upravuji
Snadno namontovatelné blikání přepínače světla: Ovládané smartphonem s BLYNK: 10 kroků
Snadno namontovatelné blikání přepínače světla: Ovládané chytrým telefonem pomocí BLYNK: Zařízení IoT se rychle stávají stále populárnějšími, tak proč se nenaučíte a nevytvoříte si vlastní zařízení IoT z levných materiálů a tvrdé práce, abyste mohli dělat věci, které jste dříve nemohli „Moje jména Szehuai a já se vždy ocitneme před usnutím, ale
Použití modulu TTP223 jako přepínače: 5 kroků
Používání modulu TTP223 jako přepínače: Tento návod se týká kapacitního dotykového modulu TTP223. Potřebujete pouze základní znalosti z elektroniky a programování arduina. Pokud máte nějaké dotazy nebo problémy, můžete mě kontaktovat na mém e -mailu: [email protected] . Zde je odkaz na video m
Vylepšení USB přepínače: 5 kroků (s obrázky)
Vylepšení přepínače USB: Doma používám dva počítače spojené dohromady k jednomu monitoru, jedné klávesnici a jedné myši pomocí přepínače KVM. Na stole mám také tiskárnu, kterou sdílím mezi oběma počítači. Přepínač KVM bohužel nepodporuje multiplexování USB a
ČÁST 2 - SESTAVA GPIO ARM - RGB - FUNKČNÍ HOVORY - Přepínače: 6 kroků
ČÁST 2 - SESTAVA GPIO ARM - RGB - FUNKČNÍ HOVORY - Přepínače: V části 1 jsme se naučili přepínat jednu červenou LED na vývojové desce MSP432 LaunchPad od společnosti Texas Instruments pomocí montáže namísto C / C ++. V tomto Instructable jsme udělá něco podobného - ovládá RGB LED, která je také na tom samém