Innholdsfortegnelse:
Video: Rotary Encoder - Forstå og bruk den (Arduino/annen Μkontroller): 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
En roterende encoder er en elektro-mekanisk enhet som konverterer rotasjonsbevegelse til digital eller analog informasjon. Den kan snu med eller mot klokken. Det er to typer roterende encoders: Absolutte og relative (inkrementelle) encoders.
Mens en absolutt encoder sender ut en verdi som er proporsjonal med gjeldende akselvinkel, sender en inkrementell encoder trinnet til akselen og dens retning. (I dette tilfellet har vi en inkrementell encoder)
Rotary encoders blir stadig mer populært fordi du kan bruke to funksjoner i en elektrisk modul: En enkel switch for bekreftelse av operasjoner og roterende encoder for å navigere, f.eks. gjennom en meny.
En inkrementell roterende encoder genererer to utgangssignaler mens akselen roterer. Avhengig av retningen leder det ene signalet det andre. (se nedenfor)
Trinn 1: Forstå utdataene
Som du kan se når kodeakselen begynner å rotere med klokken, faller utgang A til LAV først og utgang B følger den. I retning mot klokken vender operasjonen motsatt.
Nå må vi bare implementere dette på vår µController (jeg brukte en Arduino Nano).
Trinn 2: Bygg kretsen
Som jeg beskrev før, lager utgangene en HØY og en LAV flanke. For å få en ren HIGH ved datapinnen A og B på µController må vi legge til Pull-Up-motstander. Den vanlige Pin C går rett til bakken for den LAVE flanken.
For å få informasjon om den interne bryteren (trykknapp) bruker vi de to andre pinnene. En av dem går til VCC og den andre til en datapinne på µController. Vi må også legge til en Pull-Down Resistor i datapinnen for å få en ren LOW.
Det er også mulig å bruke interne Pull-Up og Pull-Down motstander på µController!
I mitt tilfelle ser pinout slik ut:
- +3, 3V => +3, 3V (Arduino) (også +5V mulig)
- GND => GND (Arduino)
- A => Pin10
-
B =>
Pin
11
- C => GND
-
SW =>
Pin
12
Trinn 3: Skrive koden
int pinA = 10; // intern bryter A int pinB = 11; // intern bryter B int pinSW = 12; // switch (presset Encoder) int encoderPosCount = 0; // starter på null, endre hvis du vil
int posisjonval;
bool switchvalval; int mrotateLast; int mrotate;
ugyldig oppsett () {
int mrotateLast = digitalRead (pinA); Serial.begin (9600); forsinkelse (50); }
void loop () {readencoder (); if (readwitch () == 1) {Serial.println ("Switch = 1"); }}
int readencoder () {
mrotate = digitalRead (pinA); hvis (mrotate! = mrotateLast) {// knotten roterer hvis (digitalRead (pinB)! = mrotate) {// switch A endret først -> roterer med klokken encoderPosCount ++; Serial.println ("rotert med klokken"); } annet {// bryter B endret først-> roterer encoderPosCount mot klokken; Serial.println ("rotert mot klokken"); }
Serial.print ("Encoder Position:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; return encoderPosCount; } bool readwitch () {
hvis (digitalRead (pinSW)! = 0) {// bryteren er trykket
mens (digitalRead (pinSW)! = 0) {} // bryteren er trykket på switchval = 1; } annet {switchval = 0;} // switch er upresset retur switchval; }
Nå kan du snu encoder og variabelen encoderPosCount teller opp hvis du roterer med klokken og teller ned hvis du roterer mot klokken.
Det er det! Enkelt og nyttig.
Du er velkommen til å endre og utføre koden. Du kan implementere det i prosjektet ditt.
Jeg vil også laste opp et LED -prosjekt der jeg brukte koderen for å angi lysstyrken på lysdiodene mine.
Anbefalt:
Timer med Arduino og Rotary Encoder: 5 trinn
Timer med Arduino og Rotary Encoder: Timeren er et verktøy som ofte brukes i både industrielle og husholdningsaktiviteter. Denne monteringen er billig og enkel å lage. Den er også veldig allsidig og kan laste inn et program valgt etter behov. Det er flere programmer skrevet av meg, for Ardui
Bruk telefonen som en annen skjerm: 5 trinn
Bruk telefonen som en annen skjerm: Vi har alle hatt en erfaring med å jobbe hjemmefra. Det gir oss luksusen å fullføre jobber eller oppdrag fra komforten i våre egne hjem. Imidlertid ønsker vi alle å fullføre disse oppgavene på den mest effektive og produktive måten som er mulig, slik at
Power Timer Med Arduino og Rotary Encoder: 7 trinn (med bilder)
Power Timer With Arduino and Rotary Encoder: Denne Power Timer er basert på timeren som presenteres på: https: //www.instructables.com/id/Timer-With-Arduin…En strømforsyningsmodul og et SSR (solid state relé) ) .Last på opptil 1KW kan betjenes og med minimale endringer
USB volumknapp ved bruk av DigiSpark og Rotary Encoder: 3 trinn
USB volumknapp ved bruk av DigiSpark og Rotary Encoder: Dette er en super billig USB volumkontrollknapp. Noen ganger er tradisjonelle knapper mer praktiske å kontrollere ting i stedet for å klikke musen overalt. Dette prosjektet bruker DigiSpark, en Rotary Encoder og Adafruit Trinket USB Library (https: //github.c
(Ascensor) Heismodell ved bruk av Arduino, App Inventor og annen gratis programvare: 7 trinn
(Ascensor) Heismodell ved bruk av Arduino, App Inventor og annen gratis programvare: ESPConstrucción, paso a paso, de un ascensor a escala usando arduino (como controlador del motor and entrada og salidas for bluetooth), app inventor (para diseño de aplicación como panel de control del ascensor) og freeCAD og LibreCAD para diseño.Abajo