From 61d8d40421ff375a9e5caa2769cd5e24c43b4ff0 Mon Sep 17 00:00:00 2001 From: M1n-0 Date: Wed, 3 Dec 2025 12:00:25 +0100 Subject: [PATCH] add exo BR --- base_roulante/base_roulante.py | 12 +++ base_roulante/logique_BR.py | 159 +++++++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+) create mode 100644 base_roulante/base_roulante.py create mode 100644 base_roulante/logique_BR.py diff --git a/base_roulante/base_roulante.py b/base_roulante/base_roulante.py new file mode 100644 index 0000000..df60120 --- /dev/null +++ b/base_roulante/base_roulante.py @@ -0,0 +1,12 @@ +from logique_BR import * +def main(): + print("Démarrage") + sleep(1) + + try: + while True: + + +# Lancer automatiquement si ce fichier est main.py +if __name__ == "__main__": + main() diff --git a/base_roulante/logique_BR.py b/base_roulante/logique_BR.py new file mode 100644 index 0000000..52f1e9b --- /dev/null +++ b/base_roulante/logique_BR.py @@ -0,0 +1,159 @@ +from machine import Pin, PWM, time_pulse_us +from time import sleep_us, sleep_ms, sleep + +# ------------------------- +# Configuration des broches +# PINS d'exemple, à adapter selon le câblage +# ------------------------- + +# Moteur gauche (L298N - côté A) +PIN_ENA = 25 # PWM moteur gauche +PIN_IN1 = 26 +PIN_IN2 = 27 + +# Moteur droit (L298N - côté B) +PIN_ENB = 14 # PWM moteur droit +PIN_IN3 = 12 +PIN_IN4 = 13 + +# Capteur HC-SR04 +PIN_TRIG = 5 +PIN_ECHO = 18 + +# ------------------------- +# Initialisation des broches +# ------------------------- + +# Moteur gauche +in1 = Pin(PIN_IN1, Pin.OUT) +in2 = Pin(PIN_IN2, Pin.OUT) +ena_pwm = PWM(Pin(PIN_ENA)) +ena_pwm.freq(1000) # fréquence PWM + +# Moteur droit +in3 = Pin(PIN_IN3, Pin.OUT) +in4 = Pin(PIN_IN4, Pin.OUT) +enb_pwm = PWM(Pin(PIN_ENB)) +enb_pwm.freq(1000) + +# HC-SR04 +trig = Pin(PIN_TRIG, Pin.OUT) +echo = Pin(PIN_ECHO, Pin.IN) + +# Vitesse par défaut (0 à 1023) +VITESSE_BASE = 600 + + +# ------------------------- +# Fonctions moteur +# ------------------------- + +def moteur_gauche_stop(): + """Arrête le moteur gauche.""" + in1.value(0) + in2.value(0) + ena_pwm.duty(0) + + +def moteur_droit_stop(): + """Arrête le moteur droit.""" + in3.value(0) + in4.value(0) + enb_pwm.duty(0) + + +def moteurs_stop(): + """Arrête les deux moteurs.""" + moteur_gauche_stop() + moteur_droit_stop() + + +def moteur_gauche_avant(vitesse): + """Fait tourner le moteur gauche en avant.""" + in1.value(1) + in2.value(0) + ena_pwm.duty(vitesse) + + +def moteur_gauche_arriere(vitesse): + """Fait tourner le moteur gauche en arrière.""" + in1.value(0) + in2.value(1) + ena_pwm.duty(vitesse) + + +def moteur_droit_avant(vitesse): + """Fait tourner le moteur droit en avant.""" + in3.value(1) + in4.value(0) + enb_pwm.duty(vitesse) + + +def moteur_droit_arriere(vitesse): + """Fait tourner le moteur droit en arrière.""" + in3.value(0) + in4.value(1) + enb_pwm.duty(vitesse) + + +def avancer(vitesse): + """Le robot avance tout droit.""" + moteur_gauche_avant(vitesse) + moteur_droit_avant(vitesse) + + +def reculer(vitesse): + """Le robot recule tout droit.""" + moteur_gauche_arriere(vitesse) + moteur_droit_arriere(vitesse) + + +def tourner_gauche(vitesse): + """ + Le robot tourne sur place vers la gauche : + - moteur droit en avant + - moteur gauche en arrière + """ + moteur_gauche_arriere(vitesse) + moteur_droit_avant(vitesse) + + +def tourner_droite(vitesse): + """Le robot tourne sur place vers la droite.""" + moteur_gauche_avant(vitesse) + moteur_droit_arriere(vitesse) + + +# ------------------------- +# Fonction mesure HC-SR04 +# ------------------------- + +def mesure_distance_cm(): + """ + Mesure la distance en cm avec le HC-SR04. + Retourne None si la mesure échoue. + """ + # S'assurer que TRIG est bas + trig.value(0) + sleep_ms(2) + + # Envoyer une impulsion de 10 us sur TRIG + trig.value(1) + sleep_us(10) + trig.value(0) + + # Mesurer la durée de l'impulsion sur ECHO + # timeout_us permet d'éviter de bloquer si pas de réponse + duree = time_pulse_us(echo, 1, 30000) # 30 ms max + + if duree < 0: + # -1, -2, -3 = codes d'erreur + return None + + # Convertir en distance : + # vitesse du son ≈ 343 m/s = 0,0343 cm/us + # distance aller-retour -> on divise par 2 + distance = (duree * 0.0343) / 2 + + return distance +