С помощью ультразвукового датчика измерить расстояние и если это
расстояние будет больше 50 см. светодиод будет гореть при нажатой кнопке, в
случае если кнопка не нажата светодиод должен быть отключен и если расстояние
меньше 50см, светодиод не должен загораться, при условии параллельного
выполнения 1-ого задания (то есть он при включении должен моргать).
Arduino код + фото
Ответы
// Подключение ультразвукового датчика HC-SR04
const int trigPin = 9;
const int echoPin = 10;
// Подключение светодиода
const int ledPin = 13;
// Подключение кнопки
const int buttonPin = 2;
void setup() {
// Настройка пинов
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
// Задаем скорость передачи данных для монитора порта
Serial.begin(9600);
}
void loop() {
// Измеряем расстояние до объекта
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2;
// Проверяем, была ли нажата кнопка
bool buttonPressed = digitalRead(buttonPin) == LOW;
// Включаем/выключаем светодиод в зависимости от расстояния и нажатия кнопки
if (distance > 50 && buttonPressed) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
// Выводим информацию о расстоянии и состоянии светодиода в монитор порта
Serial.print("Distance: ");
Serial.print(distance);
Serial.print(" cm");
if (digitalRead(ledPin)) {
Serial.print(" - LED on");
} else {
Serial.print(" - LED off");
}
Serial.println();
// Мигаем светодиодом при включении
if (millis() < 5000 && millis() % 1000 < 500) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}