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


Простой шагающий робот на Arduino
И снова простой шагающий робот на базе контроллера Arduino и сервомашинок. Этот примечателен использованием в качестве ног лопаток для еды 🙂

промо-видео — Simple Walker Robot:

составные части робота:
составные части простого шагающего робота на 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.h>

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;
}

Ссылки
Simple Walker Robot

По теме
Ультразвуковой датчик измерения расстояния HC-SR04
FOBO — двуногий робот на Arduino
Arduped — двуногий робот на Arduino Nano
Двуногий шагоход
шагающий робот на Arduino
Galatea — робот-четырёхног на Arduino!


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение