programme_pour_piloter_le_motor_shield_sur_arduino_rev4
Ce programme pilote le moteur au travers de liaison série F:avancer, B; reculer, L: tourner à gauche, R: tourner à droite, S: stopper. A vous de faire évoluer ce programme.
Le fichier principal main.ino
void setup() { init_moteurs(); Serial.begin(115200); Serial.println("Motor Control Ready. Enter F, B, L, R, S."); } void loop() { // Check if there is data available on the serial input if (Serial.available() > 0) { char command = Serial.read(); // Read the incoming command command = toupper(command); // Ensure command is uppercase switch (command) { case 'F': // Move forward avancer(150); Serial.println("Moving Forward"); break; case 'B': // Move backward reculer(150); Serial.println("Moving Backward"); break; case 'L': // Turn left (stop one motor, run the other) gauche(150); Serial.println("Turning Left"); break; case 'R': // Turn right (stop one motor, run the other) droite(150); Serial.println("Turning Right"); break; case 'S': // Stop all motors stopMotors(); Serial.println("Stopping Motors"); break; default: // Handle invalid commands Serial.println("Invalid Command. Use F, B, L, R, S."); break; } } }
Le fichier pour gérer le shield moteur motor1.ino
#define DIR_A 12 // Direction pin for Channel A #define PWM_A 3 // PWM pin for Channel A #define BRAKE_A 9 // Brake pin for Channel A #define DIR_B 13 // Direction pin for Channel B #define PWM_B 11 // PWM pin for Channel B #define BRAKE_B 8 // Brake pin for Channel B void init_moteurs() { pinMode(DIR_A, OUTPUT); pinMode(PWM_A, OUTPUT); pinMode(BRAKE_A, OUTPUT); pinMode(DIR_B, OUTPUT); pinMode(PWM_B, OUTPUT); pinMode(BRAKE_B, OUTPUT); } void reset_arduino() { //asm volatile("jmp 0x00"); } void lancer_balle() { //myservo.attach(SERVO_BALLE); //myservo.write(1500); //delay(200); //myservo.write(1000); //delay(700); //myservo.detach(); //force reset //reset_arduino(); } void stopMotors() { digitalWrite(BRAKE_A, HIGH); digitalWrite(BRAKE_B, HIGH); analogWrite(PWM_A, 0); analogWrite(PWM_B, 0); } void reculer(int speed) { digitalWrite(DIR_A, HIGH); digitalWrite(DIR_B, HIGH); digitalWrite(BRAKE_A, LOW); digitalWrite(BRAKE_B, LOW); analogWrite(PWM_A, speed); // Adjust speed as needed analogWrite(PWM_B, speed); } void avancer(int speed) { digitalWrite(DIR_A, LOW); digitalWrite(DIR_B, LOW); digitalWrite(BRAKE_A, LOW); digitalWrite(BRAKE_B, LOW); analogWrite(PWM_A, speed); // Adjust speed as needed analogWrite(PWM_B, speed); } void stopper() { stopMotors(); } void gauche(int speed) { digitalWrite(DIR_A, LOW); digitalWrite(DIR_B, HIGH); digitalWrite(BRAKE_A, LOW); digitalWrite(BRAKE_B, LOW); analogWrite(PWM_A, speed); // Adjust speed as needed analogWrite(PWM_B, speed); } void droite(int speed) { digitalWrite(DIR_A, HIGH); digitalWrite(DIR_B, LOW); digitalWrite(BRAKE_A, LOW); digitalWrite(BRAKE_B, LOW); analogWrite(PWM_A, speed); // Adjust speed as needed analogWrite(PWM_B, speed); } void contourner_obstacle(){ } void suivre_piste(){ }
programme_pour_piloter_le_motor_shield_sur_arduino_rev4.txt · Dernière modification : 2025/01/23 16:34 de mistert