Code : Tout sélectionner
# ce programme est prevu pour le pilotage d'un panier de basket
# il permet la detection du passage du balon dans l'anneau via a capteur type KY-032
# et compte les points au fur et a mesure
# a chaque redemarrage du programme le compteur est remis a zero
# pour sortir du programme faire un CTRL + C
# appel des bibliotheques python
import RPi.GPIO as GPIO
import time
import os
liste_son=[
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/okay_visiteur.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/wahoo.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/wazaa.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/youpi.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/aquecoucou.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/caramba_bart.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/tchoutchou.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/tarzan.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/droopy.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/surprise_cartoon.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/halelujah.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/cavalerie.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/bipbibdepart.wav",
"aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/bienjouelepers.wav"]
#initialisation du mode de nommage des Ports GPIO
# voir la correspondance via google images en recherchant GPIO
#https://faironnerie-abc.xyz/doc/electronique/raspberry-pi/pi-et-xbee.html
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False) #desactivation des messages python indiquant les warnings
liste_ports_sortie = [17,27,22,10,9,11,5,20,8] # liste des ports utilises pour les leds
liste_ports_Afficheur = [13,19,26,21,16,12,7] # liste des ports utilises pour l'afficheur
# -A-
# F| |B
# -G-
# E| |C
# -D-
# G est a branche sur le GPIO 13
# F est a branche sur le GPIO 19
# A est a branche sur le GPIO 26
# B est a branche sur le GPIO 21
# C est a branche sur le GPIO 16
# D est a branche sur le GPIO 12
# E est a branche sur le GPIO 7
#initialisation des ports gerant les 4 afficheurs
liste_ports_Digit = [25,24,23,18]
#initialisation du port avec la capteur de detection
liste_ports_entree = [6]
# tableau contenant la sequence d'allumage des leds pour obtenir les chiffres de 0 a 9
num = {' ':(0,0,0,0,0,0,0),
'0':(0,1,1,1,1,1,1),
'1':(0,0,0,1,1,0,0),
'2':(1,0,1,1,0,1,1),
'3':(1,0,1,1,1,1,0),
'4':(1,1,0,1,1,0,0),
'5':(1,1,1,0,1,1,0),
'6':(1,1,1,0,1,1,1),
'7':(0,0,1,1,1,0,0),
'8':(1,1,1,1,1,1,1),
'9':(1,1,1,1,1,1,0)}
# initialisation de la sequence d'allumage et d'extinction des leds
# pour le projet on a 7 leds donc 7 valeurs par ligne
# 1 = led allume 0 = led eteinte
sequence4 = [
[1,0,0,0,0,0,1,1,1],
[1,1,0,0,0,1,1,0,0],
[1,1,1,0,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0],
[1,0,0,0,0,0,1,1,1],
[1,1,0,0,0,1,1,0,0],
[1,1,1,0,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0],
[1,0,0,0,0,0,1,1,1],
[1,1,0,0,0,1,1,0,0],
[1,1,1,0,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0],
[1,0,0,0,0,0,1,1,1],
[1,1,0,0,0,1,1,0,0],
[1,1,1,0,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0],
[0,0,0,0,0,0,0,1,1]]
# fonction permettant la gestion de l'ordre d'allumage des leds a chaque panier
# on passe en parametre
# tempo : le delais voulu entre chaque sequence
# *sequence : la liste des sequences d'allumage et d'extinction des leds
def lancement(tempo,*sequence):
a = len(sequence)
j = 0
while j < len(sequence) :
i = 0
while i < 9 :
GPIO.output(liste_ports_sortie[i], sequence[j][i])
i = i + 1
j = j + 1
time.sleep(tempo)
#initialisation des ports GPIO pour la gestion des capteurs d'entrees
#
for i in liste_ports_sortie :
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, False)
#initialisation des ports GPIO pour la gestion des leds en mode sortie
for i in liste_ports_Afficheur :
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, False)
# initialisation des ports pour gestion les 4 digits du module 5641ah en mode sortie
for i in liste_ports_Digit :
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, False)
#initialisation des ports pour gestion des ports d'entrees
for i in liste_ports_entree :
GPIO.setup(i, GPIO.IN, pull_up_down = GPIO.PUD_UP)
# mise a zero du compteur
Compteur = 0
CompteurSon=0
s = str(Compteur).rjust(4)
fichier = open("/home/pi/Compteur.txt", "w")
fichier.write(s)
fichier.close()
# boucle principale
try:
os.system("aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/fanfare.wav")
time.sleep(2)
os.system("aplay -D bluealsa:DEV=00:1F:81:34:08:28 /home/pi/fanfare.wav")
time.sleep(2)
while True:
#print s
if GPIO.input(6) == False:
Compteur = Compteur + 1
s = str(Compteur).rjust(4)
fichier = open("/home/pi/Compteur.txt", "w")
fichier.write(s)
fichier.close()
lancement(0.03,*sequence4)
if CompteurSon < 14 :
os.system(liste_son[CompteurSon])
else :
CompteurSon = 0
os.system(liste_son[CompteurSon])
CompteurSon = CompteurSon +1
for digit in range(4):
for loop in range (0,7):
GPIO.output(liste_ports_Afficheur[loop],num[s[digit]][loop])
GPIO.output(liste_ports_Digit[digit], 0)
time.sleep(0.001)
GPIO.output(liste_ports_Digit[digit], 1)
# gestion de la sortie du programme par un CTRL+C et liberer les ports GPIO
except KeyboardInterrupt:
GPIO.cleanup() # reinitialisation des PORTS GPIO