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.9 Joystick

Bemerkung

../_images/mcp3008_and_adc0834.jpg

Abhängig von Ihrer Kit-Version identifizieren Sie bitte, ob Sie ADC0834 oder MCP3008 haben, und fahren Sie mit dem entsprechenden Abschnitt fort.

Einführung

In diesem Projekt lernen wir, wie ein Joystick funktioniert. Wir bedienen den Joystick und zeigen die Ergebnisse auf dem Bildschirm an.

Benötigte Komponenten

Für dieses Projekt benötigen wir folgende Komponenten.

../_images/image317.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 sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Widerstand

KAUFEN

Joystick-Modul

-

ADC0834

-

Schaltplan

Beim Auslesen der Joystick-Daten gibt es Unterschiede zwischen den Achsen: Die Daten der X- und Y-Achse sind analog und müssen mit dem ADC0834 in einen digitalen Wert umgewandelt werden. Die Daten der Z-Achse sind digital, sodass sie direkt über GPIO gelesen werden können, oder auch mit ADC.

../_images/image319.png ../_images/image320.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis.

../_images/image193.png

Schritt 2: Wechseln Sie in den Ordner mit dem Code.

cd ~/raphael-kit/nodejs/

Schritt 3: Führen Sie den Code aus.

sudo node joystick.js

Nachdem der Code ausgeführt wurde, drehen Sie den Joystick. Die entsprechenden Werte von x, y und Btn werden auf dem Bildschirm angezeigt.

Code

const Gpio = require('pigpio').Gpio;
const ADC0834 = require('./adc0834.js').ADC0834;

const adc = new ADC0834(17, 18, 22);
const btn = new Gpio(25, {
    mode: Gpio.INPUT,
    pullUpDown: Gpio.PUD_UP,
});

setInterval(async() => {

    x_val = await adc.read(0);
    y_val = await adc.read(1);

    btn_val = btn.digitalRead();
    console.log(`x = ${x_val}, y = ${y_val}, btn = ${btn_val}\n`);
}, 100);

Code-Erklärung

const ADC0834 = require('./adc0834.js').ADC0834;

Wir importieren einen ADC0834 Konstruktor, um das adc0834 Modul zu nutzen.

setInterval(async() => {

    x_val = await adc.read(0);
    y_val = await adc.read(1);

    btn_val = btn.digitalRead();
    console.log(`x = ${x_val}, y = ${y_val}, btn = ${btn_val}\n`);
}, 100);

Beim gleichzeitigen Auslesen der Werte von mehreren Kanälen des ADC0834 ist asynchrone Programmierung erforderlich. Wir erstellen hier eine Promise-Funktion und verwenden die await-Anweisung der asynchronen Funktion, um diese komplexe asynchrone Aufgabe elegant zu schreiben.

Phänomen-Bild

../_images/image194.jpeg