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 -> Bibliothek einbinden -> Bibliotheken 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.
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.