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

Сделать в ардуино код + фото
С помощью ультразвукового датчика измерить расстояние и если это
расстояние будет больше 50 см. светодиод будет гореть при нажатой кнопке, в
случае если кнопка не нажата светодиод должен быть отключен и если расстояние
меньше 50см, светодиод не должен загораться, при условии параллельного
выполнения 1-ого задания (то есть он при включении должен моргать)

Ответы

Ответ дал: mixail0809
2

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);

}

}

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