Teil 3 : 16er Touchpad TTP229 mit Bestätigung, Kommastellen und +/- Wechsel

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

Hier der Teil1 und Teil2 dieser kleinen Reihe.

2 Gedanken zu „Teil 3 : 16er Touchpad TTP229 mit Bestätigung, Kommastellen und +/- Wechsel

  1. Pingback: Teil 2: Eine längere Zahl mit dem TTP229 Touch Pad eingeben und bei ENTER ausgeben. | Shelvin – Elektronik ausprobiert und erläutert

  2. Pingback: TTP-229 touch pad am STM32 blue pill mit der Arduino Software programmiert | Shelvin – Elektronik ausprobiert und erläutert

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.