Dotyková klávesnice je řízená obvodem TTP229. Tento vstupní Arduino modul obsahuje celkem 16 kapacitních dotykových tlačítek. Díky využití zmíněného obvodu TTP229 ale dokážeme číst stav těchto tlačítek pouze pomocí dvou datových vodičů a dvou napájecích. Na zbylých výstupních pinech modulu označených jako OUT1 až OUT8 jsou vyvedeny plošky tlačítek 9 až 16. Díky tomu tedy můžete místo plošek na desce připojit například vlastní externí plošky či tlačítka. Pro napájení modulu lze použít napětí v rozmezí 2,4 až 5,5 V. Proudový odběr se pak pohybuje okolo 2,5 uA. Důležitá poznámka je pak ještě k přepnutí počtu načítaných tlačítek. Z výroby je totiž zapnuto čtení pouze prvních osmi tlačítek. Pro povolení čtení všech šestnácti tlačítek je nutné vytvořit propojku č.3 u konektoru P1, jak je označeno na obrázku níže.

Arduino Dotyková kapacitní klávesnice TTP229

Pro úspěšné propojení dotykové klávesnice s Arduino deskou propojíme celkem 4 vodiče. Připojíme Vcc na +5V Arduina, GND na zem Arduina, SCL na pin D3 a SDO na pin D4. Zmíněné datové piny SCL a SDO můžeme zapojit i na jiné volné piny, ale je nutné tuto volbu provést také na začátku programu.

Schéma zapojení Arduino Dotykové kapacitní klávesnice TTP229

Ukázkový kód obsahuje na svém začátku nastavení čísel propojovacích pinů a vytvoření proměnné pro uložení čísla stisknutého tlačítka. V podprogramu setup jako první nastavíme komunikaci po sériové lince a následně nastavíme směr obou propojovacích pinů. V nekonečné smyčce loop vždy na začátku zavoláme podprogram nactiStav, kterým uložíme číslo stisknutého tlačítka do proměnné. Následně zkontrolujeme, jestli je hodnota proměnné větší než nula a při splnění této podmínky vytiskneme informaci o stisknutém tlačítku po sériové lince. V posledním kroku vyčkáme 250 milisekund před novým během smyčky loop. Podprogram nactiStav slouží ke zmíněnému načtení informací o stisknutých tlačítkách. Na jeho začátku vytvoříme pomocné proměnné a poté pomocí for smyčky projdeme postupně stav všech tlačítek. Pokud je nějaké tlačítko stisknuté, uložíme jeho číslo do proměnné stavTlacitka a po dokončení skenování všech tlačítek vrátíme jako výstup podprogramu obsah této proměnné.

// Arduino Dotyková klávesnice TTP229

// nastavení čísel propojovacích pinů
#define pinSCL 3
#define pinSDO 4
// proměnná pro uložení čísla tlačítka
byte tlacitko;

void setup() {
  // komunikace po sériové lince rychlostí 9600 baud
  Serial.begin(9600);
  // nastavení směru propojovacích pinů
  pinMode(pinSCL, OUTPUT);
  pinMode(pinSDO, INPUT);
}

void loop() {
  // načtení aktuálního stavu stisknutých tlačítek
  tlacitko = nactiStav();
  // pokud bylo stisknuto tlačítko, vytiskni jeho číslo
  // po sériové lince
  if (tlacitko > 0) {
    Serial.print("Stisknuto tlacitko ");
    Serial.println(tlacitko);
  }
  // pauza před další kontrolou
  delay(250);
}
// podprogram pro načtení stavu klávesnice
byte nactiStav(void) {
  // pomocné proměnné
  byte poradi;
  byte stavTlacitka = 0;
  // smyčka for, která projde stav všech 16 tlačítek
  // a v případě detekci stisku některého z tlačítek
  // nastaví do proměnné stavTlacitka jeho číslo
  for (poradi = 1; poradi <= 16; poradi++) {
    digitalWrite(pinSCL, LOW);
    // pokud je detekován stisk, ulož číslo tlačítka
    if (!digitalRead(pinSDO)) {
      stavTlacitka = poradi;
    }
    digitalWrite(pinSCL, HIGH);
  }
  // podprogram vrací číslo stisknutého tlačítka
  // nebo nulu v případě bez dotyku
  return stavTlacitka;
}

Po nahrání programu do Arduino desky s připojenou dotykovou klávesnicí a stisknutí tlačítek dostaneme například tento výpis:

Stisknuto tlacitko 1
Stisknuto tlacitko 2
Stisknuto tlacitko 3
Stisknuto tlacitko 4
Stisknuto tlacitko 5
Stisknuto tlacitko 6
Stisknuto tlacitko 7
Stisknuto tlacitko 8
Stisknuto tlacitko 9
Stisknuto tlacitko 10
Stisknuto tlacitko 11
Stisknuto tlacitko 12
Stisknuto tlacitko 13
Stisknuto tlacitko 14
Stisknuto tlacitko 15
Stisknuto tlacitko 16

Dotyková klávesnice s obvodem TTP229 je jednoduše použitelný vstupní modul nejen pro Arduino, který umožňuje s pouze dvěma datovými piny pracovat s až 16 tlačítky. Hodí se tedy do projektů, kde potřebujeme klávesnici s 16 tlačítky, jako například Arduino kalkulačka či vstupní terminál. Velkou výhodou dotykových klávesnic obecně je také větší životnost díky absenci pohyblivých částí.

 

Seznam použitých komponent:

https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

https://dratek.cz/arduino/1321-arduino-dotykova-klavesnice-ttp229-16-klaves-kapacitni-1466072755.html

FB tw

Další podobné články