ARDUINO MASTER
ROB-75761« ARDUINO MASTER»
Здравствуйте! Меня зовут Рагунов Макар, мне 13 лет.
МАОУ ДО «Технополис» (г. Сургут, ХМАО-Югра)
Вашему вниманию представляю робота на олимпиаду по ARDUINO.
Робот состоит из:
- Плата Arduino UNO – 1 шт.
- Плата расширитель с драйвером для моторов – 1 шт.
- Ультразвуковой датчик расстояния – 1 шт.
- Сервопривод – 1 шт.
- Датчик черного/белого – 1 шт.
- Мотор – 4 шт.
- Колесо - 4 шт.
- Аккумулятор 8v – 1 шт.
- Поворотное колесо – 1 шт.
- Платформа – 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);
}
После программирования, робот движется прямо и при появлении на его пути белой фишки, хватает её и везёт в круг, делает поворот и движется так же прямо до следующей фишки. При обнаружении чёрной фишки, не трогает её, а возвращается обратно в круг. Такой алгоритм робот выполняет пока не выполнить задание.
Данный проект был создан, исходя из имеющихся возможностей.
Спасибо за внимание!
files
Add at 22.11.2024
Add at 22.11.2024