czwartek, 3 kwietnia 2014

Czujnik zbliżeniowy na podczerwień E18-D80NK

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