Форсаж
ROB-75609Меня зовут Медведев Илья. Я увлекаюсь электроникой, робототехникой.
Моя платформа собрана из следующих деталей: основа, аккумулятор, электромоторы (2 шт.), колёса (2 шт.), провода, контролер «Arduino Uno», драйвер моторов L298N , датчики для определения линии (2 шт)
Моя задача была создать робота, двигающегося по чёрной линии как можно с большей скоростью.
Для разработки программы был применён алгоритм движения по чёрной линии с использованием двух датчиков освещённости: когда два датчика одновременно находятся на белом поле или на чёрном (на перекрёстке) – работают два двигателя, если же правый находится на белым, а левый на чёрном поле, то правый двигатель работает, а левый стоп и наоборот, когда левый находится на белым, а правый на чёрном, то работает левый, а правый стоп.
В результате написал следующий код:
int S_Pin1 = A4; // датчик линии первый
int S_Pin2 = A5; // датчик линии второй
int val1 = 0;
int val2 = 0;
void setup()
{
pinMode(4, OUTPUT); // направление первого мотора
pinMode(5, OUTPUT); // скорость первого мотора
pinMode(6, OUTPUT); // скорость второго мотора
pinMode(7, OUTPUT); // направление второго мотора
Serial.begin(9600);
}
void loop() {
val1 = analogRead(S_Pin1);
val2 = analogRead(S_Pin2);
Serial.print("values: "); // выводим на монитор порта данные
Serial.print(val1);
Serial.print("\t");
Serial.println(val2);
if(val1>100 && val2>100) // если оба датчика видят белое – едем вперед
{
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);}
Serial.println("forward");
if(val1 < 350) // если данные изменились подруливаем
{
digitalWrite(4, HIGH);
digitalWrite(6, LOW);
Serial.println("left");
}
if(val2 < 350) // если данные изменились подруливаем
{
digitalWrite(4, LOW);
digitalWrite(6, HIGH);
Serial.println("right");
}
delay(50);
}