Форсаж

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);

}