ROBOT BASIQUE AVEC CHASSIS ZUMO DE POLOLU
son programme 1.0
#include <Servo.h> //includes the servo library
int servopin = 8;
int sensorpin = 0;
int dist = 0;
int leftdist = 0;
int rightdist = 0;
int object = 500; //distance at which the robot should look for another route
Servo myservo; // déclare une variable de type Servo appelée myservo
Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo5;
void setup ()
{
myservo.attach(4); // associe le servomoteur à la broche 9
myservo.writeMicroseconds(1410); // positionne le servomoteur au milieu
myservo1.attach(2); // associe le servomoteur à la broche 9
myservo1.writeMicroseconds(1240); // positionne le servomoteur au milieu
myservo2.attach(3); // associe le servomoteur à la broche 9
myservo2.writeMicroseconds(1520); // positionne le se
myservo3.attach(5); // associe le servomoteur à la broche 9
myservo3.writeMicroseconds(1280); // positionne le se
myservo5.attach(servopin);
myservo5.write(90);
delay(700);
}
void loop()
{
dist = analogRead(sensorpin); //reads the sensor
if(dist < object) { //if distance is less than 550
forward(); //then move forward
}
if(dist >= object) { //if distance is greater than or equal to 550
findroute();
}
}
void forward() { // use combination which works for you
myservo.attach(4); // associe le servomoteur à la broche 9
myservo.writeMicroseconds(1300); // positionne le servomoteur au milieu
myservo1.attach(2); // associe le servomoteur à la broche 9
myservo1.writeMicroseconds(1980); // positionne le servomoteur au milieu
myservo2.attach(3); // associe le servomoteur à la broche 9
myservo2.writeMicroseconds(1620); // positionne le se
myservo3.attach(5); // associe le servomoteur à la broche 9
myservo3.writeMicroseconds(1061); // positionne le se
return;
}
void findroute() {
halt(); // stop
backward(); //go backwards
lookleft(); //go to subroutine lookleft
lookright(); //go to subroutine lookright
if ( leftdist < rightdist )
{
turnleft();
}
else
{
turnright ();
}
}
void backward() {
myservo.attach(4); // associe le servomoteur à la broche 9
myservo.writeMicroseconds(1515); // positionne le servomoteur au milieu
myservo1.attach(2); // associe le servomoteur à la broche 9
myservo1.writeMicroseconds(500); // positionne le servomoteur au milieu
myservo2.attach(3); // associe le servomoteur à la broche 9
myservo2.writeMicroseconds(1420); // positionne le se
myservo3.attach(5); // associe le servomoteur à la broche 9
myservo3.writeMicroseconds(1479); // positionne le se
delay(800);
halt();
return;
}
void halt () {
myservo.attach(4); // associe le servomoteur à la broche 9
myservo.writeMicroseconds(1410); // positionne le servomoteur au milieu
myservo1.attach(2); // associe le servomoteur à la broche 9
myservo1.writeMicroseconds(1240); // positionne le servomoteur au milieu
myservo2.attach(3); // associe le servomoteur à la broche 9
myservo2.writeMicroseconds(1520); // positionne le se
myservo3.attach(5); // associe le servomoteur à la broche 9
myservo3.writeMicroseconds(1280); // positionne le se
delay(1500); //wait after stopping
return;
}
void lookleft() {
myservo5.write(140);
delay(700); //wait for the servo to get there
leftdist = analogRead(sensorpin);
myservo5.write(90);
delay(700); //wait for the servo to get there
return;
}
void lookright () {
myservo5.write(40);
delay(700); //wait for the servo to get there
rightdist = analogRead(sensorpin);
myservo5.write(90);
delay(700); //wait for the servo to get there
return;
}
void turnleft () {
myservo.attach(4); // associe le servomoteur à la broche 9
myservo.writeMicroseconds(1100); // positionne le servomoteur au milieu
myservo1.attach(2); // associe le servomoteur à la broche 9
myservo1.writeMicroseconds(500); // positionne le servomoteur au milieu
myservo2.attach(3); // associe le servomoteur à la broche 9
myservo2.writeMicroseconds(1420); // positionne le se
myservo3.attach(5); // associe le servomoteur à la broche 9
myservo3.writeMicroseconds(1061); // positionne le se
delay(1000); // wait for the robot to make the turn
halt();
return;
}
void turnright () {
myservo.attach(4); // associe le servomoteur à la broche 9
myservo.writeMicroseconds(1515); // positionne le servomoteur au milieu
myservo1.attach(2); // associe le servomoteur à la broche 9
myservo1.writeMicroseconds(1980); // positionne le servomoteur au milieu
myservo2.attach(3); // associe le servomoteur à la broche 9
myservo2.writeMicroseconds(1620); // positionne le se
myservo3.attach(5); // associe le servomoteur à la broche 9
myservo3.writeMicroseconds(1479); // positionne le se
delay(1000); // wait for the robot to make the turn
halt();
return;
}
Ce commentaire a été supprimé par un administrateur du blog.
RépondreSupprimerCe commentaire a été supprimé par un administrateur du blog.
RépondreSupprimer