# -*- encoding: UTF-8 -*- #Encodage d'un afficheur 7 segments # --a-- # | | # f b # | | # --g-- # | | # e c # | | # --d-- p import RPi.GPIO as GPIO from shifter import register import time import sys seg = {'0':'64','1':'121','2':'36','3':'48','4':'25', '5':'18','6':'2','7':'120','8':'0','9':'16','A':'8','b':'3', 'C':'70','d':'33','E':'6','F':'14','H':'9','L':'71','P':'12', 'h':'11','t':'7','°':'28','Y':'17','c':'39','o':'35',' ':'127'} GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) shift=register(38,36,40,16) def convbroche(ent): """Permet de convertir les broches en fonction des branchements""" #a1,b1,c1,d1,e1,f1,g1,a2,b2,c2,d2,e2,f2,g2 - 7 seg #Q0,Q1,Q2,Q3,Q4,Q5,Q7,Q7,Q8,Q9,Q10,Q11,Q12,Q13 74HC585 broche=[0,1,2,3,4,5,6,7,8,9,10,11,12,13] #broche=[9, 5, 10, 14, 8, 4, 3,2] result=0 for i in range(14): nobit=1<0): result=result|bitbroche shift.setValue(result) #return result def caractere(txt): """Affiche les caractères sur l'afficheur""" if len(txt)>1: sortie=int(seg[txt[0]])<<7 | int(seg[txt[1]]) else: sortie=0x3F80 | int(seg[txt[0]]) convbroche(sortie) def valeur(v): """Affiche une valeur entre 0 et 99""" entree=str(v) if v>9 : sortie=int(seg[entree[0]])<<7 | int(seg[entree[1]]) else : #sortie=0x3F80 | int(seg[entree[0]]) #Sans 0 sort 1 sortie=0x2000 | int(seg[entree[0]]) #Avec 0 sort 01 convbroche(sortie) def clignote(nbr,sortie,pause=.2): """Clignote 00 avec un nombre cligottement nbr""" for i in range(nbr): time.sleep(pause) caractere(sortie) time.sleep(pause) clear() def cercle(nbr,pause=.05): """Deplace un segment en cercle sur les deux afficheurs""" tourne=[126,127,123,119,111,95] for j in range(nbr): for i in tourne: shift.setValue(i<<7 | i) time.sleep(.05) clear def clear(): convbroche(0x3fff) def main(): if len(sys.argv) <=1: for i in reversed(range(30)): caractere(str(i)) time.sleep(0.2) clear clignote(8,"00",.1) cercle(8) else: caractere(sys.argv[1]) time.sleep(5) clear() if __name__=="__main__": main()