mirror of
https://forge.apps.education.fr/blender-edutech/blender-edutech-tutoriels.git
synced 2024-01-27 09:42:33 +01:00
Test de la commande des servomoteurs
This commit is contained in:
parent
987e4c44b1
commit
6a0b6340f8
@ -6,12 +6,11 @@ import cv2
|
||||
###############################################################################
|
||||
# cam_bille-test.py :
|
||||
# @title: Détection de la bille par vision (caméra + OpenCV)
|
||||
# @project: Blender-EduTech - Tutoriel : Tutoriel 6 Labyrinthe à bille - Développement de jumeau numérique
|
||||
# @project: Blender-EduTech - Tutoriel : Tutoriel 6 : Labyrinthe à bille - Développement de jumeau numérique
|
||||
# @lang: fr
|
||||
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
|
||||
# @copyright: Copyright (C) 2023 Philippe Roy
|
||||
# @license: GNU GPL
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
###
|
||||
|
BIN
labyrinthe/6-jumeaux/test/documentation/fr0109m.pdf
Normal file
BIN
labyrinthe/6-jumeaux/test/documentation/fr0109m.pdf
Normal file
Binary file not shown.
@ -10,7 +10,6 @@
|
||||
* @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
|
||||
* @copyright: Copyright (C) 2023 Philippe Roy
|
||||
* @license: GNU GPL
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
|
29
labyrinthe/6-jumeaux/test/servo-test.py
Normal file
29
labyrinthe/6-jumeaux/test/servo-test.py
Normal file
@ -0,0 +1,29 @@
|
||||
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
|
||||
carte = pyfirmata.Arduino('COM3') # Windows
|
||||
carte = pyfirmata.Arduino('/dev/ttyACM0') # GNU/Linux
|
||||
print("Communication Carte Arduino établie")
|
||||
|
||||
servo = board.get_pin('d:9:s') # Servo sur broche D9
|
||||
|
||||
try :
|
||||
while True: # Boucle infinie
|
||||
angle = int(input("Entrer un angle entre 10 et 170):")) # Demande à l’utilisateur d’entrer la valeur de l’angle
|
||||
if angle < 10 : # Si la valeur entrée est inférieure à 10° on bloque le servo moteur à 10°
|
||||
angle = 10
|
||||
elif angle > 170 : # Si la valeur entrée est supérieur à 170° on bloque le servo moteur à 170°
|
||||
angle = 170
|
||||
servo.write(angle) # Ecrit cette valeur dans le pin du servo moteur
|
||||
except :
|
||||
carte.exit()
|
@ -1,25 +1,39 @@
|
||||
#include "servo.h"
|
||||
#include "Servo.h"
|
||||
|
||||
/******************************************************************************
|
||||
* servo-test.ino
|
||||
* @title: Programme pour la carte Arduino (2 servomoteurs)
|
||||
* @project: Blender-EduTech - Tutoriel 6 : Labyrinthe à bille - Développer le jumeau numérique du labyrinthe
|
||||
* @title: Test de pilotage d'un servomoteur
|
||||
* @project: Blender-EduTech - Tutoriel 6 : Labyrinthe à bille - Développer le jumeau numérique du labyrinthe
|
||||
* @lang: fr
|
||||
* @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
|
||||
* @copyright: Copyright (C) 2023 Philippe Roy
|
||||
* @license: GNU GPL
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
* Servo-moteurs
|
||||
******************************************************************************/
|
||||
|
||||
Servo servo;
|
||||
String servo_txt;
|
||||
String servo_txt2;
|
||||
bool servo_sens;
|
||||
int angle_ms;
|
||||
|
||||
/******************************************************************************
|
||||
* Initialisation
|
||||
******************************************************************************/
|
||||
|
||||
void setup() {
|
||||
|
||||
// Liaison série
|
||||
Serial.begin(115200);
|
||||
// Liaison série
|
||||
Serial.begin(115200);
|
||||
|
||||
// Servo-moteurs
|
||||
servo.attach(9); // Servo sur broche D9
|
||||
servo_sens = true;
|
||||
angle_ms = 1500; // Position centrale (90°, 500 -> 0° et 2500-> 180°)
|
||||
servo.writeMicroseconds(angle_ms);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
@ -27,4 +41,63 @@ void setup() {
|
||||
******************************************************************************/
|
||||
|
||||
void loop() {
|
||||
|
||||
// Affichage
|
||||
servo_txt = String(servo.read());
|
||||
servo_txt2 = String(angle_ms);
|
||||
Serial.print(servo_txt2);
|
||||
Serial.print(" -> ");
|
||||
Serial.print(servo_txt);
|
||||
Serial.println("°");
|
||||
|
||||
// Sens
|
||||
if (servo.read()==170) {
|
||||
servo_sens=false;
|
||||
}
|
||||
if (servo.read()==10) {
|
||||
servo_sens=true;
|
||||
}
|
||||
|
||||
// Mouvement
|
||||
if (servo_sens) {
|
||||
angle_ms=angle_ms+1; // Résolution à 180/2000 soit 0,09°
|
||||
//servo1.write(servo1.read()+1); // Résolution à 1°
|
||||
} else {
|
||||
angle_ms=angle_ms-1; // Résolution à 180/2000 soit 0,09°
|
||||
//servo1.write(servo1.read()-1); // Résolution à 1°
|
||||
}
|
||||
servo.writeMicroseconds(angle_ms);
|
||||
delay(10);
|
||||
|
||||
// Test des positions
|
||||
/* angle_ms =1500; */
|
||||
/* servo.writeMicroseconds(angle_ms); */
|
||||
/* servo_txt = String(servo.read()); */
|
||||
/* servo_txt2 = String(angle_ms); */
|
||||
/* Serial.print(servo_txt2); */
|
||||
/* Serial.print(" -> "); */
|
||||
/* Serial.print(servo_txt); */
|
||||
/* Serial.println("°"); */
|
||||
/* delay(1000); */
|
||||
|
||||
/* angle_ms =500; */
|
||||
/* servo.writeMicroseconds(angle_ms); */
|
||||
/* servo_txt = String(servo.read()); */
|
||||
/* servo_txt2 = String(angle_ms); */
|
||||
/* Serial.print(servo_txt2); */
|
||||
/* Serial.print(" -> "); */
|
||||
/* Serial.print(servo_txt); */
|
||||
/* Serial.println("°"); */
|
||||
/* delay(1000); */
|
||||
|
||||
/* angle_ms =2500; */
|
||||
/* servo.writeMicroseconds(angle_ms); */
|
||||
/* servo_txt = String(servo.read()); */
|
||||
/* servo_txt2 = String(angle_ms); */
|
||||
/* Serial.print(servo_txt2); */
|
||||
/* Serial.print(" -> "); */
|
||||
/* Serial.print(servo_txt); */
|
||||
/* Serial.println("°"); */
|
||||
/* delay(1000); */
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user