1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
| #!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import wiringpi2 as WP # on peut donner un alias pour abréger un nom long
from time import sleep
from Tkinter import *
# on met généralement les constantes en MAJUSCULES
CLOCK = 27 # Pin 27 GPIO
DATA = 18 # Pin 18 GPIO
LATCH = 24 # Pin 24 GPIO
# configuration des pins
WP.wiringPiSetupGpio()
# quitte à définir des constantes autant les utiliser :
WP.pinMode(LATCH, 1) # mode sortie
WP.pinMode(DATA, 1) # mode sortie
WP.pinMode(CLOCK, 1) # mode sortie
#~ WP.pinMode(24,1) # La pin 24 GPIO du Latch est en sortie
#~ WP.pinMode(18,1) # La pin 18 GPIO de DATA est en sortie
#~ WP.pinMode(27,1) # La pin 27 GPIO de CLOCK est en sortie
# sauf ambiguité, on note les paramètres simplement
def send_att(attn):
"""
petit texte pour dire ce qu'on fait dans cette procédure ?
c'est bien pour les autres, c'est bien aussi pour soi-même,
quand on revient sur du code longtemps après;
"""
print 'Recu 1: ', attn
if 0 <= attn < 31:
print 'Voie 1 < 31: ', attn
# le 1 ou le 0 permet d'inverser l'ordre des bits
WP.shiftOut(DATA, CLOCK, 1, (attn*2))
elif attn < 63:
print 'Voie 1 < 63: ', attn
WP.shiftOut(DATA, CLOCK, 1, (((attn-31)+32)*2))
elif attn < 93:
print 'Voie 1 > 63:' , attn
WP.shiftOut(DATA, CLOCK, 1, (((attn-62)+96)*2))
elif attn >= 93:
print 'Voie 1 > 93: ', attn
# confusion de noms : qui est qui, ici ?
# que vouliez-vous faire ?
attn = 93
# end if
# end def
# évitez la notation CamelCase pour les noms de fonctions,
# cette notation est généralement réservée pour les noms de classes
# cf documentation PEP 8:
# http://legacy.python.org/dev/peps/pep-0008/
def send():
"""
idem ici : petit texte pour dire ce qui se fait dans le coin
"""
# on pourrait noter les locales comme ceci :
_voie1 = saisie1.get() # Voie 1 = Valeur saisie dans Spinbox
send_att(_voie1) # Appel de fonction avec attn = _voie1
WP.digitalWrite(LATCH, 1) # LATCH ON
WP.digitalWrite(LATCH, 0) # LATCH OFF
print "Recu 2: ", _voie1 # reçu ? où est-ce que _voie1 a été modifiée ?
# end def
# on pourrait distinguer les globales ainsi, par exemple :
g_voie1 = IntVar() # ou... DoubleVar() (cf Spinbox()) ?
g_attn = 0
# création de l'interface IHM
fenetre = Tk()
fenetre.title("Ways Command")
# saisir la valeur de la voie 1 avec Spinbox
saisie1 = Spinbox(
fenetre,
from_=0,
to=93.5,
textvariable=g_voie1,
)
saisie1.pack()
# envoyer la valeur de la voie 1 avec Button
bouton_envoi = Button(
fenetre,
text="Envoyer",
bg="green",
command=send,
)
bouton_envoi.pack(side=LEFT)
# bouton quitter
bouton_quitter = Button(
fenetre,
text="Quitter",
command=fenetre.destroy,
)
bouton_quitter.pack(side=LEFT)
# on lance la boucle principale
fenetre.mainloop() |
Partager