Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Написать программу для робота

Карыч Ученик (184), на голосовании 12 месяцев назад
Напишите следующую программу движения: перед роботом на неопределенном расстоянии находится коробка.
Расстояние до коробки – от 20 до 150 см.
Запуск робота должен осуществляться с помощью жеста.
После старта он должен измерить расстояние до коробки с
помощью ультразвукового датчика и сохранить показания в
переменной.
Далее робот должен плавно проехать заданное расстояние,
затем остановиться примерно за 10 см до коробки и подать
сигнал тревоги.
Попробуйте создать похожую программу на сайте LEGO
Mindstorm: https://makecode.mindstorms.com/#editor .
Голосование за лучший ответ
Анальный Дебошир Профи (867) 1 год назад
```cpp
#include <Servo.h>
#include <NewPing.h>

// Пины для ультразвукового датчика и сервопривода
#define TRIGGER_PIN 7
#define ECHO_PIN 8
#define MAX_DISTANCE 250
#define SERVO_PIN 9

// Объявляем переменные
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
Servo servo;
int distance;
int min_distance = 20;
int max_distance = 150;
int stop_distance = 10;

// Функция определения жеста с запуском робота
bool gesture_detected() {
// Здесь код для определения жеста с использованием подключенного датчика
return false;
}

void setup() {
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
servo.attach(SERVO_PIN);

Serial.begin(9600); // Инициализируем последовательное соединение
}

void loop() {
if (gesture_detected()) { // Если обнаружен жест
distance = sonar.ping_cm(); // Измеряем расстояние до коробки

// Проверяем, что расстояние находится в заданных пределах
if (distance >= min_distance && distance < max_distance) {
Serial.print("Расстояние: ");
Serial.print(distance);
Serial.println("см.");

// Рассчитываем угол для сервопривода
int angle = map(distance - stop_distance, min_distance, max_distance, 0, 180);
servo.write(angle); // Устанавливаем угол сервопривода
delay(2000);

// Остановиться и подать сигнал тревоги
servo.write(90); // Устанавливаем угол сервопривода на нейтральное положение
// Здесь код для подачи сигнала тревоги, например, использование зуммера или мигание светодиодом

delay(3000); // Пауза перед следующим циклом
}
}
}
```
КарычУченик (184) 1 год назад
Спасибо. А как это применить здесь https://makecode.mindstorms.com/#editor ?
Карыч, я писал пример но только для других роботов, можете глянуть тут http://webtalk.ru/forum/1760204 это форум там и робототехника.
Helga WolfПросветленный (40207) 1 год назад
так программы пишутся? никогда не видела. круто. не имела представления.
Helga Wolf, это копипаста от нейросети. Видно по символам форматирования (```), которые на этом сайте не поддерживаются. Но боты с бараньим упорством продолжают их включать, видимо, думая, что это - часть кода. :-)
Похожие вопросы