Сайт о роботах

Простой шагающий робот на Arduino » Роботы на платформе Ардуино


Очередной простой шагающий робот на базе контроллера Arduino и сервомашинок. Данный робот примечателен тем, что в нем в качестве ног используются лопатки для еды.
Навигация
Самые интересные статьи
Нано-роботы
Нано-роботы
В ближайшие несколько десятилетий в производственной, биологической и медицинской сферах должна произойти революция. Причем довольно необычная, по современным...

Обратите внимание Будьте в курсе событий.

Простой шагающий робот на Arduino

17.10.2013, 13:35
Источник: www.pobot.ru

Очередной простой шагающий робот на базе контроллера Arduino и сервомашинок. Данный робот примечателен тем, что в нем в качестве ног используются лопатки для еды.





Робот состоит из этих деталей:


Код:

/* Simple Walker Robot by Randy Sarafan This code is for controlling a simple quadruped robot and having it respond to obstacles that approach. For more information visit the project page: http://www.instructables.com/id/Simple-Walker-Robot/ This code is based on both the Arduino Sweep example by BARRAGAN and the Arduino Ping example by Tome Igoe */ #include Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created Servo myservo1; // create a second servo object to control a servo int pos = 80; // variable to store the servo position for rear legs //changing this value changes the default position of the rear legs int pos1 = 70; // variable to store the servo position for front legs //changing this value changes the default position of the front legs //determines the rate at which the legs move int rate = 1000; // this constant won't change. It's the pin number // of the sensor's output: const int pingPin = 7; void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object myservo1.attach(10); // attaches the servo on pin 10 to the servo object myservo.write(pos); // tell servo to go to position in variable 'pos' - sets center axis myservo1.write(pos1); // tell servo to go to position in variable 'pos' - sets center axis delay(5000); } void loop() { long duration, inches, cm; // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); // The same pin is used to read the signal from the PING))): a HIGH // pulse whose duration is the time (in microseconds) from the sending // of the ping to the reception of its echo off of an object. pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // convert the time into a distance inches = microsecondsToInches(duration); //if something is closer than a foot, back away if(inches <= 12){ backward(); } //if nothing is closer than a foot, go forwards if(inches > 12){ forward(); } } //function for going forwards void forward(){ myservo.write(pos + 20); // tell servo to go to position in variable 'pos' myservo1.write(pos1 - 20); // tell servo to go to position in variable 'pos' delay(rate); myservo.write(pos - 20); // tell servo to go to position in variable 'pos' myservo1.write(pos1 + 20); // tell servo to go to position in variable 'pos' delay(rate); } //function for backing away void backward(){ myservo.write(pos + 25); // tell servo to go to position in variable 'pos' myservo1.write(pos1 + 50); // tell servo to go to position in variable 'pos' delay(rate); myservo.write(pos - 25); // tell servo to go to position in variable 'pos' myservo1.write(pos1 - 30); // tell servo to go to position in variable 'pos' delay(rate); } long microsecondsToInches(long microseconds) { // According to Parallax's datasheet for the PING))), there are // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per // second). This gives the distance travelled by the ping, outbound // and return, so we divide by 2 to get the distance of the obstacle. // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf return microseconds / 74 / 2;


Робот Qbo
  • Знакомьтесь: Qbo – социальный робот, изготовленный фирмой TheCorpora. ...
  • НАЗАД

    Болтливый робот-пылесос Cocorobo
  • Фирма «Sharp» выпустила две модели роботов-пылесосов, названных Cocorobo: RX-V80-S и RX-V100-W. ...
  • ВПЕРЁД