In acest articol voi folosi un modul capacitiv cu 16 butoane. Acesta are la baza circuitul integrat TTP229.
Alimentarea acestui modul se va face la +5V.
Pentru a detecta care buton (touchpad mai exact) este atins vom folosi cele 8 iesiri digitale ale modulului.
Aceste iesiri ofera un semnal logic HIGH in momentul in care se detecteaza atingerea unui buton.
Din pacate modulul nu poate detecta atingerea a 2 sau mai multe butoane simultan.
Pretul acestui modul este de 15 lei si se poate cumpara de aici.
Modulul are si pini pentru conectarea pe I2C dar eu nu am reusit sa folosesc aceasta facilitate in ciuda a tuturor informatiilor citite pe internet cat si a datashet-ului.
Poza cu modulul folosit este mai jos:

Conectarea la Arduino Mega se face simplu, fiecare iesire a modulului fiind conectata la o intrare digitala.
In acest montaj conexiunile sunt urmatoarele:
TTP229 --- Arduino
OUT1 - D2
OUT2 - D3
OUT3 - D4
OUT4 - D5
OUT5 - D6
OUT6 - D7
OUT7 - D8
OUT8 - D9

Sketchul folosit este urmatorul:
#include <Wire.h>
int b1 = 2;
int b2 = 3;
int b3 = 4;
int b4 = 5;
int b5 = 6;
int b6 = 7;
int b7 = 8;
int b8 = 9;
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("Testare modul TTP229");
pinMode(b1, INPUT);
pinMode(b2, INPUT);
pinMode(b3, INPUT);
pinMode(b4, INPUT);
pinMode(b5, INPUT);
pinMode(b6, INPUT);
pinMode(b7, INPUT);
pinMode(b8, INPUT);
}
void loop() {
int a1 = digitalRead(b1);
int a2 = digitalRead(b2);
int a3 = digitalRead(b3);
int a4 = digitalRead(b4);
int a5 = digitalRead(b5);
int a6 = digitalRead(b6);
int a7 = digitalRead(b7);
int a8 = digitalRead(b8);
if (a1 == HIGH) {
Serial.println("butonul b1 este apasat");
}
if (a2 == HIGH) {
Serial.println("butonul b2 este apasat");
}
if (a3 == HIGH) {
Serial.println("butonul b3 este apasat");
}
if (a4 == HIGH) {
Serial.println("butonul b4 este apasat");
}
if (a5 == HIGH) {
Serial.println("butonul b5 este apasat");
}
if (a6 == HIGH) {
Serial.println("butonul b6 este apasat");
}
if (a7 == HIGH) {
Serial.println("butonul b7 este apasat");
}
if (a8 == HIGH) {
Serial.println("butonul b8 este apasat");
}
delay(100);
}
Poze cu montajul functional mai jos:

