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