torque_control/
torque_control.rs1use st3215::ST3215;
6use std::thread;
7use std::time::Duration;
8
9fn main() -> Result<(), String> {
10 let device = std::env::var("SERVO_PORT").unwrap_or_else(|_| "/dev/ttyUSB0".to_string());
12
13 println!("Connexion au port série: {}", device);
14 let controller = ST3215::new(&device)?;
15
16 let servo_id: u8 = 1;
18
19 println!("Vérification de la présence du servo {}...", servo_id);
21 if !controller.ping_servo(servo_id) {
22 return Err(format!("Servo {} non trouvé!", servo_id));
23 }
24 println!("✓ Servo {} trouvé", servo_id);
25
26 println!("\n--- Activation du torque ---");
28 controller.enable_torque(servo_id)?;
29 println!("✓ Torque activé pour le servo {}", servo_id);
30
31 thread::sleep(Duration::from_secs(2));
33
34 if let Some(position) = controller.read_position(servo_id) {
36 println!("Position actuelle: {}", position);
37 }
38
39 println!("\n--- Désactivation du torque ---");
41 controller.disable_torque(servo_id)?;
42 println!("✓ Torque désactivé pour le servo {}", servo_id);
43 println!("Le servo peut maintenant être déplacé manuellement");
44
45 thread::sleep(Duration::from_secs(3));
47
48 println!("\n--- Réactivation et déplacement ---");
50 controller.enable_torque(servo_id)?;
51 println!("✓ Torque réactivé");
52
53 let target_position = 2048;
55 let speed = 1000;
56 let acceleration = 50;
57 println!("Déplacement vers la position {}...", target_position);
58 controller.move_to(servo_id, target_position, speed, acceleration, false);
59
60 thread::sleep(Duration::from_secs(2));
62
63 if let Some(final_position) = controller.read_position(servo_id) {
65 println!("Position finale: {}", final_position);
66 }
67
68 println!("\n--- Cycle d'activation/désactivation ---");
70 for i in 1..=3 {
71 println!("Cycle {}/3", i);
72
73 println!(" Désactivation...");
74 controller.disable_torque(servo_id)?;
75 thread::sleep(Duration::from_millis(500));
76
77 println!(" Activation...");
78 controller.enable_torque(servo_id)?;
79 thread::sleep(Duration::from_millis(500));
80 }
81
82 println!("\n--- Fin du programme ---");
84 controller.disable_torque(servo_id)?;
85 println!("✓ Torque désactivé");
86
87 Ok(())
88}