RobotRunawayRobot

Robotunuz duvarlara çarpıyor mu? Bu sorunu çabucak çözer. Ultrasonik bir telemetre takarak robot, engellere çok yakın olup olmadığını öğrenebilir ve çarpışmayı önlemek için dönebilir.

Gerekli Donanım

  • Arduino Robotu
  • ultrasonik telemetre
  • Ultrasonik sensörü takmak için kablo

Talimat

  1. Ultrasonik ranger'ı TK1'e bağlayın
  2. Sensörü robotun önüne sabitleyin
  3. Örneği yükleyin, USB'yi çıkarın ve gücü açın
  4. Robotu yere koyun
  5. Robot, önündeki engellerden kaçınarak hareket edecek
  6. Algılama aralığını değiştirmek isterseniz, aşağıdaki kodda @@ satırını bulun (getDistance () <20) **, 20 burada 20 cm anlamına gelir; diğer hassasiyetleri denemek için bunu başka bir değere değiştirin.
  7. Robot hızını da değiştirebilir, bunun nasıl yapılacağına dair bir ipucu için motorWrite () öğesine bakabilirsiniz.

Denemek

Kaçak robot

Kod

/* Runaway Robot

 Play tag with your robot! With an ultrasonic
 distance sensor, it's capable of detecting and avoiding
 obstacles, never bumping into walls again!

 You'll need to attach an untrasonic range finder to M1.

 Circuit:
 * Arduino Robot
 * US range finder like Maxbotix EZ10, with analog output

 created 1 May 2013
 by X. Yang
 modified 12 May 2013
 by D. Cuartielles

 This example is in the public domain
 */


// include the robot library
#include <ArduinoRobot.h>
#include <Wire.h>

int sensorPin = M1;  // pin is used by the sensor

void setup() {
  // initialize the Robot, SD card, and display
  Serial.begin(9600);
  Robot.begin();
  Robot.beginTFT();
  Robot.beginSD();
  Robot.displayLogos();

  // draw a face on the LCD screen
  setFace(true);
}

void loop() {
  // If the robot is blocked, turn until free
  while (getDistance() < 40) { // If an obstacle is less than 20cm away
    setFace(false); //shows an unhappy face
    Robot.motorsStop(); // stop the motors
    delay(1000); // wait for a moment
    Robot.turn(90); // turn to the right and try again
    setFace(true); // happy face
  }
  // if there are no objects in the way, keep moving
  Robot.motorsWrite(255, 255);
  delay(100);
}

// return the distance in cm
float getDistance() {
  // read the value from the sensor
  int sensorValue = Robot.analogRead(sensorPin);
  //Convert the sensor input to cm.
  float distance_cm = sensorValue * 1.27;
  return distance_cm;
}

// make a happy or sad face
void setFace(bool onOff) {
  if (onOff) {
    // if true show a happy face
    Robot.background(0, 0, 255);
    Robot.setCursor(44, 60);
    Robot.stroke(0, 255, 0);
    Robot.setTextSize(4);
    Robot.print(":)");
  } else {
    // if false show an upset face
    Robot.background(255, 0, 0);
    Robot.setCursor(44, 60);
    Robot.stroke(0, 255, 0);
    Robot.setTextSize(4);
    Robot.print("X(");
  }
}
[Kodu Al]

See Also