fork_mon_premier_robot/server/src/commande_auto.ino

221 lines
5.2 KiB
C++

#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);
}