ARDUINO MASTER

ROB-70746

 « ARDUINO MASTER»

Здравствуйте! Меня зовут Рагунов Макар,  мне 13 лет.

 МАОУ ДО «Технополис» (г. Сургут, ХМАО-Югра)

Вашему вниманию представляю робота на олимпиаду по ARDUINO.

Робот состоит из:

  1. Плата Arduino UNO – 1 шт.
  2. Плата расширитель с драйвером для моторов – 1 шт.
  3. Ультразвуковой датчик расстояния – 1 шт.
  4. Сервопривод – 1 шт.
  5. Датчик черного/белого – 1 шт.
  6. Мотор – 4 шт.
  7. Колесо - 4 шт.
  8. Аккумулятор 8v – 1 шт.
  9. Поворотное колесо – 1 шт.
  10. Платформа – 2 шт.

Для того что бы робот мог проходить задание, необходимо написать код и записать его на плату Arduino UNO:

#include <Servo.h>

Servo mm; 

// PWM control pin

#define PWM1_PIN            5

#define PWM2_PIN            6

// 74HCT595N Chip pins

#define SHCP_PIN            2                               // The displacement of the clock

#define EN_PIN              7                               // Can make control

#define DATA_PIN            8                               // Serial data

#define STCP_PIN            4                               // Memory register clock          

const int Forward       = 92;                               // forward

const int Backward      = 163;                              // back

const int Turn_Left     = 149;                              // left translation

const int Turn_Right    = 106;                              // Right translation

const int Top_Left      = 20;                               // Upper left mobile

const int Bottom_Left   = 129;                              // Lower left mobile

const int Top_Right     = 72;                               // Upper right mobile

const int Bottom_Right  = 34;                               // The lower right move

const int Stop          = 0;                                // stop

const int Contrarotate  = 172;                              // Counterclockwise rotation

const int Clockwise     = 83;                               // Rotate clockwise

int sensor;

int timer;

void setup()

{

  mm.attach(9);

  pinMode(SHCP_PIN, OUTPUT);

  pinMode(EN_PIN, OUTPUT);

  pinMode(DATA_PIN, OUTPUT);

  pinMode(STCP_PIN, OUTPUT);

  pinMode(PWM1_PIN, OUTPUT);

  pinMode(PWM2_PIN, OUTPUT);

}

 

void loop()

{

   mm.write(-90);

  /* Forward */

  Motor(Forward, 250);

  delay(500);

 

  /* Stop */

  Motor(Stop, 250);

  delay(2000);

  sensor=digitalRead(10);

  if(sensor==0){

    mm.write(20);

  }

  delay(500);

  Motor(Backward,250);

  delay(700);

  Motor(Stop,250);

  mm.write(-90);

  delay(5000);

  Motor(Forward, 250);

  delay(200);

  Motor(Stop,250);

  delay(500);

  Motor(Clockwise,250);

  delay(365);

  Motor(Stop,250);

  delay(500);

 

}

 

void Motor(int Dir, int Speed)

{

  digitalWrite(EN_PIN, LOW);

  analogWrite(PWM1_PIN, Speed);

  analogWrite(PWM2_PIN, Speed);

 

  digitalWrite(STCP_PIN, LOW);

  shiftOut(DATA_PIN, SHCP_PIN, MSBFIRST, Dir);

  digitalWrite(STCP_PIN, HIGH);

}

После программирования, робот движется прямо и при появлении на его пути белой фишки, хватает её и везёт в круг, делает поворот и движется так же прямо до следующей фишки. При обнаружении чёрной фишки, не трогает её, а возвращается обратно в круг. Такой алгоритм робот выполняет пока не выполнить задание.

Данный проект был создан, исходя из имеющихся возможностей.

Спасибо за внимание!

 

 

Файлы

Добавлен 02.07.2024

Добавлен 02.07.2024