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 Kit

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

SN

KOMPONENTENBESCHREIBUNG

ANZAHL

KAUF-LINK

1

Raspberry Pi Pico W

1

BUY

2

Micro-USB-Kabel

1

3

Steckbrett

1

BUY

4

Jumperkabel

Mehrere

BUY

5

MPR121 Modul

1

Schaltplan

sch_mpr121

Verdrahtung

wiring_mpr121

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 Bibliotheken Adafruit_MPR121 und Adafruit_BusIO werden hier verwendet. Bitte lesen Sie Bibliotheken hinzufügen, um zu erfahren, wie sie zur Arduino IDE hinzugefügt werden können.

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();
}