Анальный Дебошир
Профи
(869)
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); // Пауза перед следующим циклом
}
}
}
```
Расстояние до коробки – от 20 до 150 см.
Запуск робота должен осуществляться с помощью жеста.
После старта он должен измерить расстояние до коробки с
помощью ультразвукового датчика и сохранить показания в
переменной.
Далее робот должен плавно проехать заданное расстояние,
затем остановиться примерно за 10 см до коробки и подать
сигнал тревоги.
Попробуйте создать похожую программу на сайте LEGO
Mindstorm: https://makecode.mindstorms.com/#editor .