Arduino + Tamiya+TSOP, Робот — пока начало. Часть 1


Робот в начале разработки
Задумка (?)
— работа в режиме робота по транспортировке деталей
из одного места в другое по линии(очень толстой магистрали)

На данный пока только управляемая по ИК машинка
на основе
-Craftduino+
-tamiya
-TSOP31236
На данный момент реализовано
управление движением по ИК
— скорость регулируется +/-
— повороты влево-вправо плавно регулируютcя уменьшением скорости вращения одного из двигателей
— есть вращение на месте в обе стороны
Выглядит на данный момент так





Для работы с ИК использовал библиотеку IRremote. Поддерживаемые протоколы: NEC, Sony SIRC, Philips RC5, Philips RC6.
Пульт использовал Marmitek для Умного дома X10


Назначение клавиш:
↑ – движение вперед;
↓ – движение назад;
← – поворот влево;
→ – поворот вправо;
— CH – увеличение скорости при движении вперед-назад;
CH+ – уменьшение скорости при движении вперед-назад;
-VOL – круговое движение на месте влево;
VOL+ – круговое движение на месте вправо;
0 – остановка робота.

Прием кодов — по прерыванию 0
Для начала определяем коды клавиш, а затем им приписываем действия
Скетч для приема и обработки кодов + проверка выбора кодов

// подключение библиотеки
#include <IRremote.h>
//вход ИК приемника
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long ir_dt, old_ir;
long ir_kod;
unsigned long ir_time1, ir_time2;
// коды клавиш ИК пульта (marmitek)
#define FORWARD 1936
#define BACK  3984
#define SPEED_UP 144       //ch+
#define SPEED_DOWN 2192    //ch-
#define LEFT 3472
#define RIGHT 1424
#define CIRCLE_LEFT 3216   //vol+
#define CIRCLE_RIGHT 1168  //vol-
#define STOP 2320          //0


void setup()
 {
  // последовательный порт
  Serial.begin(9600);
  // включить приемник
  irrecv.enableIRIn();
  // прерывания для ИК
  ir_time1=0;ir_time2=0;
  attachInterrupt(0, get_ir_kod, FALLING);
 }

void loop()
 {
 // обработка кода нажатия
 if(ir_kod>0)
   {
   Serial.println(ir_kod);
   ir_go(ir_kod);
   ir_kod=0;
   }

 }

// получить код переданный с ИК пульта
void get_ir_kod()
 {
 detachInterrupt(0);    // отключить прерывание 0
 if (irrecv.decode(&results))
  {
  if (results.value > 0 && results.value < 0xFFFFFFFF)
    {
    ir_dt = results.value;
    ir_time2=millis();
    if (ir_time2-ir_time1>1000)
      {ir_kod = ir_dt;ir_time1=ir_time2;}
    else
      ir_kod = 0;
    }
    irrecv.resume();
  }
  attachInterrupt(0, get_ir_kod, CHANGE);
 }
void ir_go(long kod)
 {
   switch(kod)
     {
     case FORWARD : // направление вперед
        Serial.println("forward");
        break;
     case BACK :    // направление назад
        Serial.println("back");
        break;
      case SPEED_UP : // скорость++
        Serial.print("speed++");
        break;
      case SPEED_DOWN :  // скорость--
        Serial.println("speed--");
        break;
      case LEFT : // влево
        Serial.println("left");
        break;
     case RIGHT : // вправо
        Serial.println("right");
       break;
     case CIRCLE_RIGHT : // кружение вправо
        Serial.println("circle_right");
        break;
     case CIRCLE_LEFT : // кружение влево
        Serial.println("circle_left");
        break;
     case STOP : // стоп
        Serial.println("stop");
        break;
     default:
        break;
     }

 }

Продолжение — Часть 2. Шасси на основе гусениц и редуктора Tamiya


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

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
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение