Différences entre versions de « TFT-TOUCH-SHIELD-v2-TouchScreen »
Ligne 17 : | Ligne 17 : | ||
{{ADFImage|TFT-TOUCH-SHIELD-v2-01.jpg|640px}} | {{ADFImage|TFT-TOUCH-SHIELD-v2-01.jpg|640px}} | ||
− | {{ambox-stop|text= | + | {{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 == | == 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); | Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS); | ||
− | + | Puisque nous utilisons le bus SPI matériel, la seule proche à 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() | ts.begin() |
Version du 18 janvier 2014 à 17:54
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.
Crédit: AdaFruit Industries www.adafruit.com
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. 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 proche à 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()
Check to make sure this returns a True value, which means the driver was found. If it wasn't, make sure you have the hardware SPI jumpers set up right: for Leonardo/Mega the ICSP jumpers get closed.
Now you can call
if (! ts.bufferEmpty())
to check if there's any data in the buffer. The touchscreen driver will store touchpoints at all times. When you're ready to get the data, just check if there's any data in the buffer. If there is, you can call
TS_Point p = ts.getPoint();
To get the oldest point from the buffer. TS_Point has .x .y and .z data points. The x and y points range from 0 to 4095. The STMPE610 does not store any calibration data in it and it doesn't know about rotation. So if you want to rotate the screen you'll need to manually rotate the x/y points! The z point is 'pressure' and ranges from 0 to 255, we don't use it here but you can experiment with it on your own, the harder you press, the lower the number.
Since data from the STMPE610 comes in 0-4095 but our screen is 320 pixels by 240 pixels, we can use map to convert 0-4095 to 0-320 or 0-240. Something like
p.x = map(p.x, 0, 4095, 0, tft.width()); p.y = map(p.y, 0, 4095, 0, tft.height());
However, the touchscreen is a bit bigger than the screen, so we actually need to ignore presses beyond the touchscreen itself. We found that these numbers reflected the true range that overlaps the screen
#define TS_MINX 150 #define TS_MINY 130 #define TS_MAXX 3800 #define TS_MAXY 4000
So we use
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width()); p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
instead.
One last point (pun intended!) since the touchscreen driver stores points in a buffer, you may want to ask the driver "is the touchscreen being pressed RIGHT NOW?" You can do that with
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