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
- Modulo encoder rotante KY-040
- Arduino Board (ad es. Uno, Mega, Nano)
- Breadboard e fili jumper
- 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
- Collega l'Arduino al tuo computer tramite USB.
- Apri l'IDE Arduino e seleziona il corretto Asse E Porta sotto il Utensili menu.
- Carica il codice facendo clic Caricamento.
- Apri il monitor seriale (Utensili > Monitor seriale) e impostare il tasso di baud su
9600
. - 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
- Volume o controllo della luminosità
- Navigazione del menu
- Tracciamento della posizione del motore
- 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!