Potențiometrele și codificatoarele rotative arată aproape identice la prima vedere, dar funcționează în moduri diferite. Descoperiți cum să le utilizați pe ambele cu un Arduino.

Printre componentele electronice de control al utilizatorului, butoanele rotative se remarcă ca unele dintre cele mai satisfăcătoare de utilizat. Acestea pot completa ecranele tactile și alte dispozitive de intrare și pot funcționa bine cu butoanele și comutatoarele. Dar cum poți adăuga un buton la propriile proiecte DIY Arduino?

Aveți două opțiuni principale: un potențiometru sau un encoder rotativ. Aceste componente pot arăta similare, dar metodele de utilizare a acestora cu un dispozitiv precum o placă de microcontroler Arduino sunt foarte diferite. Să vedem cum se compară între ele.

Potențiometre vs. Codificatoare rotative

Majoritatea potențiometrelor și codificatoarelor rotative pe care pasionații de bricolaj le vor întâlni vin într-un factor de formă similar. Au o bază cuboidă sau cilindrică cu picioare conector atașate și un arbore rotund care se răsucește și are decupaje pe care să se așeze un capac.

instagram viewer

Unele potențiometre arată diferit, cum ar fi cele care vin sub formă de diapozitive lungi, cum ar fi cele care se găsesc pe platourile de mixare muzicală. Când vine vorba de tipul rotativ, totuși, la prima vedere, acestea arată aproape identice cu codificatoarele rotative, așa că ați fi iertat să credeți că sunt la fel.

Ce este un potențiometru?

Un potențiometru este în esență un rezistor variabil. Pe măsură ce arborele este rotit, rezistența din interiorul potențiometrului se modifică, permițând utilizatorului să modifice proprietățile unui circuit fără a fi nevoit să-l reconstruiască. Potențiometrele pot fi atât analogice, cât și digitale, dar potențiometrele digitale le imită pe cele analogice și acest lucru le face foarte asemănătoare utilizării.

Potențiometrele au întotdeauna un punct de început și un punct de sfârșit definit în care arborele nu mai poate fi rotit. Unele potențiometre au o senzație accidentată când sunt răsucite, dar multe sunt, de asemenea, netede, ca cele găsite pe vechile aparate stereo.

În ciuda faptului că sunt analogice, potențiometrele funcționează bine cu microcontrolere. Poți cu ușurință configurați un potențiometru cu un Raspberry Pi Pico sau Arduino.

Ce este un codificator rotativ?

Codificatoarele rotative determină poziția arborelui lor folosind un senzor pentru a furniza un semnal analogic sau digital dispozitivului la care sunt conectați. Aceasta îi spune dispozitivului în ce poziție se află codificatorul. Pe lângă arborele rotativ, codificatoarele rotative au de obicei și un buton încorporat care este acționat prin împingerea arborelui în jos.

Spre deosebire de potențiometre, codificatoarele rotative se pot întoarce fără oprire și au aproape întotdeauna denivelări tactile pentru fiecare dintre pozițiile arborelui. Multe mașini moderne folosesc codificatoare rotative pentru a-și controla sistemele de divertisment.

Cum să utilizați un potențiometru cu un Arduino

Datorită designului lor simplu, utilizarea unui potențiometru cu un Arduino este simplă. Potențiometrul tău are trei conectori: masă, ieșire și vref. Pinii de masă și vref se conectează la conectorii GND și respectiv 5V de pe Arduino, în timp ce pinul de ieșire al potențiometrului se conectează la una dintre intrările analogice de pe placa dvs.

Cod potențiometru Arduino

Codul potențiometrului Arduino începe cu cel de bază înființat() și buclă() șablon pe care îl veți vedea când creați un fișier nou în IDE-ul Arduino. Mai întâi, adăugați a const int variabilă la începutul codului pentru a înregistra conexiunea pin analog al potului - în acest caz, A0.

constint potențiometru = A0;

În urma acesteia, înființat() funcția este simplă: trebuie doar să declarați pinul potențiometrului ca intrare. De asemenea, puteți începe o conexiune serială dacă doriți să trimiteți date către computer pentru diagnosticare.

golînființat(){
pinMode (potențiometru, INPUT);
Serial.ÎNCEPE(9600);
}

Apoi, este timpul să configurați buclă() funcţie. Începeți prin a crea un int variabilă folosind analogRead() funcția pentru a stoca poziția potențiometrului. După aceasta, puteți utiliza Hartă() funcție pentru a reduce dimensiunea valorii cu care aveți de-a face - în acest exemplu pentru a se potrivi cu specificațiile PWM, de exemplu pentru a controla luminozitatea unui LED. Adăugați o scurtă întârziere pentru a asigura stabilitatea.

golbuclă(){
int potentiometerValue = analogRead (potențiometru);
harta (potentiometerValue, 0, 1023, 0, 255);
Serial.println(potențiometruValoare);
întârziere (10);
}

Acum că aveți poziția potențiometrului, îl puteți utiliza cu alte părți ale codului. De exemplu, an dacă declarația ar funcționa bine pentru a declanșa codul atunci când potențiometrul este într-o anumită poziție.

