Есть ответ 👍

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

294
488
Посмотреть ответы 2

Ответы на вопрос:

keksukYT
4,8(100 оценок)

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

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

//робот сразу после старта поворачивает на 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 — идем на начало цикла и проверяем расстояние спереди  

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

Объяснение:


Тут все достаточно просто. вычитать 4 из 2 смысла нет: получим -2 и что с ним дальше делать? возведя -2 в квадрат, получим 4, но зачем 4 получать за две команды, когда можно сразу возвести исходную двойку в квадрат? а дальнейшее вычитание даст -6, квадрат -6 это 36, что никак не напоминает 64. поэтому первая команда - это "возведи в квадрат" и мы получим 4. из 4 вычитать 4 смыла никакого: получим ноль и дальше что? в квадрат возводить его смысла нет, вычитать еще 4 - будет -4 - и зачем оно нам, когда у нас 4 и так есть? так что остается опять только "возведи в квадрат". получаем 16 и это была вторая команда. вот 16 в квадрат возводить уж точно смысла нет: зачем нам 256, когда идем к 64? так что теперь - только "вычти 4". получим 12. с 12 такое же рассуждение, 144 - это много. опять "вычти 4" и получили 8. отлично, последняя команда "возведи в квадрат" и мы получили 64! ответ: 11221

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS