Сделать в ардуино код + фото
С помощью ультразвукового датчика измерить расстояние и если это
расстояние будет больше 50 см. светодиод будет гореть при нажатой кнопке, в
случае если кнопка не нажата светодиод должен быть отключен и если расстояние
меньше 50см, светодиод не должен загораться, при условии параллельного
выполнения 1-ого задания (то есть он при включении должен моргать)
Ответы
const int trigPin = 9; // Пин для подачи импульса на ультразвуковой датчик
const int echoPin = 10; // Пин для получения отраженного сигнала от ультразвукового датчика
const int ledPin = 11; // Пин для светодиода
const int buttonPin = 12; // Пин для кнопки
long duration; // Длительность звукового импульса
int distance; // Расстояние до препятствия в сантиметрах
bool buttonState; // Состояние кнопки
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Включаем внутренний pull-up резистор для кнопки
}
void loop() {
// Измеряем расстояние
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// Проверяем состояние кнопки
buttonState = !digitalRead(buttonPin); // Инвертируем состояние, так как pull-up резистор включен
// Если расстояние больше 50 см и кнопка нажата, то светодиод горит
if (distance > 50 && buttonState) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
// Если параллельно выполняется первое задание, то мигаем светодиодом
if (distance < 50 && buttonState && millis() % 1000 < 500) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}