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:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
def set_angle(self, angle):
|
#Set function to calculate percent from angle servo mettre time sleep après la déclaration
|
||||||
if 0 <= angle <= 180:
|
def set_angle(self, angle) :
|
||||||
pulse_width_ms = (angle / 180) * (2 - 1) + 1
|
if angle > 120 or angle < 0 :
|
||||||
duty_cycle = (pulse_width_ms / 20) * 100
|
return False
|
||||||
self.PWMSERVO.ChangeDutyCycle(duty_cycle)
|
start = 4
|
||||||
# Calcul du temps nécessaire pour atteindre l'angle donné
|
end = 12.5
|
||||||
movement_time = (angle / 60) * 0.15 # 0.12 sec pour 60 degrés
|
ratio = (end - start)/120 #Calcul ratio from angle to percent
|
||||||
time.sleep(movement_time)
|
angle_as_percent = angle * ratio
|
||||||
else:
|
return start + angle_as_percent
|
||||||
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
|
||||||
|
|||||||
@@ -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":
|
||||||
|
|||||||
@@ -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é à 180°")
|
print("Positionné à 120°")
|
||||||
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.")
|
||||||
|
|||||||
Reference in New Issue
Block a user