Die TTP229 – 16 Touch Tasten Platine und der Arduino sind erweitert worden durch einen 5V Pieper.
Jetzt können auch Kommazahlen / Nachkommastellen eingegeben werden.
Das Vorzeichen kann gewechselt werden + oder –
Die Taste 10 ist zur 0 geworden.
Der Pieper bestätigt jetzt die Tasteneingabe mit einem kurzen Ton.
Ich hatte Probleme, das die Tastatur ohne Betätigung zufällig Zahlen eingelesen hat. Meist waren es die 6 oder die 7.
Das lag daran dass die Platine flach auf dem Holztisch gelegen hat. Da hat die interen Kalibration der TTP229 Chips nicht gut gearbeitet und Tasten erkannt die gar nicht gedrückt waren. Das liess sich aber einfach beheben, ich habe oben einfach zwei M3x8mm Schrauben rein gedreht und damit die Platine etwas vom Tisch angehoben. Nun funktioniert es zuverlässig und gut.
Hier der Aufbau:

Die Video Beschreibung dazu:
Und das Programm:
// TTP229 (HW-136) touch field with 16 pads
// serial read to Arduino Uno
// 5V beeper for key click
// add to the double number and print when enter is pressed
// including +/- and decimal
//
// connected: keypad 5V & GND, SCL > Pin3, SDO > Pin2
// and 5V beeper + > Pin8, - > GND
//
// Matthias Busse 12.11.2022 Ver. 2.0
#define SCL 3 // connect SCL to Pin 3
#define SDO 2 // connect SDO to Pin 2
#define BEEP 8 // connect + 5V beeper to Pin 8
int key, comma, k;
double number, dec;
void setup() {
Serial.begin(38400);
pinMode(SCL, OUTPUT);
pinMode(SDO, INPUT);
pinMode(BEEP, OUTPUT);
digitalWrite(SCL, HIGH);
Serial.println("start");
number=0.0;
comma=0;
}
void loop() {
key=readTTP229(); // read touch pad
if(key>0) { // if key pressed
if((key>0) && (key<11)) { // 1-9 and 10=0
if(comma==0) {
number*=10.0; // number * 10
if(key!=10) number+=key;// number + key pressed except 10=0
}
else { // add decimal numbers
dec=1;
for(k=0; k<comma; k++) {// calc decimal
dec*=0.1;
}
if(key==10) key=0;
number=number+(key*dec);// add key on decimal place
comma++; // increase decimal
}
}
if(key==13) { // + / - change
number*=-1.0;
}
if(key==14) { // comma pressed
comma=1;
}
if(key==16) { // Enter
Serial.println(number,3);
number=0.0;
comma=0;
}
klick();
delay(500); // wait while pressed
} // end key pressed
}
void klick(void) {
digitalWrite(BEEP,HIGH);
delay(1);
//delayMicroseconds(2050);
digitalWrite(BEEP,LOW);
}
int readTTP229(void) {
byte i, pad=0;
for(i=1; i<17; i++) { // read all 16 touch pads 1-16
digitalWrite(SCL, LOW);
if(!digitalRead(SDO)) pad=i; // if touched store pad no.
digitalWrite(SCL, HIGH);
}
return pad;
}
von Matthias Busse

Pingback: Teil 2: Eine längere Zahl mit dem TTP229 Touch Pad eingeben und bei ENTER ausgeben. | Shelvin – Elektronik ausprobiert und erläutert
Pingback: TTP-229 touch pad am STM32 blue pill mit der Arduino Software programmiert | Shelvin – Elektronik ausprobiert und erläutert