Сработка LED по значению с датчика
- Войдите на сайт для отправки комментариев
Втр, 28/01/2020 - 13:40
Добрый день.
Есть датчик HC-SR04. Он считывает расстояние до стены (110см) При условии что расстояние менее 100см включать led, если более 100см выключать Led.
Вот что есть пока, никак не могу одолеть условия, не пойму какое значение нужно проверять на > или <:
const int trigPin = 9; // Trigger Pin датчика приближения const int echoPin = 8; // Echo Pin of датчика приближения const int led = 5; void setup() { Serial.begin(9600); // Инициирует последовательное соединение и задаёт скорость передачи данных 9600 бит/с } void loop() { long duration, cm; pinMode(trigPin, OUTPUT); //trigpin установлен как выход digitalWrite(led, LOW); //светодиод выключен delay(2); digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); pinMode(echoPin, INPUT); duration = pulseIn(echoPin, HIGH); pinMode(led, OUTPUT); digitalWrite(led, LOW); /* inches = microsecondsToInches(duration);*/ cm = microsecondsToCentimeters(duration); /* Serial.print(inches);*/ /* Serial.print("in, ");*/ Serial.print("Distance: "); Serial.print(cm); Serial.print (" cm"); Serial.println(); delay(5000); }
P.S. С программированием не знаком, пытаюсь научиться по ходу этой задачи, но времени на её выполнение не много. Заранее благодарю за помощь.
Пробовал писать:
Но тогда выдаёт ошибку на 22 строку - 'microsecondsToCentimeters' was not declared in this scope - не пойму почему? cm не объявлена?
А какие значения есть в наличии?
Но тогда выдаёт ошибку на 22 строку - 'microsecondsToCentimeters' was not declared in this scope - не пойму почему? cm не объявлена?
я тоже "не пойму почему" вы спрашиваете про cm, если компилятор пишет вам. что не обьявлена 'microsecondsToCentimeters'
'microsecondsToCentimeters' - есть такая функция в библиотеке? - может она чуть по другому пишется?
Пробовал писать:
Но тогда выдаёт ошибку на 22 строку - 'microsecondsToCentimeters' was not declared in this scope - не пойму почему? cm не объявлена?
А Вы не могли бы показать именно этот скетч - как Вы пробуете? И заодно выложить точно (копи-пастом) сообщение об ошибке? А то хрустальные шары здесь запрещены.
pinMode принято задавать в setup
объявлять переменные нужно до их использования (я бы все выносил в начало скетча) и следите за типами данных.
microsecondsToCentimeters - если это функция библиотеки, то вначале нужно подключить библиотеку
а что касается условий, то:
если расстояние (см) < x -> led HIGH
все разжевано, дальше некуда
https://arduinomaster.ru/datchiki-arduino/ultrazvukovoj-dalnomer-hc-sr04/
Да, спасибо! Целый день сижу на этом сайте. Не всё понятно к сожалению. Я с ардуино знаком 2 день только ))) Разбираюсь ))
Да, спасибо! Целый день сижу на этом сайте. Не всё понятно к сожалению.
Что именно Вам непонятно в моём посте #4 ?
Евгений, в вашем сообщение всё понятно. К сожалению в процессе экспериментов похерил оригинальный скетч, не готов его искать в интернете. Сейчас пытаюсь заново сваять исходя из статьи предложенной xDriver.
Забудем про microsecondsToCentimeters, сделал без неё. Сейчас есть такой код:
Почему не срабатывает LED?
Срабатывает.
и тут же гаснет!
строки 31-33 перенести после строки 22.
или строку 19 удалить, а 31-33 заменить на
или строку 19 удалить, а 31-33 заменить на
сдается мне, что результат будет тем же.
ТС - сколько должен гореть LED после того, как первый раз сработал?
сдается мне, что результат будет тем же.
на секунду моргнет точно :)
а вообще объясни, что ты имел ввиду?
Забудем про microsecondsToCentimeters, сделал без неё. Сейчас есть такой код:
Почему не срабатывает LED?
19 - погасили светодиод
21, 22 - измерили расстояние.
28 - чего-то ждем при погашенном св.диоде целую секунду
30, 32 - возможно, зажгли светодиод. или не зажгли.
это без разницы, ибо через считанные микросекунды (<20) перепрыгнули
к строке 19 и его погасили. срабатывает он или нет - неведомо, т.к. глаз такие короткие
вспышки вряд ли фиксирует.
xDriver Да, сработало! Косячил с синтаксисом. Спасибо граждане за помощь!
b707 Пока расстояние не изменится.