Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
2.1.6 Drehgeber Modul
Einführung
In diesem Projekt werden Sie den Drehgeber kennenlernen. Ein Drehgeber ist ein elektronischer Schalter mit einer Reihe von regelmäßigen Impulsen in strengem Zeitablauf. In Verbindung mit einem IC können Sie Erhöhen, Verringern, Seitenumbruch und andere Vorgänge wie Maus-Scrolling, Menüauswahl usw. realisieren.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
|---|---|
Schaltplan
Experimentelle Verfahren
Schritt 1: Bauen Sie den Schaltkreis.
In diesem Beispiel können wir den Drehgeber-Pin direkt an den Raspberry Pi anschließen. Verwenden Sie dazu ein Breadboard und ein 40-Pin-Kabel. Verbinden Sie das GND des Drehgebers mit GND, 「+」mit 5V, SW mit digitalem GPIO27, DT mit digitalem GPIO18 und CLK mit digitalem GPIO 17.
Schritt 2: Wechseln Sie in den Ordner des Codes.
cd ~/raphael-kit/nodejs/
Schritt 3: Führen Sie den Code aus.
sudo node rotary_encoder_module.js
Sie werden die Zählung in der Shell sehen. Wenn Sie den Drehgeber im Uhrzeigersinn drehen, erhöht sich der Zählerstand; drehen Sie ihn gegen den Uhrzeigersinn, verringert sich der Zählerstand. Wenn Sie den Schalter am Drehgeber drücken, wird der Zählerstand auf null zurückgesetzt.
Code
const Gpio = require('pigpio').Gpio;
const clkPin = new Gpio(17, {
mode: Gpio.INPUT,
pullUpDown: Gpio.PUD_DOWN,
edge: Gpio.RISING_EDGE
});
const dtPin = new Gpio(18, {
mode: Gpio.INPUT,
pullUpDown: Gpio.PUD_DOWN,
});
const swPin = new Gpio(27, {
mode: Gpio.INPUT,
pullUpDown: Gpio.PUD_UP,
edge: Gpio.FALLING_EDGE
});
var globalCounter = 0;
clkPin.on('interrupt',()=>{
if(dtPin.digitalRead()==1){
globalCounter--;
}
else{
globalCounter++;
}
console.log(`globalCounter = ${globalCounter}`);
});
swPin.on('interrupt', () => {
globalCounter = 0;
console.log(`globalCounter = ${globalCounter}`);
});
Code Erklärung
var globalCounter = 0;
clkPin.on('interrupt',()=>{
if(dtPin.digitalRead()==1){
globalCounter--;
}
else{
globalCounter++;
}
console.log(`globalCounter = ${globalCounter}`);
});
Wenn dtPin von niedrig auf hoch wechselt und clkPin hoch ist, die Zählung nimmt ab, andernfalls erhöht sich die Anzahl.
swPin.on('interrupt', () => {
globalCounter = 0;
console.log(`globalCounter = ${globalCounter}`);
});
Der swPin gibt einen Low-Ausgang aus, wenn die Welle gedrückt wird. Lassen Sie den globalCounter an dieser Stelle auf Null gehen