HOME 

Touch screen

Nintendo DS Lite

con PIC 16F88

 

Introduzione

Salve a tutti e ben ritrovati.
Con questo mio nuovo articolo, mi rivolgo a quanti di voi fossero interessati a condividere con me una mia recente esperienza ed eventualmente approfondire le conoscenze sui touchscreen. Fino a poco tempo fa non sapevo nulla in merito, ma l’acquisto di due di questi dispositivi, uno dei quali sostituito sul video gioco “Nintendo ds lite” del mio nipotino, mi ha molto incuriosito. Li ho acquistati su ebay per 5 Euro ciascuno e dato che l’operazione di sostituzione è andata a buon fine al primo tentativo, con l’altro rimastomi ho fatto alcune prove, coi risultati che vi illustrerò più avanti.

Ecco il tastierino, effettuare con cura le saldature sul minuscolo connettore, meglio ancora se riuscite a trovare il connettore femmina.

 

Descrizione

Per iniziare voglio descrivervi  brevemente il principio di funzionamento su cui si basa questo tipo di sensore che è del tipo resistivo, ne esistono infatti anche di tipo capacitivo. In pratica e con riferimento alla figura che segue, si tratta di un supporto di vetro o altro materiale trasparente, sul quale, con procedimenti di cui affido a voi l’approfondimento, sono distribuiti uniformemente due strati resistivi sottilissimi, tanto da risultare trasparenti alla luce, tenuti separati tra loro da dei distanziatori isolanti. Accade che, quando si esercita sul touchscreen una pressione con un pennino o con un dito, queste due superfici vengono a contatto (vedi figura che segue).

 

Se adesso, immaginiamo di alimentare con una tensione continua uno solo dei due strati attraverso i suoi due terminali, succede che, quando a causa della pressione esercitata su un punto qualsiasi della superficie, i due strati vengono a contatto, sui terminali dell’altro strato, cioè quello non alimentato, si può prelevare una tensione che sarà proporzionale alla posizione su cui si sta esercitando la pressione, la cui misura ci darà la coordinata “x” di quel punto (vedi figura che segue).

 

 

Se adesso, lo stesso procedimento lo ripetiamo per l’altro strato, cioè togliamo alimentazione a quello di prima e la diamo al secondo e misuriamo la nuova tensione, otterremo anche la coordinata “y” del punto toccato sul touchscreen (vedi figura che segue). A questo punto unitamente alla coordinata “x” di prima, saremo in grado di individuare con semplici calcoli, esattamente quale zona di tutta la superficie del touchscreen stiamo toccando.

 

Senza dilungarmi troppo, sulla superficie del touchscreen si realizza un partitore resistivo come se si trattasse di un potenziometro, sul centrale del quale si preleva una tensione proporzionale alla posizione assunta dal cursore, in questo caso dal dito.

Questo, in modo molto sintetico, quello che riguarda la parte hardware, tutto il resto è solo software. Ad un PIC infatti, previa opportuna programmazione, ho affidato i compiti relativi alla lettura delle due tensioni X ed Y, calcolare in base ad una tabella virtuale quale zona del touchscreen si sta premendo, stamparne il carattere associato su un display, ed eventualmente eseguire delle funzioni preimpostate.

In altre parole, possiamo ottenere un tastierino che possiamo dimensionare in base alle nostre esigenze; è possibile cioè da software, dividere la superficie del touchscreen in tante zone, delimitate da linee virtuali orizzontali e verticali, in modo da ottenere delle aree ben precise, ad ognuna delle quali è associato univocamente un pulsante virtuale.

Vediamo adesso come comunicare al PIC il tipo di tastierino che vogliamo utilizzare. Innanzi tutto bisogna stampare su un supporto cartaceo il tastierino con le scritte e le indicazioni che vi servono. Vedi gli esempi nella foto che segue.

 