constint potențiometru = A0;

golînființat(){
pinMode (potențiometru, INPUT);
Serial.ÎNCEPE(9600);
}

golbuclă(){
int potentiometerValue = analogRead (potențiometru);
harta (potentiometerValue, 0, 1023, 0, 255);
Serial.println(potențiometruValoare);
întârziere (10);
}

Cum să utilizați un encoder rotativ cu un Arduino

Codificatoarele rotative necesită un cod mai complicat decât potențiometrele, dar sunt încă destul de ușor de utilizat. Codificatorul dvs. rotativ are cinci pini: masă, VCC, un pin de buton (SW), ieșire A (CLK) și ieșire B (DT). Pinii de masă și VCC se conectează la conectorii de masă și respectiv de 5V de pe Arduino, în timp ce pinii SW, CLK și BT se conectează la conectorii digitali individuali de pe Arduino.

Cod codificator rotativ Arduino

Pentru a face codul nostru mai simplu și mai ușor de lucrat, vom folosi biblioteca SimpleRotary Arduino creată de MPrograms pe GitHub. Asigurați-vă că aveți această bibliotecă instalată înainte de a începe să lucrați la codul dvs.

La fel ca codul potențiometrului, puteți începe scriptul codificatorului rotativ cu Arduino de bază înființat() și buclă() șablon de funcție. Începeți prin a declara biblioteca SimpleRotary și alocați pinii codificatorului în această ordine; CLK, DT și SW.

#include 
SimpluRotary rotativ(1,2,3);

Nu trebuie să adăugați nimic la dvs înființat() cu excepția cazului în care doriți să utilizați monitorul serial pentru a diagnostica codificatorul rotativ.

golînființat(){
Serial.ÎNCEPE(9600);
}

The buclă() funcția este o altă poveste. Determinarea rotației arborelui codificatorului începe cu a rotativ.rotate() apel de funcție care este atribuit unui int variabil. Dacă rezultatul este 1, codificatorul se rotește în sensul acelor de ceasornic. Dacă rezultatul este 2, codificatorul se rotește în sens invers acelor de ceasornic. Rezultatul va fi întotdeauna 0 dacă codificatorul nu s-a rotit de la ultima verificare.

Poți să folosești dacă instrucțiuni pentru a declanșa alt cod în funcție de direcția de rotație a codificatorului.

golbuclă(){
int encoderRotation;
encoderRotation = rotativ.rotate();

if (encoderRotation == 1) {
Serial.println("in sensul acelor de ceasornic");
}

if (encoderRotation == 2) {
Serial.println(„în sens invers acelor de ceasornic”);
}
}

De asemenea, trebuie să adăugați un cod pentru butonul codificatorului dvs. la buclă() funcţie. Acest proces este foarte asemănător, cu excepția faptului că veți utiliza rotativ.push() funcția, mai degrabă decât rotativ.rotate().

golbuclă(){
int encoderButton;
encoderButton = rotativ.push();

if (encoderButton == 1) {
Serial.println("buton apăsat");
}
}

Acest script este destul de simplu și poți face multe pentru a-l face al tău. Merită să verificați documentația proiectului SimpleRotary pentru a vă asigura că utilizați toate caracteristicile sale cheie. Odată pus împreună, codul codificatorului ar trebui să arate astfel.

#include 
SimpluRotary rotativ(1,2,3);

golînființat(){
Serial.ÎNCEPE(9600);
}

golbuclă(){
int encoderRotation;
encoderRotation = rotativ.rotate();

if (encoderRotation == 1) {
Serial.println("in sensul acelor de ceasornic");
}

if (encoderRotation == 2) {
Serial.println(„în sens invers acelor de ceasornic”);
}

int encoderButton;
encoderButton = rotativ.push();

if (encoderButton == 1) {
Serial.println("buton apăsat");
}
}

Cum să alegi între potențiometre și codificatoare rotative pentru proiecte

După cum puteți vedea, codificatoarele rotative și potențiometrele funcționează destul de diferit. Ambele componente vă oferă noi modalități de a vă controla proiectele electronice, dar pe care ar trebui să o alegeți?

Potențiometrele sunt accesibile și ușor de utilizat, dar permit doar o gamă de intrare limitată. Acest lucru le face grozave atunci când doriți să controlați luminozitatea unui LED sau să creșteți și să reduceți puterea pentru anumite componente și alte sarcini similare.

Codificatoarele rotative oferă mult mai mult spațiu decât potențiometrele. Includerea unui buton înseamnă că acestea sunt grozave pentru sistemele de control al meniului, așa cum se vede în multe mașini moderne. Acest tip de componentă a devenit foarte popular în spațiul de construcție a tastaturii mecanice. Poți chiar construiți un macropad mic cu codificator încorporat.

Aspect similar, componente diferite

Cu toate aceste informații sub control, ar trebui să fiți gata să începeți un proiect electronic cu un potențiometru sau un encoder rotativ. Aceste componente vă pot oferi o mulțime de control asupra circuitelor pe care le construiți, dar trebuie să vă asigurați că alegeți opțiunea corectă pentru proiectul dvs.