Created
June 14, 2021 19:38
-
-
Save ypelletier/84327434d393a1589bceece3b1375a90 to your computer and use it in GitHub Desktop.
Exemple d'utilisation de l'écran tactile ILI9341 avec un Raspberry Pi Pico.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
Exemple d'utilisation de l'écran tactile ILI9341 | |
avec un Raspberry Pi Pico. | |
Des boutons à l'écran peuvent être touchés pour | |
afficher des formes géométriques. | |
Plus d'informations: | |
https://electroniqueamateur.blogspot.com/2021/06/utilisation-dun-ecran-tactile-tft-spi.html | |
''' | |
from machine import Pin, SPI | |
# Pour les 3 fichiers ci-dessous: | |
# https://github.com/rdagger/micropython-ili9341 | |
import ili9341 | |
from xglcd_font import XglcdFont | |
from xpt2046 import Touch | |
# définition de quelques couleurs | |
rouge = ili9341.color565(255, 0, 0) | |
vert = ili9341.color565(0,255, 0) | |
bleu = ili9341.color565(0,0, 255) | |
blanc = ili9341.color565(255, 255, 255) | |
noir = ili9341.color565(0,0,0) | |
# position des boutons | |
bouton1 = (20, 170, 120, 40) # x, y, largeur, hauteur | |
bouton2 = (175, 170, 120, 40) | |
# c'est la routine qui est déclanchée lorsque l'écran | |
# envoie un signal sur la broche "interrupt" | |
def routine_touch(x, y): | |
# inversion des coordonnées x et y (car mode paysage) | |
x, y = y, x | |
y = 240 - y | |
# a-t-on cliqué sur le premier bouton? | |
if ((x > bouton1[0]) and (x < bouton1[0] + bouton1[2]) | |
and (y > bouton1[1]) and (y < bouton1[1] + bouton1[3])): | |
# on efface le dessin précédent | |
display.fill_rectangle(0, 0, 320, 150, noir) | |
# on affiche le dessin choisi | |
display.fill_circle(160, 80, 60, vert) | |
# a-t-on cliqué sur le deuxième bouton? | |
if ((x > bouton2[0]) and (x < bouton2[0] + bouton2[2]) | |
and (y > bouton2[1]) and (y < bouton2[1] + bouton2[3])): | |
# on efface le dessin précédent | |
display.fill_rectangle(0, 0, 320, 150, noir) | |
# on affiche le dessin choisi | |
display.fill_rectangle(60, 40, 200, 100, rouge) | |
# initialisation de l'affichage en mode paysage (rotation 90) | |
spiTFT = SPI(0, baudrate=40000000, sck=Pin(6), mosi=Pin(7)) | |
display = ili9341.Display(spiTFT, dc=Pin(13), cs=Pin(15), rst=Pin(14), | |
width=320, height=240, rotation = 90) | |
spiXPT = SPI(1, baudrate=1000000,sck=Pin(10), mosi=Pin(11), miso=Pin(8)) | |
#initialisation du capteur tactile | |
xptTouch = Touch(spiXPT, cs=Pin(12), int_pin=Pin(2), | |
int_handler = routine_touch, | |
x_min=128, x_max=1919, y_min=224, y_max=1963) | |
# (x_min, x_max, y_min et y_max sont les valeurs ajustées pour mon écran) | |
# chargement de la police de caractère | |
unispace = XglcdFont('fonts/Unispace12x24.c', 12, 24) | |
# Affichage du message initial | |
display.draw_text(0, 50, 'Veuillez faire votre choix', unispace, | |
ili9341.color565(255, 128, 0)) | |
#dessin du premier bouton | |
display.fill_rectangle(bouton1[0], bouton1[1], bouton1[2], bouton1[3], rouge) | |
display.draw_rectangle(bouton1[0], bouton1[1], bouton1[2], bouton1[3], blanc) | |
display.draw_text(bouton1[0]+20, bouton1[1]+6, 'Cercle', unispace, blanc,rouge) | |
#dessin du deuxième bouton | |
display.fill_rectangle(bouton2[0], bouton2[1], bouton2[2], bouton2[3], bleu) | |
display.draw_rectangle(bouton2[0], bouton2[1], bouton2[2], bouton2[3], blanc) | |
display.draw_text(bouton2[0]+4, bouton2[1]+6, 'Rectangle', unispace, blanc,bleu) | |
while True: | |
pass | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment