Un petit projet simple de robot

Projet réalisé pour mon beau-fils pour son tpe de terminale.

Durée: 3 jours

voici le schéma électronique de la réalisation.
Les commandes à droite, son reliées directement à la carte arduino uno R3 via les sorties digitales 4,5,6,7
Le switch est relié à la carte arduino uno R3 via la sortie digitale 3

La réalisation mécanique suit.

amitié à tous.
Olivier

les photos de la réalisation.

Le programme et les explications sur le fonctionnement suivront.

Amitié
Olivier

enfin le programme, comme vous le voyez c'est simple, le robot avance, si le switch est actionné par un obstacle, il recule, il fait un quart de tour à droite et il repart.

le programme:

int m1 = 4;
int m2 = 5;
int m3 = 6;
int m4 = 7;
int led = 13;
int obstacle = 3;

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(m3, OUTPUT);
pinMode(m4, OUTPUT);
pinMode(led, OUTPUT);
pinMode(obstacle,INPUT);

digitalWrite(m1, HIGH); //moteur gauche stop
digitalWrite(m2, HIGH); //moteur gauche en position avant
digitalWrite(m3, HIGH); //moteur droit stop
digitalWrite(m4, HIGH); //moteur droit en position avant

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
// Phase de test des moteurs
delay(2000);
//Mise en route des deux moteurs
digitalWrite(m2, HIGH); //moteur gauche en position avant
digitalWrite(m3, HIGH); //moteur droit en position avant
digitalWrite(m1, LOW); //moteur gauche marche
digitalWrite(m4, LOW); //moteur droit marche

}

// the loop routine runs over and over again forever:
void loop() {

//lecture capteur
int val = digitalRead(obstacle);
if (val > 0)
{
digitalWrite(m1, HIGH); //moteur gauche stop
digitalWrite(m4, HIGH); //moteur droit stop
digitalWrite(m2, LOW); //moteur gauche en position arrière
digitalWrite(m3, LOW); //moteur droit en position arrière
digitalWrite(m1, LOW); //moteur gauche marche
digitalWrite(m4, LOW); //moteur droit marche
delay(5000);
digitalWrite(m1, HIGH); //moteur gauche stop
digitalWrite(m4, HIGH); //moteur droit stop
digitalWrite(m2, HIGH); //moteur gauche en position avant
digitalWrite(m3, HIGH); //moteur droit en position avant
digitalWrite(m1, LOW); //moteur gauche marche
digitalWrite(m4, HIGH); //moteur droit stop
delay(23500);
digitalWrite(m1, HIGH); //moteur gauche stop
digitalWrite(m4, HIGH); //moteur droit stop
digitalWrite(m2, HIGH); //moteur gauche en position avant
digitalWrite(m3, HIGH); //moteur droit en position avant
digitalWrite(m1, LOW); //moteur gauche marche
digitalWrite(m4, LOW); //moteur droit marche
}

}

amitié à tous
Olivier

Précision importante,

Le projet, la programmation, la logique de fonctionnement, le choix des composants sont l'oeuvre de Benoît.

Je ne suis la que pour la réalisation pratique pour des raisons d'emploie du temps !!!!

Amitié à tous
Olivier

petite modification du programme, les roues gauches et droite tournent en sens inverse pour accélérer la rotation du robot.

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int m1 = 4;
int m2 = 5;
int m3 = 6;
int m4 = 7;
int led = 13;
int obstacle = 3;

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(m3, OUTPUT);
pinMode(m4, OUTPUT);
pinMode(led, OUTPUT);
pinMode(obstacle,INPUT);

digitalWrite(m1, HIGH); //moteur gauche stop
digitalWrite(m2, HIGH); //moteur gauche en position avant
digitalWrite(m3, HIGH); //moteur droit stop
digitalWrite(m4, HIGH); //moteur droit en position avant

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
// Phase de test des moteurs
delay(2000);
//Mise en route des deux moteurs
digitalWrite(m2, HIGH); //moteur gauche en position avant
digitalWrite(m3, HIGH); //moteur droit en position avant
digitalWrite(m1, LOW); //moteur gauche marche
digitalWrite(m4, LOW); //moteur droit marche

}

// the loop routine runs over and over again forever:
void loop() {

//lecture capteur
int val = digitalRead(obstacle);
if (val > 0)
{
digitalWrite(m1, HIGH); //moteur gauche stop
digitalWrite(m4, HIGH); //moteur droit stop
digitalWrite(m2, LOW); //moteur gauche en position arrière
digitalWrite(m3, LOW); //moteur droit en position arrière
digitalWrite(m1, LOW); //moteur gauche marche
digitalWrite(m4, LOW); //moteur droit marche
delay(5000);
digitalWrite(m1, HIGH); //moteur gauche stop
digitalWrite(m4, HIGH); //moteur droit stop
digitalWrite(m2, HIGH); //moteur gauche en position avant
digitalWrite(m3, LOW); //moteur droit en position arrière
digitalWrite(m1, LOW); //moteur gauche marche
digitalWrite(m4, LOW); //moteur droit marche
delay(11500);
digitalWrite(m1, HIGH); //moteur gauche stop
digitalWrite(m4, HIGH); //moteur droit stop
digitalWrite(m2, HIGH); //moteur gauche en position avant
digitalWrite(m3, HIGH); //moteur droit en position avant
digitalWrite(m1, LOW); //moteur gauche marche
digitalWrite(m4, LOW); //moteur droit marche
}

}

amitié à tous
Olivier

Les codes entre les balises, merci !

désolé un souci avec mon copier/coller

Tu peux éditer en cliquant sur "modify" en haut à droite du message et rajouter les balises avec le bouton #

cette fois ci c'est fait.

Amitié
Olivier

Merci.