Ricordarsi che le dimensioni devono essere leggermente inferiori a quelle del touchscreen, questo perché la zona sensibile e leggermente più piccola rispetto a tutto il supporto, ve ne renderete conto guardando il touchscreen in controluce. Per queste prove, non ho ritenuto opportuno prevedere più di nove righe e nove colonne, non perché non sia possibile ottenerle, ma perché ho notato che è poco pratico, infatti le dimensioni delle dita poi sono tali, da imporre l’uso di un pennino per evitare di sconfinare sui pulsanti adiacenti. Ritagliate adesso il tastierino ed inseritelo sotto al touchscreen, tanto si vedrà in trasparenza, o se preferite appoggiatelo sopra al touchscreen in modo che non si possa muovere, magari bloccandolo con un po’ di biadesivo.

 A questo punto, dopo aver programmato il PIC col file HEX, e facendo riferimento alla figura che segue, dovrete alimentare il circuito mentre esercitate una pressione con un pennino, sull’incrocio evidenziato dal primo cerchietto rosso in alto, vedrete comparire stabilmente sul display le coordinate verticali ed orizzontali del punto sotto pressione. Quando il numerello accanto a destra indicherà stabilmente uno zero, potrete togliere il pennino e proseguire coi successivi incroci verso il basso fino all’ultimo, evidenziati dai cerchietti rossi, ricordandosi di proseguire solo quando il numerello che si  incrementa indichi stabilmente uno zero.

 

Al termine ripeterete le stesse operazioni sugli incroci della prima riga, partendo dal primo incrocio in alto a sinistra e proseguendo fino all’ultimo a destra, della stessa riga.

 

Per completare l’operazione premiamo adesso al centro del primo pulsante in alto a sinistra fino a quando non si cancellerà il contenuto del display.

A questo punto tutti i dati relativi al vostro touchscreen saranno stati acquisiti e memorizzati correttamente e sarà creata una mappa virtuale di corrispondenze tra ogni punto sul touchscreen ed il tastierino.

Questa operazione di taratura, fa fatta una sola volta ad ogni cambio di tastierino, anche perché possono esserci delle differenze, anche tra touchscreen dello stesso dipo e dimensione, oppure piccole imprecisioni delle resistenze da 1K che alimentano il touchscreen. Per le successive utilizzazioni invece, i dati saranno prelevati dalla memoria eeprom interna, di cui il PIC è corredato.

Le operazioni eseguite dal PIC per gestire il touchscreen sono relativamente semplici. Esso utilizza solo quattro pin di imput/output nel modo seguente: Inizialmente predispone i pin RA1 ed RB7 come uscite, portando il pin RA1 a livello alto cioè +5V e il pin RB7 a livello basso cioè massa, in questo modo attraverso la resistenza R da 1K è alimentata la parte verticale del touchscreen; contemporaneamente predispone i due pin RA0 ed RB6 come ingressi, leggendo il valore d’uscita della tensione verticale tramite il pin RA0. (vedi figura che segue)

 

Successivamente s’invertono le cose. Il PIC predispone i pin RA0 ed RB6 questa volta come uscite, portando il pin RA0 a livello alto cioè +5V e il pin RB6 a livello basso cioè massa, in questo modo attraverso la resistenza R da 1K è alimenta la parte orizzontale del touchscreen; contemporaneamente predispone i due pin RA1 ed RB7 come ingressi, leggendo il valore d’uscita della tensione orizzontale tramite il pin RA1.

Da questo punto in poi inizia l’elaborazione di queste due tensioni, che sono  confrontate con la mappa virtuale residente in memoria, dal cui confronto risulta un punto ben preciso, che ricade su un'area appartenente al pulsante premuto, delimitata dalle righe e dalle colonne virtuali; il relativo carattere o valore associato sarà quindi utilizzato per le successive elaborazioni.

Se siete interessati, potrete effettuare il download  del file hex e del file asm cliccando sul testo precedente in rosso, potrete utilizzarlo integralmente così com’è, oppure solo parti di esso, da inserire eventualmente nei vostri progetti.

Il seguente video vi darà un'idea più chiara dei risultati ottenuti, e purtroppo di quanto disordinato io sia.   

http://www.youtube.com/watch?v=NsQpnsQnFFk

Buon divertimento.

IT9DPX - #135