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.

../_images/Part_two_25.png

Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Drehgebermodul

KAUFEN

Schaltplan

../_images/image349.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis.

../_images/2.1.6_fritzing.png

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

Phänomen-Bild

../_images/2.1.6rotary_ecoder.JPG