CARIA.2.2.3

Change the gpio for the servo motor because there is a residual current problem and the method for set_angle
This commit is contained in:
ccunatbrule
2024-09-03 18:33:41 +02:00
parent 2272b03262
commit 97d3cca5cc
4 changed files with 40 additions and 32 deletions

View File

@@ -10,13 +10,14 @@ Ab = AlphaBot()
status = "initialization" status = "initialization"
try: try:
while True: while True:
time.sleep(3) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(0))
# Ab.set_angle(0) time.sleep(1)
print("La porte est actuellement fermée.\nVeuillez approcher votre badge RFID du capteur pour accéder au véhicule.") print("La porte est actuellement fermée.\nVeuillez approcher votre badge RFID du capteur pour accéder au véhicule.")
id_rfid, text_rfid = RFID_MODULE.read() id_rfid, text_rfid = RFID_MODULE.read()
rfid_content = RFID_MODULE.read() rfid_content = RFID_MODULE.read()
if text_rfid == "TEST RFID ": if text_rfid == "TEST RFID ":
Ab.set_angle(90) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(90))
time.sleep(1)
print(f"Bienvenue, {text_rfid.rstrip()} \nJe suis heureux de pouvoir partager un trajet avec vous !") print(f"Bienvenue, {text_rfid.rstrip()} \nJe suis heureux de pouvoir partager un trajet avec vous !")
time.sleep(5) time.sleep(5)
print("Installez-vous confortablement !") print("Installez-vous confortablement !")
@@ -26,12 +27,13 @@ try:
subprocess.run(['python3', 'apps/itineraire_create.py'], check=True) subprocess.run(['python3', 'apps/itineraire_create.py'], check=True)
try: try:
print("Nous préparons votre trajet en toute sécurité.") print("Nous préparons votre trajet en toute sécurité.")
Ab.set_angle(0) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(0))
time.sleep(1)
# Changer si nécessaire 'apps/itineraire_suivre.py' en 'apps/itineraire_suivre_emergency.py' # Changer si nécessaire 'apps/itineraire_suivre.py' en 'apps/itineraire_suivre_emergency.py'
subprocess.run(['python3', 'apps/itineraire_suivre_emergency.py'], check=True) subprocess.run(['python3', 'apps/itineraire_suivre.py'], check=True)
print("Merci d'avoir utilisé notre service !") print("Merci d'avoir utilisé notre service !")
Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(90))
time.sleep(2) time.sleep(2)
Ab.set_angle(90)
print("Nous espérons que vous avez apprécié votre trajet.") print("Nous espérons que vous avez apprécié votre trajet.")
time.sleep(2) time.sleep(2)
print("À bientôt avec CARIA !") print("À bientôt avec CARIA !")
@@ -43,11 +45,12 @@ try:
print(f"Erreur lors de l'exécution du script step1_prepare_itineraire: {e}") print(f"Erreur lors de l'exécution du script step1_prepare_itineraire: {e}")
status = "error" status = "error"
elif text_rfid in ["CHRIS "]: elif text_rfid in ["CHRIS "]:
Ab.set_angle(90) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(90))
time.sleep(1)
print(f"Bienvenue, {text_rfid.rstrip()}.\nLa porte du véhicule est maintenant ouverte!") print(f"Bienvenue, {text_rfid.rstrip()}.\nLa porte du véhicule est maintenant ouverte!")
status = "scenario successful" status = "scenario successful"
else: else:
Ab.set_angle(0) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(0))
print("Bonjour, vous n'êtes pas autorisé à entrer dans le véhicule.\nLa porte reste fermée.") print("Bonjour, vous n'êtes pas autorisé à entrer dans le véhicule.\nLa porte reste fermée.")
print(rfid_content) print(rfid_content)
time.sleep(2) time.sleep(2)

View File

