погите Напиши полный алгоритм составления программы для робота сумо. там фото нету ​

Nastyamil681 Nastyamil681    2   14.03.2021 19:32    0

Ответы
Gollagan Gollagan  14.03.2021 19:40

Скетч программы:

//Скетч для простого выталкивания соперника с ринга

//робот сразу после старта поворачивает на 135 градусов

//и если не находит соперника, то крутится направо

 

//подключаем «ноги»

//определяем соответствие контактов микроконтролера

//и контакам драйвера двигателей TB6612FNG

#define PWMA 3

#define AIN1 1

#define AIN2 0

#define BIN1 2

#define BIN2 7

#define PWMB 9

 

//включаем «глаза» для поиска соперника

//объявляем переменные, содержащие значения

//аналоговых портов микроконтроллера, подключаемых

//к ИК датчикам Sharp

int front_eye = A0;

int left_eye = A1;

int right_eye = A8;

 

//включем «глаза» для определения, на ринге мы находимся

//или выехали за него

//объявляем переменные, содержащие значения

//аналоговых портов, подключенных к датчикам

//QTR-1A

int left_bw = A6;

int right_bw = A11;

 

//процедура инициации портов

void setup()

{

//инициируем переменные моторов

pinMode(PWMA,OUTPUT);

pinMode(AIN1,OUTPUT);

pinMode(AIN2,OUTPUT);

pinMode(PWMB,OUTPUT);

pinMode(BIN1,OUTPUT);

pinMode(BIN2,OUTPUT);

 

//ждем 5 секунд

delay(5000);

// делаем повопрот на 135 градусов

//левый мотор по направлению движения робота

//(против часовой стрелки)

digitalWrite(AIN1, LOW);

digitalWrite(AIN2, HIGH);

analogWrite(PWMA, 255);

//Правый мотор против направления движения робота

//(против часовой стрелки)

digitalWrite(BIN1, LOW);

digitalWrite(BIN2, HIGH);

analogWrite(PWMB, 255);

delay(100); // длительность задержки определяет

//угол поворота робота

//и подбирается экспериментально в зависимости

//от веса робота, моторов и колес

//останавливаем моторы

digitalWrite(AIN1,HIGH);

digitalWrite(AIN2,HIGH);

digitalWrite(PWMA,LOW);

digitalWrite(BIN1,HIGH);

digitalWrite(BIN2,HIGH);

digitalWrite(PWMB,LOW);

delay(10);

 

}

 

void loop()

{

//проверяем наличие препятствия фронтальным датчиком

//на расстоянии ближе 40 см

//(значение analogRead() — 333 по таблице)

if(analogRead(front_eye) > 333){

//левый мотор по направлению движения робота

//(против часовой стрелки)

digitalWrite(AIN1, LOW);

digitalWrite(AIN2, HIGH);

analogWrite(PWMA, 255);

//Правый мотор по направления движения робота

//(по часовой стрелке)

digitalWrite(BIN1, HIGH);

digitalWrite(BIN2, LOW);

analogWrite(PWMB, 255);

delay(100); // длительность задержки 0.1 секунда

}

else if(analogRead(left_eye) > 333){// если соперник

//не найден спереди то проверяем слева

//если соперник слева найден поворачиваем налево

//на 90 градусов

//левый мотор против направлению движения

//робота (по часовой стрелки)

digitalWrite(AIN1, HIGH);

digitalWrite(AIN2, LOW);

analogWrite(PWMA, 255);

//Правый мотор по направлению движения

//робота (по часовой стрелки)

digitalWrite(BIN1, HIGH);

digitalWrite(BIN2, LOW);

analogWrite(PWMB, 255);

delay(60); // длительность задержки

//определяет угол поворота робота

//и подбирается экспериментально в

//зависимости от веса робота, моторов и колес

//левый мотор по направлению движения робо//(против часовой стрелки)

digitalWrite(AIN1, LOW);

digitalWrite(AIN2, HIGH);

analogWrite(PWMA, 255);

//Правый мотор против направления движения робота

//(против часовой стрелки)

digitalWrite(BIN1, LOW);

digitalWrite(BIN2, HIGH);

analogWrite(PWMB, 255);  

delay(130); // длительность задержки определяет

//угол поворота робота  

//и подбирается экспериментально в зависимости

//от веса робота, моторов и колес

//конец цикла loop — идем на начало цикла и проверяем расстояние спереди  

Все операторы в данном скетче нами уже изучались, поэтому трудностей в его понимании, надеюсь, не возникнет.

Объяснение:

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика