• Предмет: Информатика
  • Автор: 12345678915874474
  • Вопрос задан 5 месяцев назад

С помощью ультразвукового датчика измерить расстояние и если это

расстояние будет больше 50 см. светодиод будет гореть при нажатой кнопке, в

случае если кнопка не нажата светодиод должен быть отключен и если расстояние

меньше 50см, светодиод не должен загораться, при условии параллельного

выполнения 1-ого задания (то есть он при включении должен моргать).

Arduino код + фото

Ответы

Ответ дал: mixail0809
1

// Подключение ультразвукового датчика 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);

}

}

Вас заинтересует