Nr. 40 – CAP1188 Kapazitiver Berührungssensor

Inhalt

Was kann der Sensor CAP1188?

Der CAP1188 verfügt über acht kapazative Sensoren (C8 bis C1). Die Sensoren reagieren auf Veränderungen der Fähigkeit von Körpern oder Gegenständen elektrische Ladung zu speichern. Die menschliche Haut und elekrisch leitfähige Gegenstände sind dazu in der Lage. Wird einer der Touch-Pins berührt, verändert sich der Messwert und der Kontakt wird ausgelöst.

Zu jedem Touch-Pin gehört eine LED (L8 bis L7), sie leuchtet, wenn der Kontakt ausgelöst wurde.

Ein erster Test

Die Pins C1 und C2 sollen die interne LED des Arduinos schalten:

C1: LED einschalten
C2: LED ausschalten

Schließe an die Pins C1 und C2 jeweils ein Kabel an. Wenn du das Kabelende berührst, wird der Sensor augelöst.

Suche im Bibliotheksverwalter
Sketch -> Biblio­thek ein­bin­den -> Biblio­the­ken verwalten
oder über das entsprechende Icon nach der Bibliothek Adafruit CAP1188. Anschließend musst du in der nächsten Dialogbox die zusätzliche Bibliothek installieren.

Das Programm

				
					#include "Adafruit_CAP1188.h"

// Name zuweisen
Adafruit_CAP1188 cap = Adafruit_CAP1188();

void setup() 
{
  Serial.begin(9600);
  delay(500);

  pinMode(LED_BUILTIN, OUTPUT);

  if (!cap.begin()) 
  {
    // Programm anhalten, wenn CAP1188 nicht gefunden wurde
    Serial.println("CAP1188 nicht gefunden");
    while (1);
  }
  Serial.println("CAP1188 gefunden!");

  delay(1000);
  // Empfindlichkeit einstellen
  // 10 = sehr empfindlich-> reagiert schon bei Annäherung
  // bis 111 weniger empfindlich -> Gegenstand muss berührt werden
  // kann je nach Gegenstand angepasst werden
  int Empfindlichkeit = cap.readRegister(0x1f) & 0x0f;
  cap.writeRegister(0x1f, Empfindlichkeit | 111); 
}

void loop() 
{
  int Beruehrung = cap.touched();

  if (Beruehrung == 0) 
  {
    // keine Berührung entdeckt
    return;
  }

  // Berührungen abfragen
  for (int i = 0; i < 8; i++) 
  {
    if (Beruehrung & (1 << i)) 
    {
      // mit dem höchsten Wert beginnen 
      if (i + 1 == 2) digitalWrite(LED_BUILTIN, HIGH);
      if (i + 1 == 1) digitalWrite(LED_BUILTIN, LOW);
    }
  }
}

				
			

Erweiterung: Musik mit dem CAP1188

Verschiedene elektrisch leitfähige Gegenstände können als Auslöser des Signals verwendet werden: Büroklammern, Alufolie, Kupferfolie, Schrauben, Nägel und auch Lebensmittel, die viel Flüssigkeit enthalten.

Mit Alufolie
Mit Büroklammern

Zusätzlich benötigte Bauteile

Der Schaltplan

Schließe an die Pins C8 bis C1 jeweils eines der Kabel mit der Krokodilklemme an.

Zuordnung der Pins zum CAP1188

Zuordnung der Pins zu den Noten und den dazugehörigen Frequenzen

Das Programm

				
					#include "Adafruit_CAP1188.h"

#define Lautsprecher 7
#define TonLaenge 100

// Name zuweisen
Adafruit_CAP1188 cap = Adafruit_CAP1188();

void setup()
{
  Serial.begin(9600);

  if (!cap.begin())
  {
    // Programm anhalten, wenn CAP1188 nicht gefunden wurde
    Serial.println("CAP1188 nicht gefunden");
    while (1);
  }
  Serial.println("CAP1188 gefunden!");

  delay(1000);
  // Empfindlichkeit einstellen
  // 10 = sehr empfindlich-> reagiert schon bei Annäherung
  // bis 111 weniger empfindlich -> Gegenstand muss berührt werden
  // kann je nach Gegenstand angepasst werden
  int Empfindlichkeit = cap.readRegister(0x1f) & 0x0f;
  cap.writeRegister(0x1f, Empfindlichkeit | 111);
}

void loop()
{
  int Beruehrung = cap.touched();

  if (Beruehrung == 0)
  {
    // keine Berührung entdeckt
    return;
  }

  // Berührungen abfragen
  for (int i = 0; i < 8; i++)
  {
    if (Beruehrung & (1 << i))
    {
      // mit dem höchsten Wert beginnen
      if (i + 1 == 8) tone(Lautsprecher, 262, TonLaenge); // C'
      if (i + 1 == 7) tone(Lautsprecher, 294, TonLaenge); // D'
      if (i + 1 == 6) tone(Lautsprecher, 330, TonLaenge); // E'
      if (i + 1 == 5) tone(Lautsprecher, 349, TonLaenge); // F'
      if (i + 1 == 4) tone(Lautsprecher, 392, TonLaenge); // G'
      if (i + 1 == 3) tone(Lautsprecher, 440, TonLaenge); // A'
      if (i + 1 == 2) tone(Lautsprecher, 494, TonLaenge); // H'
      if (i + 1 == 1) tone(Lautsprecher, 523, TonLaenge); // C''
    }
  }
}
				
			

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft bis zu 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE