Outils pour utilisateurs

Outils du site


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.

motor1.zip

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