Potenciometre a otočné enkodéry vyzerajú na prvý pohľad takmer identicky, no fungujú rôznymi spôsobmi. Zistite, ako používať oboje s Arduino.
Medzi elektronickými používateľskými ovládacími komponentmi vynikajú otočné gombíky ako jedny z najuspokojivejších pri používaní. Môžu dopĺňať dotykové obrazovky a iné vstupné zariadenia, rovnako dobre fungujú s tlačidlami a prepínačmi. Ale ako môžete pridať gombík do svojich vlastných DIY Arduino projektov?
Máte dve hlavné možnosti: potenciometer alebo rotačný enkodér. Tieto komponenty môžu vyzerať podobne, ale spôsoby ich použitia so zariadením, ako je doska mikrokontroléra Arduino, sú veľmi odlišné. Pozrime sa, ako sa navzájom porovnávajú.
Potenciometre vs. Rotačné kódovače
Väčšina potenciometrov a rotačných enkodérov, s ktorými sa domáci kutilovia stretnú, má podobný tvar. Majú kvádrovú alebo valcovú základňu s pripojenými spojovacími nohami a okrúhly hriadeľ, ktorý sa otáča a má výrezy na čiapku, na ktorú sa dá sedieť.
Niektoré potenciometre vyzerajú odlišne, napríklad tie, ktoré sa dodávajú vo forme dlhých sklíčok, ako tie, ktoré nájdete na hudobných mixážnych pultoch. Pokiaľ však ide o rotačný typ, na prvý pohľad vyzerajú takmer identicky s rotačnými kódovačmi, takže by vám bolo odpustené, keby ste si mysleli, že sú rovnaké.
Čo je potenciometer?
Potenciometer je v podstate premenlivý odpor. Pri otáčaní hriadeľa sa mení odpor vo vnútri potenciometra, čo umožňuje užívateľovi meniť vlastnosti obvodu bez toho, aby ho musel prestavovať. Potenciometre môžu byť analógové aj digitálne, ale digitálne potenciometre napodobňujú analógové, vďaka čomu sú veľmi podobné.
Potenciometre majú vždy definovaný začiatočný a koncový bod, kde sa hriadeľ už nedá otáčať. Niektoré potenciometre majú hrboľatý pocit pri otáčaní, ale mnohé sú tiež hladké, ako tie, ktoré nájdete na starých stereo.
Napriek tomu, že sú analógové, potenciometre fungujú dobre s mikrokontrolérmi. Môžete ľahko nastavte potenciometer s Raspberry Pi Pico alebo Arduino.
Čo je rotačný kódovač?
Rotačné snímače určujú polohu svojho hriadeľa pomocou snímača, ktorý poskytuje analógový alebo digitálny signál zariadeniu, ku ktorému sú pripojené. Toto povie zariadeniu, v ktorej polohe je kódovač. Okrem otočného hriadeľa majú otočné snímače zvyčajne tiež zabudované tlačidlo, ktoré sa ovláda zatlačením hriadeľa nadol.
Na rozdiel od potenciometrov sa otočné snímače môžu otáčať bez zastavenia a takmer vždy majú hmatové hrbole pre každú polohu hriadeľa. Mnoho moderných automobilov používa na ovládanie svojich zábavných systémov rotačné kódovače.
Ako používať potenciometer s Arduinom
Vďaka ich jednoduchému dizajnu je použitie potenciometra s Arduinom jednoduché. Váš potenciometer má tri konektory: zem, výstup a vref. Uzemňovacie a vref kolíky sa pripájajú ku konektorom GND a 5V na vašom Arduine, zatiaľ čo výstupný kolík potenciometra sa pripája k jednému z analógových vstupov na vašej doske.
Kód potenciometra Arduino
Kód vášho potenciometra Arduino začína základným nastaviť() a slučka() šablónu, ktorú uvidíte, keď vytvoríte nový súbor v Arduino IDE. Najprv pridajte a const int premenná na začiatku kódu na registráciu analógového kolíkového spojenia hrnca – v tomto prípade A0.
konštint potenciometer = A0;
V nadväznosti na to, nastaviť() funkcia je jednoduchá: stačí deklarovať kolík potenciometra ako vstup. Môžete tiež spustiť sériové pripojenie, ak chcete odoslať údaje do počítača na diagnostiku.
neplatnénastaviť(){
pinMode (potenciometer, INPUT);
Serial.začať(9600);
}
Ďalej je čas nastaviť slučka() funkciu. Začnite vytvorením int premenná pomocou analogRead() funkcia na uloženie polohy vášho potenciometra. V nadväznosti na to môžete použiť mapa() funkcia na zmenšenie veľkosti hodnoty, s ktorou máte čo do činenia – v tomto príklade na zhodu so špecifikáciami PWM, napríklad na ovládanie jasu LED. Pridajte krátke oneskorenie, aby ste zaistili stabilitu.
neplatnéslučka(){
int potenciometerValue = analogRead (potenciometer);
mapa (potenciometerValue, 0, 1023, 0, 255);
Serial.println(potenciometerHodnota);
oneskorenie (10);
}
Teraz, keď máte polohu svojho potenciometra, môžete ho použiť s inými časťami kódu. Napríklad an ak príkaz by fungoval dobre na spustenie kódu, keď je potenciometer v špecifickej polohe.
konštint potenciometer = A0;
neplatnénastaviť(){
pinMode (potenciometer, INPUT);
Serial.začať(9600);
}
neplatnéslučka(){
int potenciometerValue = analogRead (potenciometer);
mapa (potenciometerValue, 0, 1023, 0, 255);
Serial.println(potenciometerHodnota);
oneskorenie (10);
}
Ako používať rotačný kodér s Arduino
Rotačné kódovače vyžadujú zložitejší kód ako potenciometre, ale stále sa s nimi dá pomerne ľahko pracovať. Váš rotačný enkodér má päť kolíkov: zem, VCC, kolík tlačidla (SW), výstup A (CLK) a výstup B (DT). Uzemňovacie a VCC kolíky sa pripájajú k zemným a 5V konektorom na vašom Arduine, zatiaľ čo kolíky SW, CLK a BT sa pripájajú k jednotlivým digitálnym konektorom na Arduine.
Kód rotačného kodéra Arduino
Aby bol náš kód jednoduchší a ľahšie sa s ním pracovalo, použijeme knižnicu SimpleRotary Arduino vytvorenú spoločnosťou MPrograms na GitHub. Pred začatím práce na kóde sa uistite, že máte nainštalovanú túto knižnicu.
Podobne ako váš kód potenciometra, môžete spustiť skript rotačného kódovača so základným Arduino nastaviť() a slučka() funkčná šablóna. Začnite deklarovaním knižnice SimpleRotary a priradením pinov kódovača v tomto poradí; CLK, DT a SW.
#include
JednoduchéRotačné rotačné(1,2,3);
K tomu nemusíte nič pridávať nastaviť() ak nechcete použiť sériový monitor na diagnostiku vášho rotačného kódovača.
neplatnénastaviť(){
Serial.začať(9600);
}
The slučka() funkcia je iný príbeh. Určenie otáčania hriadeľa kódovača začína a rotary.rotate() volanie funkcie, ktoré je priradené k int premenlivý. Ak je výsledok 1, kodér sa otáča v smere hodinových ručičiek. Ak je výsledok 2, kodér sa otáča proti smeru hodinových ručičiek. Výsledok bude vždy 0, ak sa kódovač od poslednej kontroly neotočil.
Môžeš použiť ak príkazy na spustenie iného kódu v závislosti od smeru rotácie kódovača.
neplatnéslučka(){
int encoderRotation;
encoderRotation = rotacny.rotate();if (encoderRotation == 1) {
Serial.println("v smere hodinových ručičiek");
}
if (encoderRotation == 2) {
Serial.println("proti smeru hodinových ručičiek");
}
}
Musíte tiež pridať nejaký kód pre tlačidlo vášho kódovača do slučka() funkciu. Tento proces je veľmi podobný, až na to, že použijete rotačné.stlačiť() funkciu, nie rotary.rotate().
neplatnéslučka(){
int encoderButton;
encoderButton = rotačné.push();
if (encoderButton == 1) {
Serial.println("tlačidlo stlačené");
}
}
Tento skript je pomerne jednoduchý a môžete urobiť veľa, aby ste si ho prispôsobili. Oplatí sa pozrieť si projektovú dokumentáciu SimpleRotary, aby ste sa uistili, že používate všetky jej kľúčové funkcie. Po zostavení by váš kód kódovača mal vyzerať takto.
#include
JednoduchéRotačné rotačné(1,2,3);neplatnénastaviť(){
Serial.začať(9600);
}neplatnéslučka(){
int encoderRotation;
encoderRotation = rotacny.rotate();if (encoderRotation == 1) {
Serial.println("v smere hodinových ručičiek");
}if (encoderRotation == 2) {
Serial.println("proti smeru hodinových ručičiek");
}int encoderButton;
encoderButton = rotačné.push();
if (encoderButton == 1) {
Serial.println("tlačidlo stlačené");
}
}
Ako si vybrať medzi potenciometrami a rotačnými kódovačmi pre projekty
Ako vidíte, otočné enkodéry a potenciometre fungujú celkom inak. Oba tieto komponenty vám poskytujú nové spôsoby ovládania vašich elektronických projektov, ale ktorý by ste si mali vybrať?
Potenciometre sú cenovo dostupné a ľahko sa používajú, ale umožňujú len obmedzený vstupný rozsah. Vďaka tomu sú skvelé, keď chcete ovládať jas LED alebo zvýšiť a znížiť výkon pre konkrétne komponenty a iné podobné úlohy.
Rotačné snímače poskytujú oveľa väčší rozsah ako potenciometre. Zahrnutie tlačidla znamená, že sú skvelé pre systémy ovládania menu, ako je vidieť v mnohých moderných automobiloch. Tento typ súčiastok sa stal veľmi populárnym v stavebníctve mechanických klávesníc. Môžete dokonca postaviť malý makropad so vstavaným kódovačom.
Podobný vzhľad, rôzne komponenty
So všetkými týmito informáciami by ste mali byť pripravení začať s elektronickým projektom s potenciometrom alebo otočným kódovačom. Tieto komponenty vám môžu poskytnúť veľa kontroly nad obvodmi, ktoré zostavujete, ale musíte sa uistiť, že ste si vybrali správnu možnosť pre svoj projekt.