Спутник 1

ROB-75081

Мой робот, следующий по черной линии,  был создан с целью автоматизации движения по черной линии. Его специальные датчики и алгоритмы позволяют ему точно следовать за линией, не сбиваясь с пути. 

Этот проект был для меня настоящим вызовом, поскольку я решал сложную задачу - создание гоночного робота с использованием платформы Arduino. Начав с исследования различных датчиков, моторов и других компонентов, я разработал план сборки и программирования.
Сначала я выбрал подходящую платформу для робота и смонтировал моторы, колеса и датчики на шасси. Затем я подключил все компоненты к Arduino и начал программировать его поведение. Я использовал язык программирования C++ и библиотеки для работы с датчиками и моторами.

После тщательной отладки и тестирования робот был готов к гонкам. Я провел несколько испытаний, чтобы улучшить его скорость и управляемость. В итоге мой гоночный робот на Arduino стал настоящим хитом на соревнованиях робототехники.

Этот проект не только позволил мне усовершенствовать свои навыки в сборке и программировании роботов, но и принес мне массу удовольствия и новых знаний.

int MotorLS = 5; 

int MotorLF = 4;  

int MotorRF = 7; 

int MotorRS = 6; 

const int LSI = A0; 

const int LSII = A1; 

const int LSIII = A2; 

const int LSIV = A3;  

int SL; 

int SM; 

int SR; 

 int SK; 

void setup (){

pinMode (MotorRS, OUTPUT); 

pinMode (MotorRF, OUTPUT); 

pinMode (MotorLS, OUTPUT); 

pinMode (MotorLF, OUTPUT); 

pinMode (LSI, INPUT); 

pinMode (LSII, INPUT); 

pinMode (LSIII, INPUT); 

pinMode (LSIV, INPUT); }

void forward (int a, int sa) {

digitalWrite (MotorRF, HIGH);

analogWrite (MotorRS, sa);

digitalWrite (MotorLF, HIGH);

analogWrite (MotorLS, sa);

delay (a);}

void right (int b, int sb) {

digitalWrite (MotorRF, LOW);

digitalWrite (MotorLF, HIGH);

analogWrite (MotorLS, sb);

delay (b);}

void left (int k, int sk){

digitalWrite (MotorRF, HIGH);

analogWrite (MotorRS, sk);

digitalWrite (MotorLF, LOW);

delay (k);}

void turnR (int d, int sd){

digitalWrite (MotorRF, LOW);

analogWrite (MotorRS, sd);

digitalWrite (MotorLF, HIGH);

analogWrite (MotorLS, sd);

delay (d);}

void turnL (int e, int se)  {

digitalWrite (MotorRF, HIGH);

analogWrite (MotorRS, se);

digitalWrite (MotorLF, LOW);

analogWrite (MotorLS, se);

delay (e);}

void back (int g, int sg) // НАЗАД{

digitalWrite (MotorRF, LOW);

analogWrite (MotorRS, sg);

digitalWrite (MotorLF, LOW);

analogWrite (MotorLS, sg);

delay (g);}

void stopp (int f) // СТОП{ 

digitalWrite (MotorRF, LOW);

digitalWrite (MotorLF, LOW);

delay (f);}

void loop (){   

SL = digitalRead (LSI); 

SM = digitalRead (LSII); 

SR = digitalRead (LSIII); 

SK = digitalRead (LSIV); 

if (SL == LOW & SM == LOW & SR == LOW & SK == LOW ) 

{forward (30, 180); 

else if (SL == LOW & SM == HIGH & SR == LOW & SK == LOW) 

{left (10, 100); 

else if (SL == HIGH & SM == HIGH & SR == LOW & SK == LOW) 

{right (20, 120); // поворот ВПРАВО (время, скорость)

}

else if (SL == HIGH & SM == LOW & SR == LOW & SK == LOW)

 {turnR (30, 150); }

else if (SL == LOW & SM == LOW & SR == HIGH & SK == LOW) 

{

turnL (10, 100); // РАЗВОРОТ ВЛЕВО (время, скорость)

}

else if (SL == LOW & SM == LOW & SR == HIGH & SK == HIGH) 

{

left (20, 120); // поворот ВЛЕВО (время, скорость)

}

else if (SL == LOW & SM == LOW & SR == LOW & SK == HIGH) {

  left (30, 150); // поворот ВЛЕВО (время, скорость)

}else if (SL == HIGH & SM == HIGH & SR == HIGH & SK == HIGH) 

stopp (50); 

}