Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- from Ultrasonic import Ultrasonic
- from AfficheurLCD import AfficheurLCD
- # Initialisation du capteur ultrasonique + Afficheur
- capteur = Ultrasonic(pin_ech=21, pin_trig=20)
- afficheur = AfficheurLCD (pin_SDA=8, pin_SCL=9)
- # Fonction pour gérer la barre de chargement avec ramplissage sur le LCD
- def Barre_progression(duration_ms, elapsed_ms, length=7): # Ca taille est de 7 unités (à modifier selon la place restante)
- filled_length = int((elapsed_ms / duration_ms) * length)
- return "[" + "✅" * filled_length + " " * (length - filled_length) + "]"
- def Mode_Normal(): #Fonction d'un mode normal (plus vraiment important, il fut surtout utilisé pour des tests)
- afficheur.effacer_ecran()
- print("##########################-Mode 1 : NORMAL-##########################") # Ceci s'affiche dans la console
- afficheur.affiche_message("Mode 1") # Ceci s'affiche sur l'écran LCD
- base = 0 # Variable pour stocker la base (en mm)
- distance_stable = None # Variable pour stocker une distance "stable" entre le capteur et le dessous du tablier
- stable_start_time = None # Variable pour stocker un temps qui va se démarrer pour l'attente de 2 secondes de stabilité
- while True:
- current_distance = round(capteur.distance_en_mm()) #Obtenir la ditance en mm, arrondie sans virgule
- # Si une base n'est pas encore enregistrée
- if base == 0:
- # Vérifier la stabilité de la distance
- if distance_stable == current_distance or distance_stable == current_distance + 1 or distance_stable == current_distance -1 :
- # Vérifier la durée de stabilité
- if stable_start_time is None:
- stable_start_time = time.ticks_ms() # Attribution d'une durée à la variable "stable_start_time"
- duree = time.ticks_diff(time.ticks_ms(), stable_start_time) # Calcul de la durée
- # Mettre à jour l'écran LCD avec la barre de chargement
- afficheur.effacer_ecran()
- print("distance:", current_distance, "mm") # Affichage de la ditance actuelle dans la console
- afficheur.affiche_message("Distance :") #--|
- afficheur.positionner_curseur(0, 1) # |
- afficheur.affiche_message(f"{current_distance} mm ") # |- Affichage de la ditance actuelle sur l'écran LCD.
- progress_bar = Barre_progression(2000, duree) # |
- afficheur.affiche_message(progress_bar) #--|
- # Si la distance reste stable pendant 2 seconde
- if duree >= 2000:
- base = current_distance # Enregistrer la base
- afficheur.effacer_ecran()
- afficheur.affiche_message("Base fixee !") # On l'affiche sur à la fois sur le LCD et la console
- print("##########################-BASE FIXEE !-##########################") #
- time.sleep(2)
- else:
- # Réinitialiser toutes les variables si la distance change
- distance_stable = current_distance
- stable_start_time = None
- else: #Si la base est fixée, on part sur la flèche
- time.sleep_ms(250)
- fleche_Arron = base - round(capteur.distance_en_mm()) # Flèche arrondie au mm prêt
- fleche = base - capteur.distance_en_mm() # Flèche en distance exacte
- # Afficher le fleche : base - distances
- afficheur.effacer_ecran() #--|
- afficheur.affiche_message("fleche :") # | Affichage de la flèche (arrondie) sur l'écran LCD
- afficheur.positionner_curseur(0, 1) # |
- afficheur.affiche_message(f"{fleche_Arron} mm") #--|
- print(" |-> Fleche:", fleche, "mm") #--|Affichage de la flèche (taille exacte) ET de la distance (pour le débug si besoins) sur la console
- print(" |-> Distance:", current_distance, "mm") #--|
- if fleche_Arron <= -25 or fleche_Arron >= 300: # Si la flèche arrondie est dessous/égale à 2.5 cm ou est au dessus/égale à 30 cm
- # On indique sur la console et sur l'écran LCD qu'il y a un soucis de valeur de flèche. Donc il faut recalibrer ou ajuster les paramètres
- afficheur.effacer_ecran()
- print("fleche:", fleche, "mm" + "\n\nVALEUR TROP BASSE/TROP HAUTE, veuillez verifier le capteur/sa fixation/Le cablage et le recalibrer !")
- afficheur.positionner_curseur(0, 0)
- afficheur.affiche_message("Mal fixe")
- time.sleep(1)
- afficheur.effacer_ecran()
- afficheur.affiche_message("Veuillez")
- afficheur.positionner_curseur(0, 1)
- afficheur.affiche_message("Recalibrer !")
- time.sleep(3)
- Mode_Normal() # Pour démarrer le programme / La fonction du mode "Normal". Utilisation pour des anciens tests mais on le conserve au cas où.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement