Rolly Robot — робот из Arduino и пары сервомашинок


BoM (Bill of Materials) робота:

Arduino Mini Pro — 1 шт.
Мини-сервомашинка — 2 шт.
Держатель батареи — 1 шт.
Беспаечная макетная плата — 1 шт.
TSOP-датчик — 1шт.

Исходник:

/*

[email protected]
Rolly Robot Test Program

IR table
16752735 16720095 16736415 16769055
16748655 16716015 16732335 16764975
16756815 16724175 16740495 16773135
16754775 16722135 16738455 16771095
16750695 16718055 16734375 16767015
16746615 16713975 16730295 16762935
repeat 4294967295

*/
#include <IRLib.h>
#include <Servo.h>
#define MY_PROTOCOL NEC

IRrecv My_Receiver(11);
IRdecode My_Decoder;
int IRin;

// left servo details
int servoLeftPin = 10;
int servoLeftZero = 91;
int servoLeftDirection = 1;
int leftSpeed = 0;
Servo servoLeft;

// right servo details
int servoRightPin = 9;
int servoRightZero= 91;
int servoRightDirection = -1;
int rightSpeed = 0;
Servo servoRight;

// degree to which we move forward
int forwardness = 0;
int forwardSpeedMax = 20; //degrees from center
int forwardSpeedMin = 20; //

// degre to which we drift right
int rightness = 0;
int rightnessMax = 10;

// user event to come to a hault softly
int softStop = 0;

// refresh rate for soft commands
float updateLast = 0;
int updateDelay= 100;

void setup(){
  servoRight.attach(servoRightPin);
  servoLeft.attach(servoLeftPin);
  My_Receiver.enableIRIn();
  //debug
  Serial.begin(9600); //115200
}

void loop(){

  // start user input
  if (My_Receiver.GetResults(&My_Decoder)) {
    My_Decoder.decode();
    if(My_Decoder.decode_type==MY_PROTOCOL) {
    IRin = My_Decoder.value;
    Serial.println(IRin);
      switch(My_Decoder.value) {
        case 16752735: // increase forward
          forwardness = forwardness+1; if (forwardness > forwardSpeedMax) forwardness = forwardSpeedMax;
          softStop = 0;
          break;
        case 16720095: // decrease forward
          forwardness = forwardness-1; if (forwardness < -forwardSpeedMax) forwardness = -forwardSpeedMax;
          softStop = 0;
          break;
        case 16736415: // hard stop
          forwardness = 0;
          softStop = 0;
          break;
        case 16769055: // soft stop
          softStop = 1;
          break;

        case 16748655: // decrease rightness
          rightness = rightness -1 ;
          break;
        case 16716015: // remove rightness
          rightness = 0 ;
          break;
        case 16732335: // increaee rightness
          rightness = rightness +1 ;
          break;
      }
    }
    My_Receiver.resume();
  } // end user input

  // refresh for soft commands
  if (millis() >= updateLast + updateDelay) {
    updateLast = millis();
    if (softStop == 1) {
      if (forwardness > 0) {forwardness = forwardness -1;}
      if (forwardness < 0) {forwardness = forwardness +1;}
      if (rightness > 0) {rightness = rightness -1;}
      if (rightness < 0) {rightness = rightness +1;}
      if (forwardness ==0 && rightness==0) softStop = 0;
    }
  }

  // update servos
  leftSpeed = forwardness+rightness;
  rightSpeed = forwardness-rightness;

  servoLeft.write(servoLeftZero + leftSpeed * servoLeftDirection);
  servoRight.write(servoRightZero + rightSpeed * servoRightDirection);

}

Ссылки
Rolly Robot


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

Arduino

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

Разделы

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

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

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

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