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+ |
Alternativ können Sie die Teile auch einzeln über die folgenden Links beziehen:
SN |
KOMPONENTENBESCHREIBUNG |
ANZAHL |
KAUF-LINK |
---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
1 |
Schaltplan
Verdrahtung
Code
Bemerkung
Die Datei
4.3_electrode_keyboard.ino
finden Sie im Verzeichniskepler-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
undAdafruit_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();
}