Ceci est une ancienne révision du document !
Vert la science est une association de vulgarisation scientifique qui se présente tous les jeudis dans des écoles primaire de la région parisienne. Lors de ces interventions nous présentons des expériences scientifiques sur un thème choisi avec les professeurs. Nous avons pour rôle de développer le panel d'expérience de l'asso. Aujourd’hui nous allons créer un petit robot mobile qui sera capable de se daplacer en évitant les mur , les trous mais aussi de suivre une ligne.
Romain Sever romain.sever@laposte.net, Mathieu Gourichon Mathieu.gourichon@mail.com, Théo Depalle theo.depalle@mail.com
Pour faire notre robot nous allons utiliser un arduino
Ainsi que quelques capteurs :
01/01/18
En premier lieu nous allons tester notre matériel et faire quelques essaies de code. On va donc essayer de contrôler un moteur avec le capteur ultrason, on branche tout d'abord le moteur à une alimentation et on le controlera grâce à un transitor (interupteur comander en tension), on branche également le capteur ultrasonore, et on code le tout pour que le moteur s'arette si un obstacle est trop pret.
Voici le code Arduino utilisée:
/*Initialisation des broches*/ const int IMPULSION = 2; Broche TRIGGER const int ECHO = 3; Broche ECHO const int MOTEUR = 5; broche moteur /* Constantes de temp */ const unsigned long TEMP_MAX = 25000UL; 25ms = ~8m à 340m/s Car le capteur peut detecter un obstacle au max à 4m /* Vitesse du son dans l'air en mm/us*/ const float VITESSE_SON = 340.0 / 1000; void setup() { /* Initialise les broches */ Serial.begin(9600); pinMode(IMPULSION, OUTPUT); pinMode(MOTEUR, OUTPUT); digitalWrite(IMPULSION, LOW); La broche TRIGGER est à 0V
pinMode(ECHO, INPUT); digitalWrite(MOTEUR, HIGH);
}
void loop() {
/* 1. Lance une mesure de distance en envoyant une impulsion 5V de 10µs sur la broche IMPULSION */ digitalWrite(IMPULSION, HIGH); delayMicroseconds(10); digitalWrite(IMPULSION, LOW); /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */ long mesure = pulseIn(ECHO, HIGH, TEMP_MAX); /* 3. Calcul la distance à partir du temps mesuré d=v*(t/2) */ float distance_mm = mesure / 2.0 * VITESSE_SON; Serial.println(distance_mm); if(distance_mm < 100 && distance_mm != 0) digitalWrite(MOTEUR, HIGH); else digitalWrite(MOTEUR, LOW); }