Pierwszy projekt jeżdżącego robota najłatwiej chyba zrobić z tym czujnikiem. Jego wadą to wąskie pole widzenia przy wykrywaniu przeszkody. Dlatego chyba najczęściej na zdjęciach widać roboty z przynajmniej 3 czujnikami boczne czujniki można zamontować np pod kontem 45* względem centralnego. Poniżej kod na 4 silniki. Po wykryciu przeszkody system losuje liczby "0" - obracamy się w lewo i "1" - obracamy się w prawo, w innym przypadku jedziemy prosto przed siebie.
kod
------------------------------
#include
const int IR = 13;
long RandNumber;
AF_DCMotor motor1(1, MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(3, MOTOR12_64KHZ);
AF_DCMotor motor4(4, MOTOR12_64KHZ);
void setup()
{
pinMode(IR,INPUT);
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
}
void loop(){
if(digitalRead(IR) == LOW)
{RandNumber = random(0,2);}
if(RandNumber == 0)
{stopL();}
else if(RandNumber == 1)
{stopR();}
else
{naprzod();}
}
void stopL(){
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
delay(1000);
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
delay(500);
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
delay(650);
}
void stopR(){
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
delay(1000);
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
delay(500);
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
delay(650);
}
void naprzod(){
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
}
Brak komentarzy:
Prześlij komentarz