Différences entre versions de « TFT-TOUCH-SHIELD-v2-TouchScreen »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(8 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
{{TFT-TOUCH-SHIELD-v2-NAV}}
 
{{TFT-TOUCH-SHIELD-v2-NAV}}
  
{{traduction}}
+
== Démo Paint ==
 +
{{bloc-etroit|text=L'ecran LCD est équipé d'un film tactile à 4 fils (de 2.8", coller sur l'écran). Il peut être utilisé pour détecter, la pression d'un doigt, d'un stylet, etc.
 +
 
 +
Normalement, il est nécessaire d'utiliser 4 broches analogiques pour dialoguer avec la partie tactile. Mais AdaFruit à été bien plus loin en utilisant un pilote ''écran tactile'' dédicacé. Le pilote partage les broches du bus SPI déjà utilisé pour le TFT et la carte SD. En conséquence, une seule broche supplémentaire (#8) est nécessaire pour interroger le contrôleur tactile lorsque vous êtes prêt à lire ses données. Du coup, cela permet d'économiser 3 broches sur votre Arduino qui, elles, restent disponibles pour vos projets.
  
== Démo Paint ==
 
The LCD has a 2.8" 4-wire resistive touch screen glued onto it. You can use this for detecting finger-presses, stylus', etc. Normally, you'll need 4 pins to talk to the touch panel but we decided to go all snazzy and put a dedicated touch screen driver onto the shield. The driver shares the SPI pins with the TFT and SD card, so only one extra pin is needed (digital #8) This allows you to query the controller when you're ready to read touchscreen data, and saves 3 pins.
 
  
[https://github.com/adafruit/Adafruit_STMPE610 To control the touchscreen you'll need one more library] - the STMPE610 controller library which does all the low level chatting with the STMPE610 driver chip. Click below to download and then install it as before.
+
[https://github.com/adafruit/Adafruit_STMPE610 Vous aurez besoin d'une bibliothèque/librairie suplémentaire pour contrôler la partie tactile] - La bibliothèque contrôleur STMPE610 prend en charge tout le dialogue de bas niveau avec le circuit intégré STMPE610.<br />Cliquez sur le lien ci-dessous pour installer la librairie.}}
  
* [https://github.com/adafruit/Adafruit_STMPE610/archive/master.zip Download the STMPE610 Library]
+
* [https://github.com/adafruit/Adafruit_STMPE610/archive/master.zip Télécharger la bibliothèque/librairie STMPE610]
  
Once you have the library installed, restart the IDE. Now from the '''examples->Adafruit_ILI9341''' menu select touchpaint and upload it to your Arduino.
+
Redémarrez votre Arduino IDE après l'installation de la librairie. Vous devriez voir les exemples dans le menu '''Fichier -> Exemples -> Adafruit_ILI9341'''. Vous pouvez sélectionner l'exemple '''touchpaint''' et téléverser le sur votre Arduino.
  
 
{{ADFImage|TFT-TOUCH-SHIELD-v2-01.jpg|640px}}
 
{{ADFImage|TFT-TOUCH-SHIELD-v2-01.jpg|640px}}
  
{{ambox-stop|text=The touch screen is made of a thin glass sheet, and its very fragile - a small crack or break will make the entire touch screen unusable. Don't drop or roughly handle the TFT and be especially careful of the corners and edges. When pressing on the touchscreen, sometimes people can use the tip of their fingers, or a fingernail. If you don't find the touchscreen responds well to your fingers, you can use a rounded stylus which will certainly work. Do not press harder and harder until the screen cracks!}}
+
{{ambox-stop|text=L'écran tactile est réaliser à l'aide d'une fine feuille de verre, et est donc très fragile. Un petit éclat ou cassure rendra l'écran tactile inutilisable. Ne pas laissé tomber le TFT, ne pas le manipuler avec brutalité et être particulièrement prudent avec les coins et les bordures.<br />Certaines personnes utilisent le bout du doigt ou ongle pour presser la partie tactile. Si l'écran ne réagit pas bien avec les doigts, vous pouvez utiliser un stylet arrondis qui fonctionnera certainement très bien. Par contre ne pas presser sur l'écran de plus en plus fort... parce qu'il finira par se briser!}}
 +
 
 +
== Ecran Tactile - Programmation ==
 +
Obtenir les données tactiles est vraiment très simple. Il faut commencer par créer une objet écran tactile (dit ''touchscreen'' en anglais, raison pour laquelle la variable s'appelle ''ts'')
 +
 
 +
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
 +
 
 +
Puisque nous utilisons le bus SPI matériel, la seule broche à préciser est ''Chip Select'' qui active la contrôleur tactile. La définition des autres broches SPI (clock, mosi et miso) ne sont pas définie ici. Pour le shield TFT, le ''Chip Select'' (CS) est toujours sur la broche #8.
 +
 
 +
Ensuite, vous pouvez démarrer la partie tactile avec
 +
 
 +
ts.begin()
 +
 
 +
Assurez-vous que la fonction retourne la valeur True, signifiant que le contrôleur à été trouvé. Dans le cas contraire, il faut vérifier la configuration des cavaliers de configuration SPI matériel: pour Leonardo/Mega les cavaliers/pastilles ICSP doivent être fermés.
 +
 
 +
Maintenant, nous pouvons appeler:
 +
 
 +
if (! ts.bufferEmpty())
 +
 
 +
ce qui permet de vérifier qu'il y a des données dans le buffer (mémoire tampon) du contrôleur. Le pilote tactile stockera constamment les points de touche. Vérifiez si le buffer (mémoire tampon du controleur) contient des données lorsque vous êtes prêt à les lires. S'il y en a, alors vous pouvez appeler
 +
 
 +
TS_Point p = ts.getPoint();
 +
 
 +
Pour obtenir le plus vieux point contenu dans le buffer. La structure TS_Point dispose des données de localisation '''.x''' '''.y''' et '''.z'''. Les valeurs de x et y évoluent entre 0 et 4095. Le STMPE610 ne stocke pas les données de calibration et ne s'occupe pas de gérer la rotation. '''Donc, si vous voulez utiliser la rotation d'écran, vous devrez permuter les axes x et y dans votre programme!'''. Les points z représentent la 'pression' dont la valeur évolue entre 0 et 255. Nous n'utiliserons pas les coordonnées Z ici mais rien ne vous empêche de faire vos expérimentations. Plus vous pressez et plus bas est la valeur.
 +
 
 +
Puisque les données provenant du STMPE610 évolue de 0 à 4095, mais que l'écran ne dispose que de 320 pixels par 240 pixels, nous pouvons utiliser la fonction '''map''' pour convertir les valeur de 0-4095 à 0-320 ou même 0-240.
 +
 
 +
L'appel à '''map''' ressemble à
 +
 
 +
<nowiki>p.x = map(p.x, 0, 4095, 0, tft.width());
 +
p.y = map(p.y, 0, 4095, 0, tft.height());</nowiki>
 +
 
 +
Cependant, la partie tactile est un peu plus grand que l'écran lui-même. Par conséquent, vous aurez besoin d'ignorer les pressions hors de bord physique de l'écran (à moins d'y trouver une utilité). AdaFruit propose les valeurs suivantes qui reflètent assez fidèlement l'étendue des valeurs TS_POINT utiles correspondant à l'écran physique
 +
 
 +
<nowiki>#define TS_MINX 150
 +
#define TS_MINY 130
 +
#define TS_MAXX 3800
 +
#define TS_MAXY 4000</nowiki>
 +
 
 +
Nous utilisons donc le code suivant à la place de la proposition précédente
 +
 
 +
<nowiki>p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
 +
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());</nowiki>
 +
 
 +
 
 +
Un dernier point (jeu de mot!), puisque le pilote tactile stocke les points de touche dans un buffer (mémoire tampon), vous pourriez trouver utile de savoir "si l'écran est touché JUSTE MAINTENANT". Vous pouvez demander au pilote "Dis-moi, y a t'il quelqu'un qui touche l'écran là maintenant?"
 +
 
 +
if (ts.touched())
  
 
{{TFT-TOUCH-SHIELD-v2-TRAILER}}
 
{{TFT-TOUCH-SHIELD-v2-TRAILER}}

Version actuelle datée du 18 janvier 2014 à 19:32


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Démo Paint

L'ecran LCD est équipé d'un film tactile à 4 fils (de 2.8", coller sur l'écran). Il peut être utilisé pour détecter, la pression d'un doigt, d'un stylet, etc.

Normalement, il est nécessaire d'utiliser 4 broches analogiques pour dialoguer avec la partie tactile. Mais AdaFruit à été bien plus loin en utilisant un pilote écran tactile dédicacé. Le pilote partage les broches du bus SPI déjà utilisé pour le TFT et la carte SD. En conséquence, une seule broche supplémentaire (#8) est nécessaire pour interroger le contrôleur tactile lorsque vous êtes prêt à lire ses données. Du coup, cela permet d'économiser 3 broches sur votre Arduino qui, elles, restent disponibles pour vos projets.


Vous aurez besoin d'une bibliothèque/librairie suplémentaire pour contrôler la partie tactile - La bibliothèque contrôleur STMPE610 prend en charge tout le dialogue de bas niveau avec le circuit intégré STMPE610.
Cliquez sur le lien ci-dessous pour installer la librairie.

Redémarrez votre Arduino IDE après l'installation de la librairie. Vous devriez voir les exemples dans le menu Fichier -> Exemples -> Adafruit_ILI9341. Vous pouvez sélectionner l'exemple touchpaint et téléverser le sur votre Arduino.

TFT-TOUCH-SHIELD-v2-01.jpg
Crédit: AdaFruit Industries www.adafruit.com

Ecran Tactile - Programmation

Obtenir les données tactiles est vraiment très simple. Il faut commencer par créer une objet écran tactile (dit touchscreen en anglais, raison pour laquelle la variable s'appelle ts)

Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);

Puisque nous utilisons le bus SPI matériel, la seule broche à préciser est Chip Select qui active la contrôleur tactile. La définition des autres broches SPI (clock, mosi et miso) ne sont pas définie ici. Pour le shield TFT, le Chip Select (CS) est toujours sur la broche #8.

Ensuite, vous pouvez démarrer la partie tactile avec

ts.begin()

Assurez-vous que la fonction retourne la valeur True, signifiant que le contrôleur à été trouvé. Dans le cas contraire, il faut vérifier la configuration des cavaliers de configuration SPI matériel: pour Leonardo/Mega les cavaliers/pastilles ICSP doivent être fermés.

Maintenant, nous pouvons appeler:

if (! ts.bufferEmpty())

ce qui permet de vérifier qu'il y a des données dans le buffer (mémoire tampon) du contrôleur. Le pilote tactile stockera constamment les points de touche. Vérifiez si le buffer (mémoire tampon du controleur) contient des données lorsque vous êtes prêt à les lires. S'il y en a, alors vous pouvez appeler

TS_Point p = ts.getPoint();

Pour obtenir le plus vieux point contenu dans le buffer. La structure TS_Point dispose des données de localisation .x .y et .z. Les valeurs de x et y évoluent entre 0 et 4095. Le STMPE610 ne stocke pas les données de calibration et ne s'occupe pas de gérer la rotation. Donc, si vous voulez utiliser la rotation d'écran, vous devrez permuter les axes x et y dans votre programme!. Les points z représentent la 'pression' dont la valeur évolue entre 0 et 255. Nous n'utiliserons pas les coordonnées Z ici mais rien ne vous empêche de faire vos expérimentations. Plus vous pressez et plus bas est la valeur.

Puisque les données provenant du STMPE610 évolue de 0 à 4095, mais que l'écran ne dispose que de 320 pixels par 240 pixels, nous pouvons utiliser la fonction map pour convertir les valeur de 0-4095 à 0-320 ou même 0-240.

L'appel à map ressemble à

p.x = map(p.x, 0, 4095, 0, tft.width());
p.y = map(p.y, 0, 4095, 0, tft.height());

Cependant, la partie tactile est un peu plus grand que l'écran lui-même. Par conséquent, vous aurez besoin d'ignorer les pressions hors de bord physique de l'écran (à moins d'y trouver une utilité). AdaFruit propose les valeurs suivantes qui reflètent assez fidèlement l'étendue des valeurs TS_POINT utiles correspondant à l'écran physique

#define TS_MINX 150
#define TS_MINY 130
#define TS_MAXX 3800
#define TS_MAXY 4000

Nous utilisons donc le code suivant à la place de la proposition précédente

p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());


Un dernier point (jeu de mot!), puisque le pilote tactile stocke les points de touche dans un buffer (mémoire tampon), vous pourriez trouver utile de savoir "si l'écran est touché JUSTE MAINTENANT". Vous pouvez demander au pilote "Dis-moi, y a t'il quelqu'un qui touche l'écran là maintenant?"

if (ts.touched())

Source: Adafruit 2.8" TFT Touch Shield v2
Créé par LadyAda pour AdaFruit Industries.

Traduction réalisée par Meurisse D pour MCHobby.be.

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com