Changes for page Commutateur d' antenne
Last modified by Jean-Yves Dupertuis on 27-08-2014, 11:07
edited by Jean-Yves Dupertuis
on 18-07-2014, 13:39
on 18-07-2014, 13:39
edited by Jean-Yves Dupertuis
on 18-07-2014, 10:59
on 18-07-2014, 10:59
Change comment:
Ajout de l'image cableCommAnt.jpg
Summary
-
Page properties (1 modified, 0 added, 0 removed)
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 -