Potensiometre og roterende enkodere ser nesten identiske ut ved første øyekast, men de fungerer på forskjellige måter. Oppdag hvordan du bruker begge med en Arduino.
Blant elektroniske brukerkontrollkomponenter skiller roterende knotter seg ut som noen av de mest tilfredsstillende å bruke. De kan utfylle berøringsskjermer og andre inndataenheter, i tillegg til å fungere godt med knapper og brytere. Men hvordan kan du legge til en knott til dine egne DIY Arduino-prosjekter?
Du har to hovedalternativer: et potensiometer eller en roterende koder. Disse komponentene kan se like ut, men metodene for å bruke dem med en enhet som et Arduino mikrokontrollerkort er veldig forskjellige. La oss se hvordan de sammenlignes med hverandre.
Potensiometre vs. Roterende kodere
De fleste potensiometrene og roterende kodere som gjør-det-selv-entusiaster vil møte kommer i en lignende formfaktor. De har en kubisk eller sylindrisk base med koblingsben festet, og et rundt skaft som vrir seg og har utskjæringer for en hette å sitte på.
Noen potensiometre ser annerledes ut, for eksempel de som kommer i form av lange lysbilder, som de som finnes på musikkmiksedekk. Når det kommer til den roterende typen, derimot, ser de ved første øyekast nesten identiske ut med roterende kodere, så du vil bli tilgitt for å tro at de er like.
Hva er et potensiometer?
Et potensiometer er i hovedsak en variabel motstand. Når akselen dreies, endres motstanden inne i potensiometeret, slik at en bruker kan endre egenskapene til en krets uten å måtte bygge den om. Potensiometre kan være både analoge og digitale, men digitale potensiometre etterligner analoge og dette gjør dem veldig like å bruke.
Potensiometre har alltid et definert start- og sluttpunkt hvor akselen ikke lenger kan dreies. Noen potensiometre har en humpete følelse når de dreies, men mange er også glatte, som de som finnes på gamle stereoanlegg.
Til tross for at de er analoge, fungerer potensiometre godt med mikrokontrollere. Du kan enkelt sette opp et potensiometer med en Raspberry Pi Pico eller Arduino.
Hva er en roterende koder?
Roterende kodere bestemmer posisjonen til akselen ved hjelp av en sensor for å gi et analogt eller digitalt signal til enheten de er koblet til. Dette forteller enheten hvilken posisjon koderen er i. Ved siden av den roterende akselen har rotasjonsgivere vanligvis også en innebygd knapp som aktiveres ved å skyve akselen nedover.
I motsetning til potensiometre kan roterende kodere snu uten å stoppe, og de har nesten alltid taktile støt for hver av akselens posisjoner. Mange moderne biler bruker roterende kodere for å kontrollere underholdningssystemene sine.
Hvordan bruke et potensiometer med en Arduino
Takket være deres enkle design er det enkelt å bruke et potensiometer med en Arduino. Potensiometeret ditt har tre kontakter: jord, utgang og vref. Jord- og vref-pinnene kobles til henholdsvis GND- og 5V-kontaktene på din Arduino, mens potensiometerets utgangspinne kobles til en av de analoge inngangene på kortet ditt.
Arduino potensiometerkode
Arduino-potensiometerkoden din starter med det grunnleggende oppsett() og Løkke() mal som du vil se når du oppretter en ny fil i Arduino IDE. Først legger du til en const int variabel i starten av koden for å registrere pottens analoge pin-tilkobling – i dette tilfellet A0.
konstint potensiometer = A0;
Etter dette har oppsett() funksjonen er enkel: du trenger bare å angi potensiometerets pinne som en inngang. Du kan også starte en seriell tilkobling hvis du vil sende data til PC-en din for diagnostikk.
tomromoppsett(){
pinMode (potensialmåler, INPUT);
Seriell.begynne(9600);
}
Deretter er det på tide å sette opp Løkke() funksjon. Start med å lage en int variabel ved å bruke analogRead() funksjon for å lagre posisjonen til potensiometeret ditt. Etter dette kan du bruke kart() funksjon for å redusere størrelsen på verdien du har å gjøre med – i dette eksemplet for å matche PWM-spesifikasjonene, for eksempel for å kontrollere lysstyrken til en LED. Legg til en kort forsinkelse for å sikre stabilitet.
tomromLøkke(){
int potensiometerVerdi = analogRead (potensiometer);
kart (potensiometerverdi, 0, 1023, 0, 255);
Seriell.println(potensiometerverdi);
forsinkelse (10);
}
Nå som du har posisjonen til potensiometeret ditt, kan du bruke det med andre deler av koden. For eksempel en hvis statement ville fungere bra for å utløse kode når potensiometeret er i en bestemt posisjon.
konstint potensiometer = A0;
tomromoppsett(){
pinMode (potensialmåler, INPUT);
Seriell.begynne(9600);
}
tomromLøkke(){
int potensiometerVerdi = analogRead (potensiometer);
kart (potensiometerverdi, 0, 1023, 0, 255);
Seriell.println(potensiometerverdi);
forsinkelse (10);
}
Hvordan bruke en roterende koder med en Arduino
Roterende kodere krever mer intrikat kode enn potensiometre, men de er fortsatt ganske enkle å jobbe med. Din roterende koder har fem pinner: jord, VCC, en knapppinne (SW), utgang A (CLK) og utgang B (DT). Jord- og VCC-pinnene kobles til henholdsvis jord- og 5V-kontaktene på din Arduino, mens SW-, CLK- og BT-pinnene kobles til individuelle digitale kontakter på Arduino.
Arduino Rotary Encoder Code
For å gjøre koden vår enklere og enklere å jobbe med, vil vi bruke SimpleRotary Arduino-biblioteket laget av MPrograms på GitHub. Sørg for at du har dette biblioteket installert før du begynner å jobbe med koden.
På samme måte som potensiometerkoden din, kan du starte rotasjonskoderskriptet med den grunnleggende Arduino oppsett() og Løkke() funksjonsmal. Start med å deklarere SimpleRotary-biblioteket og tilordne koderpinnene dine i denne rekkefølgen; CLK, DT og SW.
#inkludere
Enkel Rotary roterende(1,2,3);
Du trenger ikke legge til noe i din oppsett() funksjon med mindre du vil bruke den serielle monitoren til å diagnostisere rotasjonskoderen.
tomromoppsett(){
Seriell.begynne(9600);
}
De Løkke() funksjon er en annen historie. Bestemmelse av rotasjonen til enkoderakselen starter med en rotary.rotate() funksjonskall som er tilordnet en int variabel. Hvis resultatet er 1, dreier koderen med klokken. Hvis resultatet er 2, dreier koderen mot klokken. Resultatet vil alltid være 0 hvis koderen ikke har snudd siden siste kontroll.
Du kan bruke hvis setninger for å utløse annen kode avhengig av retningen på koderens rotasjon.
tomromLøkke(){
int encoderRotasjon;
encoderRotation = rotary.rotate();if (encoderRotation == 1) {
Serial.println("med urviseren");
}
if (encoderRotation == 2) {
Serial.println("mot klokken");
}
}
Du må også legge til noe kode for koderens knapp til Løkke() funksjon. Denne prosessen er veldig lik, bortsett fra at du vil bruke rotary.push() funksjon i stedet for rotary.rotate().
tomromLøkke(){
int encoderButton;
encoderButton = rotary.push();
if (encoderButton == 1) {
Serial.println("knapp trykket");
}
}
Dette skriptet er ganske enkelt, og du kan gjøre mye for å gjøre det til ditt eget. Det er vel verdt å sjekke ut SimpleRotary-prosjektdokumentasjonen for å sikre at du bruker alle nøkkelfunksjonene. Når den er satt sammen, skal enkoderkoden se slik ut.
#inkludere
Enkel Rotary roterende(1,2,3);tomromoppsett(){
Seriell.begynne(9600);
}tomromLøkke(){
int encoderRotasjon;
encoderRotation = rotary.rotate();if (encoderRotation == 1) {
Serial.println("med urviseren");
}if (encoderRotation == 2) {
Serial.println("mot klokken");
}int encoderButton;
encoderButton = rotary.push();
if (encoderButton == 1) {
Serial.println("knapp trykket");
}
}
Hvordan velge mellom potensiometre og roterende kodere for prosjekter
Som du kan se, fungerer roterende enkodere og potensiometre ganske annerledes. Begge disse komponentene gir deg nye måter å kontrollere elektronikkprosjektene dine på, men hvilken bør du velge?
Potensiometre er rimelige og enkle å bruke, men tillater bare et begrenset inngangsområde. Dette gjør dem flotte når du vil kontrollere lysstyrken til en LED, eller heve og senke strømmen til spesifikke komponenter og andre lignende oppgaver.
Roterende enkodere gir mye mer omfang enn potensiometre. Inkluderingen av en trykknapp betyr at de er flotte for menykontrollsystemer, som man ser i mange moderne biler. Denne typen komponent har blitt veldig populær i det mekaniske tastaturbygget. Du kan til og med bygge en liten macropad med innebygd koder.
Lignende utseende, forskjellige komponenter
Med all denne informasjonen under beltet, bør du være klar til å komme i gang med et elektronikkprosjekt med potensiometer eller roterende koder. Disse komponentene kan gi deg massevis av kontroll over kretsene du bygger, men du må sørge for at du velger riktig alternativ for prosjektet ditt.