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!

4.3 - Elektroden-Tastatur

Der MPR121 ist eine gute Wahl, wenn Sie Ihrem Projekt eine Vielzahl von Berührungsschaltern hinzufügen möchten. Das Modul besitzt Elektroden, die mit Leitern erweitert werden können. Verbinden Sie die Elektroden beispielsweise mit einer Banane, verwandeln Sie diese in einen Berührungsschalter.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten:

Einen Komplettbausatz zu kaufen ist sicherlich praktisch, hier ist der Link dazu:

Name

ARTIKEL IN DIESEM KIT

KAUF-LINK

Kepler-Kit

450+

Kepler Ultimate Kit

Alternativ können Sie die Teile auch einzeln über die folgenden Links beziehen:

SN

KOMPONENTENBESCHREIBUNG

ANZAHL

KAUF-LINK

1

Den Pico W kennenlernen

1

KAUFEN

2

Micro-USB-Kabel

1

3

Steckbrett

1

KAUFEN

4

Jumperkabel

Mehrere

KAUFEN

5

MPR121 Modul

1

Schaltplan

sch_mpr121_ar

Verdrahtung

wiring_mpr121_ar

Code

Bemerkung

  • Die Datei 4.3_electrode_keyboard.ino finden Sie im Verzeichnis kepler-kit-main/arduino/4.3_electrode_keyboard.

  • Alternativ können Sie den Code in die Arduino IDE kopieren.

  • Vergessen Sie nicht, das richtige Board (Raspberry Pi Pico) und den korrekten Port auszuwählen, bevor Sie auf Hochladen klicken.

  • Die Bibliothek Adafruit MPR121 wird hier verwendet. Sie können sie über den Bibliotheksmanager installieren.

    ../_images/lib_mpr121.png

Sobald das Programm läuft, können Sie die zwölf Elektroden auf dem MPR121-Modul berühren, und der Berührungsstatus wird in einem 12-Bit-Booleschen Array gespeichert und im seriellen Monitor angezeigt. Wenn die erste und die elfte Elektrode berührt werden, wird 100000000010 ausgegeben.

Sie können die Elektroden durch Anschluss anderer Leiter wie Früchte, Draht, Folie usw. erweitern. Dadurch eröffnen sich Ihnen weitere Möglichkeiten, diese Elektroden zu betätigen.

Wie funktioniert es?

Initialisieren Sie das MPR121-Objekt. Ab diesem Zeitpunkt werden die Zustände der Modul-Elektroden als Ausgangswerte gespeichert. Wenn Sie die Elektroden erweitern, müssen Sie das Beispiel neu starten, um die Ausgangswerte zurückzusetzen.

#include "Adafruit_MPR121.h"

Adafruit_MPR121 cap = Adafruit_MPR121();

void setup() {
    Serial.begin(9600);
    int check = cap.begin(0x5A);
    if (!check) {
        Serial.println("MPR121 not found, check wiring?");
        while (1);
    }
    Serial.println("MPR121 found!");
}

Erhält den Wert der aktuellen Elektrode, es wird ein 12-Bit-Binärwert erhalten. Wenn Sie die erste und die elfte Elektrode berühren, erhält sie „100000000010“.

// Get the currently touched pads
currtouched = cap.touched();

Determine if the electrode state has changed.

void loop() {
    currtouched = cap.touched();
    if (currtouched != lasttouched) {}

    // reset our state
    lasttouched = currtouched;
}

Wenn eine Änderung des Elektrodenzustands erkannt wird, werden die Werte von currtouched bitweise im Array touchStates[12] gespeichert. Schließlich wird das Array ausgegeben.

if (currtouched != lasttouched) {
    for (int i = 0; i < 12; i++) {
        if (currtouched & (1 << i)) touchStates[i] = 1;
        else touchStates[i] = 0;
    }
    for (int i = 0; i < 12; i++){
        Serial.print(touchStates[i]);
    }
    Serial.println();
}