J'ai ce code par exemple :
//Standard PWM DC control int E1 = 5; //M1 Speed Control int E2 = 6; //M2 Speed Control int M1 = 4; //M1 Direction Control int M2 = 7; //M1 Direction Control int front_sensor = 0; // pin analog 0 int speed = 200; // mootor functions void move_forward() { analogWrite (E2, speed); digitalWrite(M2,LOW); analogWrite (E1, speed); digitalWrite(M1,HIGH); } void move_backward() { analogWrite (E2, speed); digitalWrite(M2,HIGH); analogWrite (E1, speed); digitalWrite(M1,LOW); } void turn_right () { analogWrite (E2, 0); digitalWrite(M2,LOW); analogWrite (E1, speed); digitalWrite(M1,HIGH); } void turn_left () { analogWrite (E2, speed); digitalWrite(M2,LOW); analogWrite (E1, 0); digitalWrite(M1,HIGH); } void rotate_right () { analogWrite (E2, speed); digitalWrite(M2,HIGH); analogWrite (E1, speed); digitalWrite(M1,HIGH); } void rotate_left () { analogWrite (E2, speed); digitalWrite(M2,LOW); analogWrite (E1, speed); digitalWrite(M1,LOW); } void stop_motor () { analogWrite (E1, 0); analogWrite (E2, 0); } // sensor functions void handle_obstacle (int sensor) { int i; int avg = 0; for (i = 0; i < 5; i++) avg += analogRead(sensor); avg = avg / 5; if (avg < 180) { move_forward(); } else if (avg > 350) { stop_motor(); move_backward(); delay(300); rotate_left(); delay (1500); } else { turn_right (); delay(900); } } void setup(void) { int i; for(i=6;i<=9;i++) pinMode(i, OUTPUT); Serial.begin(19200); //Set Baud Rate move_forward(); } void loop(void) { //Serial.println(analogRead(front_sensor)); handle_obstacle (front_sensor); move_forward(); delay(50); }
Le robot a vraiment du mal, en gros l'algo est simple, j'avance, si je vois un obstacle 5 fois de suite sur ma loop, je tourne a droite. Parfois le robot réagit très bien, parfois très mal. Parfois il semble tourner sur lui même constemment alors qu'il n'y a clairement aucun obstacle.
Il doit me manquer des billes héhé. J'ai vu que certain utilisait la fonction map sur le forum :
http://arduino.cc/fr/Main/Map
De plus beaucoup utilise la fonction delay, pourquoi ?
Il y aurai des pistes a me donner pour avoir un truc robuste ? J'ai trouvé ceci, je vais tester cela ce soir, mais en gros ma facon de détecter les obstacles est trop simpliste, faut-il utiliser une moyenne de valeur sur une fourchette de temmps ? un système d'étalonnage ? etc..
Arthur.
EDIT : Bon et bien j'ai rien dis je n'avais même pas vu que les tutoriels contenaient un exemple plus poussé avec du code a savoir le roby