Come usare l'encoder rotante KY-040 con Arduino

How to Use the KY-040 Rotary Encoder with Arduino

L'encoder rotante KY-040 è un dispositivo meccanico utilizzato per misurare la posizione o la rotazione angolare. È comunemente usato nei controlli di volume, nella navigazione dei menu e nel monitoraggio della posizione in robotica. Questo tutorial ti guiderà attraverso la connessione e l'utilizzo dell'encoder rotante KY-040 con Arduino.


Cosa avrai bisogno

  1. Modulo encoder rotante KY-040
  2. Arduino Board (ad es. Uno, Mega, Nano)
  3. Breadboard e fili jumper
  4. Un computer con l'IDE Arduino installato

Passaggio 1: comprensione dell'encoder rotante KY-040

L'encoder KY-040 è costituito da un quadrante rotante che genera impulsi quando ruotato. Include anche un pulsante integrato.

Pinout KY-040

Spillo Funzione
GND Terra
+ Alimentazione (5V)
CLK Segnale di impulso di clock
Dt Segnale di impulsi di dati
SW Segnale di pulsante

Passaggio 2: Cablaggio del KY-040 ad Arduino

Ecco come collegare il KY-040 a un Arduino Uno:

PIN KY-040 Arduino Pin
GND GND
+ 5v
CLK Pin 2
Dt Pin 3
SW Pin 4

Passaggio 3: caricare il codice

Il seguente codice di esempio legge la rotazione dell'encoder rotante e rileva il pulsante:

#define CLK 2  // Clock pin
#define DT 3   // Data pin
#define SW 4   // Switch pin

int counter = 0;     // Counter to track rotation
int currentStateCLK;
int lastStateCLK;

void setup() {
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP); // Internal pull-up for the button

  Serial.begin(9600);

  // Read the initial state of the CLK pin
  lastStateCLK = digitalRead(CLK);

  Serial.println("KY-040 Rotary Encoder Test");
}

void loop() {
  // Read the current state of the CLK pin
  currentStateCLK = digitalRead(CLK);

  // If the state has changed, the encoder has rotated
  if (currentStateCLK != lastStateCLK) {
    // Check the DT pin to determine the rotation direction
    if (digitalRead(DT) != currentStateCLK) {
      counter++;
    } else {
      counter--;
    }

    Serial.print("Counter: ");
    Serial.println(counter);
  }

  // Save the last state of CLK
  lastStateCLK = currentStateCLK;

  // Check if the button is pressed
  if (digitalRead(SW) == LOW) {
    Serial.println("Button pressed!");
    delay(200); // Debounce delay
  }
}

Passaggio 4: testare l'installazione

  1. Collega l'Arduino al tuo computer tramite USB.
  2. Apri l'IDE Arduino e seleziona il corretto Asse E Porta sotto il Utensili menu.
  3. Carica il codice facendo clic Caricamento.
  4. Apri il monitor seriale (Utensili > Monitor seriale) e impostare il tasso di baud su 9600.
  5. Ruota l'encoder e premere il pulsante. Osservare il contatore e il pulsante Premere i messaggi nel monitor seriale.

Applicazioni dell'encoder rotante KY-040

  1. Volume o controllo della luminosità
  2. Navigazione del menu
  3. Tracciamento della posizione del motore
  4. Sistemi di robotica e automazione

Risoluzione dei problemi

  • Nessun rilevamento della rotazione: Controllare il cablaggio CLK e DT e assicurarsi che i pin corrispondano al codice.
  • Letture instabili: Aggiungi un piccolo ritardo di deboa per stabilizzare i segnali dell'encoder.
  • Pulsante non rilevato: Verificare che il pin SW sia correttamente collegato e usa INPUT_PULLUP modalità.

Conclusione

Hai interfacciato correttamente l'encoder rotante KY-040 con Arduino. Questo modulo versatile consente di aggiungere il monitoraggio della rotazione e la funzionalità dei pulsanti ai progetti. Sperimenta con esso in diverse applicazioni, come la costruzione di controlli personalizzati o i menu di navigazione nei tuoi sistemi!

Lascia un commento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.