Arduino: Touch Inputi Živimo u eri kontrolnih panela osetljivih na dodir. Do pre koju godinu ti paneli su bili rezervisani za tehničku robu poput televizora i muzičkih uređaja, sada se ti isti paneli mogu naći i na šporetima i frižiderima. Kakva bi Arduino bio platforma kada tako nešto ne bi postojalo i za mejkere? Po online supermarketima se mogu naći razne varijante modula koji imaju polja gde dodirom menjamo stanja logičke nule i jedinice. Takva polja se mogu naći i u šildovima, ali o njima ovaj put nećemo pisati jer je suština ista, a i nismo sigurni koliku upotrebnu i praktičnu vrednost u gotovom projektu ima šild sa poljima osetljivim na dodir. Mi smo vam pripremili nekoliko modula koji se najčešće koriste.Prvi na redu je modul TTP223B baziran na TTP223 integralnom kolu, koji ako ne registruje dodir, ima stanje logičke nule, tj. OUTPUT je LOW. Ako dodir postoji, stanje se menja na HIGH i nakon prestanka dodira vraća se na LOW. U suštini, modul se ponaša kao taster. Modul je malih dimenzija sa samo tri pina za povezivanje – GND, VCC i SIG, gde ovaj poslednji ide na digitalni pin Arduina. S obzirom na to da senzor registruje dodir i kroz tanke neprovodive materijale, kao što su papir, staklo, pleksiglas ili PVC folija, zgodan je da se sakrije u zidu, dozni, iverici ili nekom drugom mestu. Inače, radi na naponima od dva do 5,5 volti. Osim ovoga, vrlo čest je i čist 223 (jog), koji ima dva para džampera preko kojih se menja stanje uslovljeno dodirom.#define touchModule 2 boolean trenutnoStanje = LOW; boolean zadnjeStanje = LOW; int brojac = 0; void setup() { Serial.begin(9600); pinMode(touchModule, INPUT); } void loop() { trenutnoStanje = digitalRead(touchModule); if(trenutnoStanje == HIGH && zadnjeStanje == LOW){ brojac ++; Serial.print("dugme pritisnuto: "); Serial.print(brojac); Serial.println(" puta."); delay(1); } zadnjeStanje=trenutnoStanje; } TTP224 je modul zasnovan na istoimenom čipu sa četiri polja koja su osetljiva na dodir. Modul ima šest pinova, od kojih su četiri output, a ostali GND i VCC. Za razliku od prethodnog modula, ovaj ima dva reda po šest otvora predviđenih da se na njih zaleme dvoredi muški hederi, a preko kojih se džamperima u određenoj meri ovim modulom može upravljati. Prema datasheetu (goo.gl/my4qRL), džamperima se modulu može postaviti maksimalno otvoreno vreme u rasponu od 16 sekundi do beskonačno, biranje power moda ili između multi i single key moda. Ostavljen je prostor za igranje sa open-drain, i na taj način biranje između HIGH i LOW outputa. Osetljivost se može menjati dodavanjem kondenzatora (0~50 pikofarada). Ovde kao zamerku možemo navesti mala polja (koja su izuzetno blizu), pa se često nenamerno dodirnu dva polja odjednom.int touchPin; void setup() { for (touchPin=2; touchPin<=5; touchPin++) { pinMode(touchPin,INPUT); } Serial.begin(9600); } void loop() { for (touchPin=2; touchPin<=5; touchPin++) { if (digitalRead(touchPin)==HIGH) { Serial.print("Dodir na polju: "); Serial.println(touchPin-1); } } delay(200); } Treći na redu je modul zasnovan na TTP226 čipu sa osam obeleženih polja osetljivih na dodir. Polja su obeležena sa desna nalevo, što je malo neuobičajeno, i postavljena su u dva reda, a mali problem predstavljaju vodovi na PCB-u donjih polja koja prolaze između gornjih ka čipu. Tako možemo da dodirom na, recimo, polje četiri aktiviramo i polje tri, čiji vod ide uz četvorkinu desnu ivicu. TTP226 se na Arduino povezuje preko 11 pinova, a tu su i mesta predviđena za lemljenje dvoredih muških hedera (4x2 i 5x2), preko kojih se uz pomoć džampera ovaj modul može programirati. Konsultujući datasheet (goo.gl/q48W8D), vidimo da su opcije koje se nalaze u prethodno opisanom modulu ovde uvećane. Osetljivost se u ovom slučaju menja preko pinova (SLSE0~5), a smanjenjem osetljivosti se eliminiše problem aktiviranja polja koja zapravo nisu ni dodirnuta. Na kraju ćemo dodati da modul, osim naponskih i izlaznih pinova, ima još jedan sa oznakom DV (Data Valid). Ovaj pin se koristi da šalje Arduinu interupt zahtev i može biti HIGH ili LOW upotrebom džampera na AHL hederu. Svaki dodir na polje će tako proći de-bounce proceduru, a o ovom takozvanom odskoku smo već pisali (SK 10/2017).int pin; void setup() { for (pin=2; pin<=9; pin++) { pinMode(pin,INPUT); } Serial.begin(9600); } void loop() { for (pin=2; pin<=9; pin++) { if (digitalRead(pin)==HIGH) { Serial.print("Dodir na polju: "); Serial.println(pin-1); } } delay(200); } Poslednji u nizu serije TTP modula je TTP229 sa čak 16 polja osetljivih na dodir. Ovaj modul je „duplirana” varijanta TTP226 modula, koji ima isti problem sa uzanim vodovima polja osetljivih na dodir, gde se nehotice mogu aktivirati ona niža. Naravno, razlika je i u drugom čipu (TTP229), koji modulu daje veće mogućnosti preko otvora za dva reda po četiri dupla hedera. Datasheet sa neophodnim informacijama se nalazi na adresi goo.gl/SK32zx. Modul ima samo osam izlaznih pinova uz VCC i GND, ali zato ima SDO i SCL pinove. Naime, uz odgovarajuću postavku džampera, modul se može koristiti preko pomenutih pinova putem I2C interfejsa, ali i uz biblioteku koju možete preuzeti sa goo.gl/Rnm4Vk. Povezivanjem I2C interfejsa dobijamo kontrolu nad samo osam polja, a da bismo kontrolisali svih 16, potrebno je džamperima povezati treću liniju hedera u P1 redu. Zanimljiva opcija koja se može uključiti preko džampera jeste multitouch (P1 – 4 i P2 -5).#define SCLPin 8 #define SDOPin 9 byte taster; void setup() { Serial.begin(9600); pinMode(SCLPin, OUTPUT); pinMode(SDOPin, INPUT); } void loop() { taster = tastatura(); if (taster) { Serial.println(taster); delay(100); } } byte tastatura (void) { byte Brojac; byte tasterStanje = 0; for (Brojac=1; Brojac<=16; Brojac++) { digitalWrite(SCLPin, LOW); if (!digitalRead(SDOPin)) { tasterStanje=Brojac; digitalWrite(SCLPin, HIGH); } return tasterStanje; } } Napominjemo da ova četiri modula mogu raditi samostalno u odgovarajućim situacijama, bez Arduina ili nekog drugog SBC-a. Recimo, dovedemo napon od pet volti i povežemo neki od ovih modula sa relejem i ova kombinacija će raditi savršeno jer će relej dobijati stanje LOW i HIGH od modula, što mu u suštini za rad jedino i treba. Osim ovih modula, može se naći i breakout ploča TTP229, koja se povezuje putem I2C-a i gde se preko ulaznih pinova može povezati sa nekim provodivim materijalom koji će imati ulogu touch panela.Na kraju ćemo opisati možda i najzanimljiviji modul, HTTM. Ovaj modul dimenzija 20 x 16 milimetara ima panel od pleksiglasa iza kojeg je postavljena malena LED koja sija u zavisnosti od stanja modula, a može se naći LED u nekoliko boja. Iza su tri pina – VCC, GND i OUT, a tu je i džamper. Modul, ako ne spajamo džamper, „pamti” stanje (latched mode) i držaće stanje nakon dodira i kao takav ponašaće se kao prekidač. Ukoliko se džamper zalemi, modul će se ponašati kao taster (held mode), to jest, držaće stanje logičke jedinice samo dok dodir postoji. U okviru skeča ga tretiramo kao najobičniji push button ili slično. Modul postavljen iza komada stakla ili pleksiglasa izgleda više nego efektno i sa cenom tek nešto više od dolara predstavlja best buy. Dejan PETROVIĆ | | |