2023-10-07 08:28:28 +02:00
|
|
|
|
import pyfirmata
|
|
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
|
# servo-test.py :
|
|
|
|
|
# @title: Test de pilotage d'un servomoteur par pyFirmata
|
|
|
|
|
# @project: Blender-EduTech - Tutoriel : Tutoriel 6 : Labyrinthe à bille - Développement de jumeau numérique
|
|
|
|
|
# @lang: fr
|
|
|
|
|
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>, Andre Nicolas <Nicolas.Andre@ac-grenoble.fr>
|
|
|
|
|
# @copyright: Copyright (C) 2023 Philippe Roy
|
|
|
|
|
# @license: GNU GPL
|
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
|
|
# Communication avec la carte Arduino
|
2023-10-07 08:54:34 +02:00
|
|
|
|
# carte = pyfirmata.Arduino('COM3') # Windows
|
2023-10-08 11:54:39 +02:00
|
|
|
|
carte = pyfirmata.Arduino('/dev/ttyACM1') # GNU/Linux
|
2023-10-07 08:28:28 +02:00
|
|
|
|
print("Communication Carte Arduino établie")
|
|
|
|
|
|
2023-10-08 11:58:29 +02:00
|
|
|
|
servo = carte.get_pin('d:9:s') # Servomoteur sur la broche D9
|
2023-10-07 08:28:28 +02:00
|
|
|
|
|
|
|
|
|
try :
|
|
|
|
|
while True: # Boucle infinie
|
2023-10-08 11:54:39 +02:00
|
|
|
|
print ("Angle :", servo.read())
|
2023-10-07 08:54:34 +02:00
|
|
|
|
angle = int(input("Entrer un angle entre 10 et 170) : ")) # Demande à l’utilisateur d’entrer la valeur de l’angle
|
2023-10-08 11:58:29 +02:00
|
|
|
|
if angle < 10 : # Si la valeur entrée est inférieure à 10° on bloque le servomoteur à 10°
|
2023-10-07 08:28:28 +02:00
|
|
|
|
angle = 10
|
2023-10-08 11:58:29 +02:00
|
|
|
|
elif angle > 170 : # Si la valeur entrée est supérieure à 170° on bloque le servomoteur à 170°
|
2023-10-07 08:28:28 +02:00
|
|
|
|
angle = 170
|
2023-10-08 11:58:29 +02:00
|
|
|
|
servo.write(angle) # Ecrit cette valeur sur la broche du servomoteur
|
2023-10-07 08:28:28 +02:00
|
|
|
|
except :
|
|
|
|
|
carte.exit()
|