Modifications pour le document Commutateur d' antenne
Modifié par Jean-Yves Dupertuis le 27-08-2014, 11:07
modifié par Jean-Yves Dupertuis
sur 18-07-2014, 10:59
sur 18-07-2014, 10:59
modifié par Jean-Yves Dupertuis
sur 18-07-2014, 13:39
sur 18-07-2014, 13:39
Commentaire de modification :
programme python
Résumé
-
Propriétés de la Page (1 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Contenu
-
... ... @@ -5,8 +5,11 @@ 5 5 Ce travail a été confié à un apprenant de 4ème année (M// Loris Gilliand//) . 6 6 7 7 8 -= =Interface Homme - Machine==8 += [[Fabrication>>doc:fabricationSwitch]] = 9 9 10 + 11 += Interface Homme - Machine = 12 + 10 10 Pour commuter le TX sur une autre antenne, il suffit de taper la lettre (//canal désiré) au clavier.// 11 11 12 12 L'image se modifie selon votre choix pour valider sa commutation. ... ... @@ -70,3 +70,299 @@ 70 70 Les fils rouge sont l'arrivée du 12 Vdc depuis l'autre côté de la carte relais. 71 71 72 72 **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 +