#include "config.h" // Code éxécuté au démarrage (paramétrage) : void setup() { // On indique que les ports de controle des moteurs sont des sorties (output) pinMode(IN1a, OUTPUT); pinMode(IN2a, OUTPUT); pinMode(IN3a, OUTPUT); pinMode(IN4a, OUTPUT); pinMode(IN1b, OUTPUT); pinMode(IN2b, OUTPUT); pinMode(IN3b, OUTPUT); pinMode(IN4b, OUTPUT); Serial.begin(115200); // Démarrage d'une communication Série avec l'ordinateur s'il est connecté } // Code éxécuté en boucle jusqu'à l'extinction du robot void loop() { // Exemple de commande : for (int i = 0; i < 50; i++) { forward(); } int rotation_steps = convertRotToSteps(46); for (int i = 0; i < rotation_steps; i++) { left(); } } // Fonction pour convertir une longueur en cm vers un nombre de pas moteur. int convertLengthToSteps(float length) { float result = length * 512 / (4 * 3.1415); return int(result); } // fonction pour convertir une rotation en degrés vers un nombre de pas moteur int convertRotToSteps(int rotation) { int result = convertLengthToSteps(rotation * 3.1415 / 180 * 7.8); return result; } void forward() { digitalWrite(IN4a, HIGH); digitalWrite(IN3a, LOW); digitalWrite(IN2a, LOW); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, LOW); digitalWrite(IN2b, LOW); digitalWrite(IN1b, HIGH); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, HIGH); digitalWrite(IN2a, LOW); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, LOW); digitalWrite(IN2b, HIGH); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, LOW); digitalWrite(IN2a, HIGH); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, HIGH); digitalWrite(IN2b, LOW); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, LOW); digitalWrite(IN2a, LOW); digitalWrite(IN1a, HIGH); digitalWrite(IN4b, HIGH); digitalWrite(IN3b, LOW); digitalWrite(IN2b, LOW); digitalWrite(IN1b, LOW); delay(DELAY_TIME); } void backward() { digitalWrite(IN4a, LOW); digitalWrite(IN3a, LOW); digitalWrite(IN2a, LOW); digitalWrite(IN1a, HIGH); digitalWrite(IN4b, HIGH); digitalWrite(IN3b, LOW); digitalWrite(IN2b, LOW); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, LOW); digitalWrite(IN2a, HIGH); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, HIGH); digitalWrite(IN2b, LOW); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, HIGH); digitalWrite(IN2a, LOW); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, LOW); digitalWrite(IN2b, HIGH); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, HIGH); digitalWrite(IN3a, LOW); digitalWrite(IN2a, LOW); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, LOW); digitalWrite(IN2b, LOW); digitalWrite(IN1b, HIGH); delay(DELAY_TIME); } void right() { digitalWrite(IN4a, HIGH); digitalWrite(IN3a, LOW); digitalWrite(IN2a, LOW); digitalWrite(IN1a, LOW); digitalWrite(IN4b, HIGH); digitalWrite(IN3b, LOW); digitalWrite(IN2b, LOW); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, HIGH); digitalWrite(IN2a, LOW); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, HIGH); digitalWrite(IN2b, LOW); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, LOW); digitalWrite(IN2a, HIGH); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, LOW); digitalWrite(IN2b, HIGH); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, LOW); digitalWrite(IN2a, LOW); digitalWrite(IN1a, HIGH); digitalWrite(IN4b, LOW); digitalWrite(IN3b, LOW); digitalWrite(IN2b, LOW); digitalWrite(IN1b, HIGH); delay(DELAY_TIME); } void left() { digitalWrite(IN4a, LOW); digitalWrite(IN3a, LOW); digitalWrite(IN2a, LOW); digitalWrite(IN1a, HIGH); digitalWrite(IN4b, LOW); digitalWrite(IN3b, LOW); digitalWrite(IN2b, LOW); digitalWrite(IN1b, HIGH); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, LOW); digitalWrite(IN2a, HIGH); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, LOW); digitalWrite(IN2b, HIGH); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, LOW); digitalWrite(IN3a, HIGH); digitalWrite(IN2a, LOW); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, HIGH); digitalWrite(IN2b, LOW); digitalWrite(IN1b, LOW); delay(DELAY_TIME); digitalWrite(IN4a, HIGH); digitalWrite(IN3a, LOW); digitalWrite(IN2a, LOW); digitalWrite(IN1a, LOW); digitalWrite(IN4b, HIGH); digitalWrite(IN3b, LOW); digitalWrite(IN2b, LOW); digitalWrite(IN1b, LOW); delay(DELAY_TIME); } void stopMotors(void) { digitalWrite(IN4a, LOW); digitalWrite(IN3a, LOW); digitalWrite(IN2a, LOW); digitalWrite(IN1a, LOW); digitalWrite(IN4b, LOW); digitalWrite(IN3b, LOW); digitalWrite(IN2b, LOW); digitalWrite(IN1b, LOW); }