@@ -8,7 +8,7 @@ class AlphaBot(object):
self.LIDAR_MODULE.write(b'\x42\x57\x02\x00\x00\x00\x01\x06') self.LIDAR_MODULE.write(b'\x42\x57\x02\x00\x00\x00\x01\x06')
self.RED_LIGHT = 17 self.RED_LIGHT = 17
self.OBSTACLE_PIN = 16 self.OBSTACLE_PIN = 16
self.SERVO_PIN = 27 self.SERVO_PIN = 22
self.IN1 = 12 self.IN1 = 12
self.IN2 = 13 self.IN2 = 13
self.ENA = 6 self.ENA = 6
@@ -37,6 +37,7 @@ class AlphaBot(object):
self.PWMA.start(0) # Démarre avec un rapport cyclique de 0 (moteurs arrêtés) self.PWMA.start(0) # Démarre avec un rapport cyclique de 0 (moteurs arrêtés)
self.PWMB.start(0) self.PWMB.start(0)
self.PWMSERVO.start(0) self.PWMSERVO.start(0)
time.sleep(1)
GPIO.output(self.RED_LIGHT, GPIO.HIGH) GPIO.output(self.RED_LIGHT, GPIO.HIGH)
@@ -50,16 +51,15 @@ class AlphaBot(object):
vitesse = max(vitesse_min, min(vitesse, vitesse_max)) vitesse = max(vitesse_min, min(vitesse, vitesse_max))
return vitesse return vitesse
#Set function to calculate percent from angle servo mettre time sleep après la déclaration
def set_angle(self, angle) : def set_angle(self, angle) :
if 0 <= angle <= 180: if angle > 120 or angle < 0 :
pulse_width_ms = (angle / 180) * (2 - 1) + 1 return False
duty_cycle = (pulse_width_ms / 20) * 100 start = 4
self.PWMSERVO.ChangeDutyCycle(duty_cycle) end = 12.5
# Calcul du temps nécessaire pour atteindre l'angle donné ratio = (end - start)/120 #Calcul ratio from angle to percent
movement_time = (angle / 60) * 0.15 # 0.12 sec pour 60 degrés angle_as_percent = angle * ratio
time.sleep(movement_time) return start + angle_as_percent
else:
print("Angle hors de portée. Le rapport cyclique doit être compris entre 2,5 et 12,5.")
def blink_led(self, blink_duration=0.2): def blink_led(self, blink_duration=0.2):
self.blinking = True self.blinking = True

View File

@@ -12,21 +12,26 @@ fonctionnement_ok = False
# Lecture initiale du tag RFID # Lecture initiale du tag RFID
try: try:
Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(0))
time.sleep(1)
print("La porte est actuellement fermée.\nVeuillez approcher votre badge RFID du capteur pour accéder au véhicule.") print("La porte est actuellement fermée.\nVeuillez approcher votre badge RFID du capteur pour accéder au véhicule.")
id_rfid, text_rfid = RFID_MODULE.read() id_rfid, text_rfid = RFID_MODULE.read()
if text_rfid in ["CHRIS "]: if text_rfid in ["CHRIS "]:
Ab.set_angle(90) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(90))
time.sleep(1)
print(f"Salut {text_rfid.rstrip()}, votre accès est validé avec succès.\nLa porte du véhicule est maintenant ouverte!") print(f"Salut {text_rfid.rstrip()}, votre accès est validé avec succès.\nLa porte du véhicule est maintenant ouverte!")
status = "Access successful" status = "Access successful"
elif text_rfid == "TEST RFID ": elif text_rfid == "TEST RFID ":
Ab.set_angle(90) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(90))
time.sleep(1)
print(f"Bienvenue, {text_rfid.rstrip()}.\nLa porte du véhicule est maintenant ouverte!") print(f"Bienvenue, {text_rfid.rstrip()}.\nLa porte du véhicule est maintenant ouverte!")
status = "Access successful" status = "Access successful"
else: else:
print("Bonjour, vous n'êtes pas autorisé à entrer dans le véhicule.\nLa porte reste fermée.") print("Bonjour, vous n'êtes pas autorisé à entrer dans le véhicule.\nLa porte reste fermée.")
status = "Access denied" status = "Access denied"
Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(0))
time.sleep(1)
print(f"(ID, Text)",id_rfid, text_rfid) print(f"(ID, Text)",id_rfid, text_rfid)
time.sleep(2)
except KeyboardInterrupt: except KeyboardInterrupt:
print("Interruption par l'utilisateur.") print("Interruption par l'utilisateur.")
status = "interrupted" status = "interrupted"
@@ -35,7 +40,6 @@ except Exception as e:
status = "error" status = "error"
finally: finally:
Ab.PWMSERVO.stop() Ab.PWMSERVO.stop()
time.sleep(2)
# Vérification finale et affichage du statut # Vérification finale et affichage du statut
if status == "Access successful": if status == "Access successful":

View File

@@ -7,17 +7,18 @@ Ab = AlphaBot()
status = "initialization" status = "initialization"
try: try:
Ab.set_angle(0) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(0))
print("Positionné à 0°") print("Positionné à 0°")
time.sleep(2) time.sleep(1)
Ab.set_angle(90) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(90))
print("Positionné à 90°") print("Positionné à 90°")
time.sleep(2) time.sleep(1)
Ab.set_angle(180) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(120))
print("Positionné à 18") print("Positionné à 12")
time.sleep(2) time.sleep(1)
Ab.set_angle(0) Ab.PWMSERVO.ChangeDutyCycle(Ab.set_angle(0))
print("Positionné à 0°") print("Positionné à 0°")
time.sleep(1)
status = "movement successful" status = "movement successful"
except KeyboardInterrupt: except KeyboardInterrupt:
print("Interruption par l'utilisateur.") print("Interruption par l'utilisateur.")