CAP1188 Sensore tattile capacitivo
FunduinoUltimo aggiornamento il
Acht Berührungssensoren – vom Testaufbau zum Instrument
Was der CAP1188 kann
Erster Test: die interne LED schalten
1 / 3
Interne LED über C1 und C2 schalten
#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 aus Alltagsgegenständen
1 / 2
Aufbau und Verkabelung
1 / 4
Das Musikprogramm
Acht Töne über die Berührungsflächen spielen
#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"
}
}
}Valuta le istruzioni