Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Berührungsempfindliche Tasten auf beliebigen Oberflächen mit dem MPR121 kapazitiven Sensor

Komponenten und Zubehör

Bauteil Menge
Arduino UNO 1
Adafruit MPR121 Kapazitiver Touch-Sensor Breakout (12 Kanäle) 1
LED (beliebig, z. B. 3 mm rot) 1

Software & Tools

Projektbeschreibung

Der MPR121 ist ein 12-Kanal-Kapazitivsensor, der Berührung über Änderungen der Kapazität detektiert. Er eignet sich hervorragend, um beliebige leitfähige Oberflächen (Metallfolie, leitfähige Farbe, Kupferband) in berührungsempfindliche Tasten zu verwandeln.

Wichtige Eigenschaften

Verkabelung (I²C)

MPR121 Pin Arduino UNO Pin
VCC 3,3 V
GND GND
SDA A4
SCL A5
IRQ Digital 4 (Interrupt-fähig)

Die Elektroden (E0–E11) werden mit leitfähigem Material (Kupferband, leitfähige Farbe, Alufolie) verbunden, das die Berührungsfläche bildet.

Berührungsempfindliche Tasten auf beliebigen Oberflächen mit dem MPR121 kapazitiven Sensor
Schaltplan: MPR121 Breakout an Arduino UNO

Anwendungsbeispiele

Code-Beispiel: LED an Pin 3 per Touch ein/aus

Elektrode 0 = Einschalten, Elektrode 1 = Ausschalten. Nutzt Interrupt-Pin für ereignisgesteuerte Abfrage.

#include <MPR121.h>
#include <Wire.h>

#define NUM_ELECTRODES 2
#define LED_PIN 3

void setup() {
  Serial.begin(115200);
  Serial.println(F("System gestartet"));
  pinMode(LED_PIN, OUTPUT);
  Wire.begin();

  // 0x5A ist Standardadresse bei Adafruit/Bare Conductive Boards
  if (!MPR121.begin(0x5A)) {
    Serial.println(F("Fehler bei MPR121-Initialisierung"));
    switch (MPR121.getError()) {
      case NO_ERROR: Serial.println(F("kein Fehler")); break;
      case ADDRESS_UNKNOWN: Serial.println(F("falsche Adresse")); break;
      case READBACK_FAIL: Serial.println(F("Readback-Fehler")); break;
      case OVERCURRENT_FLAG: Serial.println(F("Überstrom an REXT")); break;
      case OUT_OF_RANGE: Serial.println(F("Elektrode außerhalb Bereich")); break;
      case NOT_INITED: Serial.println(F("nicht initialisiert")); break;
      default: Serial.println(F("unbekannter Fehler")); break;
    }
    while (1); // Halt
  }

  MPR121.setInterruptPin(4);
  MPR121.setTouchThreshold(40);   // Empfindlichkeit anpassen
  MPR121.setReleaseThreshold(20); // Hysterese
  MPR121.updateTouchData();
}

void loop() {
  if (MPR121.touchStatusChanged()) {
    MPR121.updateTouchData();
    for (int i = 0; i < NUM_ELECTRODES; i++) {
      if (MPR121.isNewTouch(i)) {
        if (i == 0) digitalWrite(LED_PIN, HIGH);
      } else if (MPR121.isNewRelease(i)) {
        if (i == 1) digitalWrite(LED_PIN, LOW);
      }
    }
  }
}

Tipps & Tricks

Herstellungsprozess

  1. Blitzdetektion mit Raspberry Pi und AS3935: Praktischer Leitfaden
  2. Hamster-Fitness-Tracker mit Raspberry Pi: Tägliche Laufrad-Aktivität messen
  3. Einstieg in IoT und MQTT: Code-freies ESP8266 Tutorial
  4. Nahtlose Arduino–Raspberry Pi 2 I2C-Integration für IoT-Sensorprojekte
  5. DNA-Speicher in Alltagsobjekten: 3D-gedruckter Hase trägt eigenen Bauplan
  6. Menschzentrierte Supply-Chain-Transformation: Effizienz und Resilienz steigern
  7. Smart Lathe: Fortschrittliche Touchscreen-Steuerungen für Präzisionsbearbeitung
  8. OmniFibers: Intelligenter Stoff reguliert Atmung für Leistung & Erholung
  9. Vom Konzept zur Realität: Kreative Designs in greifbare Produkte verwandeln
  10. Vorteile der CNC-Drehfräsbearbeitung (Mill-Turn) entdecken