Code Robot
Code Robot
int STBY = 10; // standby Pin (si HIGH alors on peut faire tourner
les moteurs, si LOW, les moteurs s'arrêtent)
//Motor A
int PWMA = 5; //Pin qui contrôle la vitesse du moteur A (nombre
entre 0 et 255 donc on doit le mettre sur un port PWM)
// AIN1 et AIN2 sont les pins de sens de rotation du moteur A
// Le moteur A tourne dans le sens horaire si le pin AIN1 est LOW et
le pin AIN2 est HIGH
// Inversement, si AIN1 est HIGH et AIN2 est LOW, il tourne dans le
sens antihoraire
// (si les deux sont LOW ou les deux sont HIGH, il ne tourne pas)
int AIN1 = 9; //Sens de rotation
int AIN2 = 8; //Sens
//Motor B
int PWMB = 6; //Pin qui contrôle la vitesse du moteur B
// Pins de sens de rotation du moteur B
int BIN1 = 11; //Sens
int BIN2 = 12; //Sens
long randNumber;
/* Capteur Ultrasons */
// Initialise les broches pour le capteur à ultrasons
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit etre LOW
au repos
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
pinMode(ECHO_PIN, INPUT);
/* Moteurs */
// On définit tous les ports comme sorties pour piloter les
moteurs
pinMode(STBY, OUTPUT);
// Commandes Moteur A
pinMode(PWMA, OUTPUT);
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
// Commandes Moteur B
pinMode(PWMB, OUTPUT);
pinMode(BIN1, OUTPUT);
pinMode(BIN2, OUTPUT);
void loop() {
move(1, 100, 1); //motor 1, full speed, left
move(0, 100, 1); //motor 2, full speed, left
/* 1. Lance une mesure de distance en envoyant une impulsion HIGH
de 10 microsec sur la broche TRIGGER */
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
/* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et
son echo (s'il existe) */
long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);
/* 3. Calcule la distance à partir du temps mesuré */
float distance_mm = measure / 2.0 * SOUND_SPEED;
digitalWrite(LED_PIN, LOW);
}
// // Affiche les résultats en m
// Serial.print(F("Distance: "));
// Serial.print(distance_mm / 1000.0, 2);
// Serial.println(F("m)"));
/* Délai d'attente pour éviter d'afficher trop de résultats
à la seconde */
delay(200);
// DEMARRAGE
digitalWrite(STBY, HIGH); //On met ce Pin sur HIGH avant de
démarrer les moteurs
// SENS DE ROTATION
// Sens Horaire
// Le moteur A tourne dans le sens horaire si le pin AIN1 est LOW
et le pin AIN2 est HIGH (si les deux sont LOW ou les deux sont HIGH,
il ne tourne pas)
boolean inPin1 = LOW;
boolean inPin2 = HIGH;
// Sens Anti-Horaire
if (direction == 1) { // Si on change la direction dans le sens
antihoraire
inPin1 = HIGH;
inPin2 = LOW;
}
void stop() {
//Function stop(): Appeler cette fonction dans le programme pour
stopper les moteurs
digitalWrite(STBY, LOW);
}