Le programme sous Python
Avant tout, il faut installer correctement l'afficheur TFT et calibrer l'écran tactile. Voir les infos sur le site d'ADAFRUIT.
Avec un Raspbery Pi 2 et Pi .., il faut charger la bibliothèque compatible RPi.GPIO.0.7.0, l'archive est disponible sur le site Python. L' installation se fait avec :
$ pip install RPi.GPIO
Il est aussi nécessaire d'installer la bibliothèque graphique Pygame.
Pour l'installation de Pygame, ouvrez un terminal LX et tapez la commande suivante :
$ python3 - m pip install - U pygame -- user
Le programme est simple, après avoir créé 3 sliders avec la bibliothèque Pygame, il renvoie la position de la souris( doigt sur l'écran), détermine par une fenêtre le curseur concerné et modifie la largeur d'impulsion de la sortie PWM GPIO17 ou 27 ou 22.
Le programme a besoin de charger les images qui doivent se trouver dans le même dossier que le programme slider_3.py.
Le programme Python fonctionne avec l'environnement python 2.7.
Pour lancer le programme slider_3.py sur l'écran TFT, il suffit en ligne de commande de se placer dans le dossier où se trouve le programme et de taper la commande :
$ sudo python slider_3.py
#!/usr/bin/python
# Jmd **** Mai 2015 *******
import os
import pygame, sys
from pygame.locals import *
import RPi.GPIO as GPIO
os.environ["SDL_FBDEV"] = "/dev/fb1"
os.environ["SDL_MOUSEDEV"] = "/dev/input/touchscreen"
os.environ["SDL_MOUSEDRV"] = "TSLIB"
# set Pwm and GPIO
GPIO.setmode(GPIO.BCM)
GPIO_RED = 17
GPIO_GREEN = 27
GPIO_BLUE = 22
GPIO.setup(GPIO_RED,GPIO.OUT)
GPIO.setup(GPIO_GREEN,GPIO.OUT)
GPIO.setup(GPIO_BLUE,GPIO.OUT)
pr = GPIO.PWM(GPIO_RED,100)
pg = GPIO.PWM(GPIO_GREEN,100)
pb = GPIO.PWM(GPIO_BLUE,100)
pr.start(0)
pg.start(0)
pb.start(0)
# set window size
width = 320
height = 200
# initilaise pygame
pygame.init()
screen = pygame.display.set_mode((width,height),1,16)
slider_g= pygame.image.load('cursor_g.gif')
slider_r= pygame.image.load('cursor_r.gif')
slider_b= pygame.image.load('cursor_b.gif')
background= pygame.image.load('slider_gnd.jpg')
button_quit = pygame.image.load('exit.tiff')
pygame.mouse.set_visible(False)
#starting position
x = xg = xr = xb = 0
screen.blit(background,(0,0))
screen.blit(button_quit,(260,0))
screen.blit(slider_r,(x,53))
screen.blit(slider_g,(x,100))
screen.blit(slider_b,(x,148))
pygame.display.update(pygame.Rect(0,0,width,height))
#cursor red
def cursor_r():
screen.blit(background,(0,0))
screen.blit(button_quit,(260,0))
global xr
xr = x
screen.blit(slider_r,(x,53))
screen.blit(slider_g,(xg,100))
screen.blit(slider_b,(xb,148))
pygame.display.update(pygame.Rect(0,0,width,height))
pr.ChangeDutyCycle(int(x/2.8))
print "Red",
print int(x/2.8),
print "%"
#cursor green
def cursor_g():
global xg
xg = x
screen.blit(background,(0,0))
screen.blit(button_quit,(260,0))
screen.blit(slider_g,(x,100))
screen.blit(slider_r,(xr,53))
screen.blit(slider_b,(xb,148))
pygame.display.update(pygame.Rect(0,0,width,height))
pg.ChangeDutyCycle(int(x/2.8))
print "Green",
print int(x/2.8),
print "%"
#cursor blue
def cursor_b():
global xb
xb = x
screen.blit(background,(0,0))
screen.blit(button_quit,(260,0))
screen.blit(slider_b,(x,148))
screen.blit(slider_g,(xg,100))
screen.blit(slider_r,(xr,53))
pygame.display.update(pygame.Rect(0,0,width,height))
pb.ChangeDutyCycle(int(x/2.8))
print "Blue",
print int(x/2.8),
print "%"
def on_click():
click_pos = (pygame.mouse.get_pos() [0], pygame.mouse.get_pos() [1])
#check to see if exit has been pressed
if 270 <= click_pos[0] <= 310 and 10 <= click_pos[1] <=30:
print "You pressed exit"
pygame.quit()
GPIO.cleanup()
sys.exit()
s = 0
while s == 0:
button = pygame.mouse.get_pressed()
if button[0] != 0:
pos = pygame.mouse.get_pos()
x = pos[0]
y = pos[1]
if x < 5:
x = 0
if x > 280:
x = 280
if y > 50 and y < 80:
cursor_r()
if y > 100 and y < 130:
cursor_g()
if y > 150 and y < 180:
cursor_b()
on_click()
# check for ESC key pressed, or pygame window closed, to quit
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
GPIO.cleanup()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
GPIO.cleanup()
sys.exit()
|