From version < 11.6 >
edited by Jean-Yves Dupertuis
on 18-07-2014, 13:39
To version < 11.1 >
edited by Jean-Yves Dupertuis
on 18-07-2014, 10:59
< >
Change comment: Ajout de l'image cableCommAnt.jpg

Summary

Details

Page properties
Content
... ... @@ -5,11 +5,8 @@
5 5  Ce travail a été confié à un apprenant de 4ème année (M// Loris Gilliand//) .
6 6  
7 7  
8 -= [[Fabrication>>doc:fabricationSwitch]] =
8 +== Interface Homme - Machine ==
9 9  
10 -
11 -= Interface Homme - Machine =
12 -
13 13  Pour commuter le TX sur une autre antenne, il suffit de taper la lettre (//canal désiré) au clavier.//
14 14  
15 15  L'image se modifie selon votre choix pour valider sa commutation.
... ... @@ -73,299 +73,3 @@
73 73  Les fils rouge sont l'arrivée du 12 Vdc depuis l'autre côté de la carte relais.
74 74  
75 75  **Ne pas oublier de les relier au 12Vdc !**
76 -
77 -
78 -== Câble ==
79 -
80 -
81 -[[image:cableCommAnt.jpg]]
82 -
83 -
84 -
85 -= Programmation Python =
86 -
87 -Voici le code source, vous pouvez le copier directement dans un IDLE Python 2.7.
88 -
89 -Si vous ne l'avez pas, voici un installeur pour Windows. Pour linux c'est plus simple il suffit d' ouvrir l'IDLE 2.7 déjà présent
90 -
91 -sur votre carte raspberry - py.
92 -
93 -
94 -# auteur : Gilliand Loris
95 -# date : 02.06.14
96 -# version 0.8
97 -#
98 -# amelioration depuis 0.7 : integre un lcd qui peut commander les changements
99 -
100 -# importation bibilotheques
101 -import pygame, sys, time
102 -from pygame.locals import *
103 -import RPi.GPIO as GPIO
104 -from Adafruit_CharLCDPlate import *
105 -
106 -# initialisation fenetre et gpio
107 -pygame.init()
108 -GPIO.setmode(GPIO.BCM)
109 -
110 -# fonction qui change LA sortie active
111 -def change_sortie(ligne):
112 - BP1.etat = 0
113 - BP2.etat = 0
114 - BP3.etat = 0
115 - BP4.etat = 0
116 - BP1.affiche_etat(inactif)
117 - BP2.affiche_etat(inactif)
118 - BP3.affiche_etat(inactif)
119 - BP4.affiche_etat(inactif)
120 - time.sleep(0.25)
121 - if ligne == 'a':
122 - BP1.etat = 1
123 - BP1.affiche_etat(actif)
124 - elif ligne == 'b':
125 - BP2.etat = 1
126 - BP2.affiche_etat(actif)
127 - elif ligne == 'c':
128 - BP3.etat = 1
129 - BP3.affiche_etat(actif)
130 - elif ligne == 'd':
131 - BP4.etat = 1
132 - BP4.affiche_etat(actif)
133 -
134 -# classe de creation de cases
135 -class Cases:
136 - def __init__(self,image,pos,port,init):
137 - self.image = pygame.image.load(image).convert()
138 - self.pos = pos
139 - self.port = port
140 - self.etat = init
141 - self.rect = self.image.get_rect().move(self.pos)
142 - GPIO.setup(self.port,GPIO.OUT)
143 - GPIO.output(self.port,GPIO.LOW)
144 -
145 - def affiche_etat(self,indicateur):
146 - indicateur = pygame.image.load(indicateur).convert()
147 - indi_rect = indicateur.get_rect()
148 - indi_rect.centerx = self.rect.centerx - self.pos[0]
149 - indi_rect.centery = self.rect.centery - self.pos[1]
150 - if self.etat == 0:
151 - GPIO.output(self.port,GPIO.LOW)
152 - elif self.etat == 1:
153 - GPIO.output(self.port,GPIO.HIGH)
154 - self.image.blit(indicateur,indi_rect)
155 -
156 -# initialisation de la fenetre
157 -screen = pygame.display.set_mode((600,600))
158 -clock = pygame.time.Clock()
159 -# initialisation des couleurs
160 -rouge = (255,0,0)
161 -noir = (0,0,0)
162 -blanc = (255,255,255)
163 -vert = (0,255,0)
164 -bleu = (0,0,255)
165 -
166 -# initialisation des variables
167 -startline = (183,149)
168 -endline = (293,75)
169 -
170 -flag_canal = 0
171 -
172 -canal = [4,17,18,22,23,24,25,27]
173 -
174 -# definitions des zones
175 -zone1 = pygame.Surface((600,150))
176 -zone1.fill(bleu)
177 -
178 -zone2 = pygame.Surface((400,300))
179 -zone2.fill(bleu)
180 -
181 -zone3 = pygame.Surface((600,150))
182 -zone3.fill(bleu)
183 -
184 -zone4 = pygame.Surface((200,300))
185 -zone4.fill(bleu)
186 -
187 -# definitions des objets a afficher dans les zones
188 -# zone 1
189 -font = pygame.font.Font(None,60)
190 -titre1 = font.render("HB9EM",1,noir)
191 -titre2 = font.render("Commutateur d'antennes",1,noir)
192 -zone1.blit(titre1,(230,30))
193 -zone1.blit(titre2,(50,70))
194 -
195 -# zone 2
196 -commu = pygame.image.load("commu_antenne.bmp").convert()
197 -zone2.blit(commu,(50,50))
198 -
199 -# zone 3
200 -actif = "actif_commu.bmp"
201 -inactif = "inactif_commu.bmp"
202 -
203 -BP1 = Cases("bouton_commu.bmp",(125,50),canal[1],1)
204 -BP2 = Cases("bouton_commu.bmp",(225,50),canal[2],0)
205 -BP3 = Cases("bouton_commu.bmp",(325,50),canal[3],0)
206 -BP4 = Cases("bouton_commu.bmp",(425,50),canal[4],0)
207 -grp_cases = [BP1,BP2,BP3,BP4]
208 -BP1.affiche_etat(actif)
209 -BP2.affiche_etat(inactif)
210 -BP3.affiche_etat(inactif)
211 -BP4.affiche_etat(inactif)
212 -
213 -zone3.blit(BP1.image,BP1.rect)
214 -zone3.blit(BP2.image,BP2.rect)
215 -zone3.blit(BP3.image,BP3.rect)
216 -zone3.blit(BP4.image,BP4.rect)
217 -
218 -font = pygame.font.Font(None,20)
219 -canal_a = font.render("canal A",1,noir)
220 -canal_b = font.render("canal B",1,noir)
221 -canal_c = font.render("canal C",1,noir)
222 -canal_d = font.render("canal D",1,noir)
223 -zone3.blit(canal_a,(125,35))
224 -zone3.blit(canal_b,(225,35))
225 -zone3.blit(canal_c,(325,35))
226 -zone3.blit(canal_d,(425,35))
227 -
228 -# zone 4
229 -commande = font.render("Commandes :",1,noir)
230 -touche_a = font.render("Selection canal A : touche a",1,noir)
231 -touche_b = font.render("Selection canal B : touche b",1,noir)
232 -touche_c = font.render("Selection canal C : touche c",1,noir)
233 -touche_d = font.render("Selection canal D : touche d",1,noir)
234 -quitter = font.render("Quitter : touche q",1,noir)
235 -zone4.blit(commande,(10,20))
236 -zone4.blit(touche_a,(10,60))
237 -zone4.blit(touche_b,(10,80))
238 -zone4.blit(touche_c,(10,100))
239 -zone4.blit(touche_d,(10,120))
240 -zone4.blit(quitter,(10,200))
241 -
242 -# affichage des zones
243 -screen.blit(zone1,(0,0))
244 -screen.blit(zone2,(0,150))
245 -screen.blit(zone3,(0,450))
246 -screen.blit(zone4,(400,150))
247 -
248 -lcd = Adafruit_CharLCDPlate()
249 -lcd.begin(16,2)
250 -btn = ((lcd.SELECT, '', lcd.ON),
251 - (lcd.LEFT , 'Antenne 1' , lcd.ON),
252 - (lcd.UP , 'Antenne 2' , lcd.ON),
253 - (lcd.DOWN , 'Antenne 4' , lcd.ON),
254 - (lcd.RIGHT , 'Antenne 3' , lcd.ON))
255 -prev = -1
256 -temp = ''
257 -active = 'Antenne 1'
258 -act = ' active'
259 -lcd.message((active + act))
260 -while 1:
261 - clock.tick(30)
262 - for b in btn:
263 - if lcd.buttonPressed(lcd.SELECT):
264 - lcd.clear()
265 - lcd.message((active + act))
266 - time.sleep(0.25)
267 - if temp != '':
268 - active = temp
269 - temp = ''
270 - if active == 'Antenne 1':
271 - change_sortie('a')
272 - endline = (293,75)
273 - if active == 'Antenne 2':
274 - change_sortie('b')
275 - endline = (293,125)
276 - if active == 'Antenne 3':
277 - change_sortie('c')
278 - endline = (293,175)
279 - if active == 'Antenne 4':
280 - change_sortie('d')
281 - endline = (293,225)
282 - lcd.setCursor(0,0)
283 - lcd.message((active + act))
284 - lcd.setCursor(0,1)
285 - lcd.message(' ')
286 - if lcd.buttonPressed(lcd.RIGHT):
287 - temp = 'Antenne 3'
288 - lcd.setCursor(0,1)
289 - lcd.message(temp)
290 - if lcd.buttonPressed(lcd.DOWN):
291 - temp = 'Antenne 4'
292 - lcd.setCursor(0,1)
293 - lcd.message(temp)
294 - if lcd.buttonPressed(lcd.UP):
295 - temp = 'Antenne 2'
296 - lcd.setCursor(0,1)
297 - lcd.message(temp)
298 - if lcd.buttonPressed(lcd.LEFT):
299 - temp = 'Antenne 1'
300 - lcd.setCursor(0,1)
301 - lcd.message(temp)
302 -
303 - for event in pygame.event.get():
304 - lcd.setCursor(0,0)
305 - if event.type == pygame.QUIT:
306 - GPIO.cleanup()
307 - sys.exit()
308 - if event.type == pygame.KEYDOWN:
309 - if event.key == pygame.K_q:
310 - GPIO.cleanup()
311 - sys.exit()
312 - if event.key == pygame.K_a:
313 - active = 'Antenne 1'
314 - lcd.message((active + act))
315 - change_sortie('a')
316 - endline = (293,75)
317 - if event.key == pygame.K_b:
318 - active = 'Antenne 2'
319 - lcd.message((active + act))
320 - change_sortie('b')
321 - endline = (293,125)
322 - if event.key == pygame.K_c:
323 - active = 'Antenne 3'
324 - lcd.message((active + act))
325 - change_sortie('c')
326 - endline = (293,175)
327 - if event.key == pygame.K_d:
328 - active = 'Antenne 4'
329 - lcd.message((active + act))
330 - change_sortie('d')
331 - endline = (293,225)
332 -
333 - souris = pygame.mouse.get_pos()
334 - souris_rect = [[souris[0],souris[1]],[5,5]]
335 - souris_rect = pygame.Rect(souris_rect)
336 -
337 - for i in grp_cases:
338 - lcd.setCursor(0,0)
339 - if souris_rect.colliderect(i.rect.move((0,450))):
340 - if pygame.mouse.get_pressed() == (1,0,0):
341 - if i.port == canal[1]:
342 - active = 'Antenne 1'
343 - lcd.message((active + act))
344 - change_sortie('a')
345 - endline = (293,75)
346 - if i.port == canal[2]:
347 - active = 'Antenne 2'
348 - lcd.message((active + act))
349 - change_sortie('b')
350 - endline = (293,125)
351 - if i.port == canal[3]:
352 - active = 'Antenne 3'
353 - lcd.message((active + act))
354 - change_sortie('c')
355 - endline = (293,175)
356 - if i.port == canal[4]:
357 - active = 'Antenne 4'
358 - lcd.message((active + act))
359 - change_sortie('d')
360 - endline = (293,225)
361 -
362 - zone3.blit(BP1.image,BP1.rect)
363 - zone3.blit(BP2.image,BP2.rect)
364 - zone3.blit(BP3.image,BP3.rect)
365 - zone3.blit(BP4.image,BP4.rect)
366 - screen.blit(zone3,(0,450))
367 - zone2.blit(commu,(50,50))
368 - pygame.draw.line(zone2,noir,startline,endline,2)
369 - screen.blit(zone2,(0,150))
370 - pygame.display.update()
371 -