Помогите написать скетч для ультразвукового датчика HC-SR04 и модуля реле Songle SRD-05VDC-SL-C
- Войдите на сайт для отправки комментариев
Ср, 14/12/2016 - 22:27
Здравствуйте! Необходимо, чтобы при расстоянии <300мм, модуль-реле включал нагрузку, если >300мм выключал. Заранее спасибо.
Пишите ydom@mail.ru сделаем. Напишу код, соберу макет, проверю в работе, так что вы получите полностью рабочий проверенный код.
Пишите ydom@mail.ru сделаем. Напишу код, соберу макет, проверю в работе, так что вы получите полностью рабочий проверенный код.
такое даже я смогу написать )))
Питание от чего? htpicc@gmail.com
От платы arduino uno.
5v реле, при питаниии от ардуино, может давать помеху и перегревать(выводить из строя) стабилизатор ардуины.
правильно реле запитать от отдельного источника 5 вольт, а не от дуни
Это я под ESP писал. Пины D6, D7, D8 заменишь на свои..
#define echoPin D7 #define trigPin D6 #define relayPin D8 long duration, distance; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(relayPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2);digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration/58.2; Serial.println(distance); // distance < - ТУТ НАХОДИТСЯ РАССТОЯНИЕ В МИЛЛИМЕТРАХ delay(100); }В монитор порта выводит в миллиметрах, что хочешь то и делай с ними.
Копипаст, небось.)) Ибо зачем первые 2 строки в лупе?
Копипаст, небось.)) Ибо зачем первые 2 строки в лупе?
Всё там правильно не езди людям по ушам.
Я понял. Для объёма. И не тыкай мне.
Копипаст, небось.)) Ибо зачем первые 2 строки в лупе?
А разве
pinMode(trigPin, OUTPUT);Не установит выход в единичку?Копипаст, небось.)) Ибо зачем первые 2 строки в лупе?
А разве
pinMode(trigPin, OUTPUT);Не установит выход в единичку?Изначально у меня эта функция называлась по другому и вызывалась по требованию, поэтому я и не удалял все задержки и т.п. Последующие так же её переименуют...
Залей и посмотри в монитор порта.
а константа 58.2 - уточнённое значение на скорость распространения звука в воздушной среде, в примерах просто 58?
А разве
pinMode(trigPin, OUTPUT);Не установит выход в единичку?Нет, не установит.
[quote=p.masyukov]
Это я под ESP писал. Пины D6, D7, D8 заменишь на свои..
#define echoPin D7 #define trigPin D6 #define relayPin D8 long duration, distance; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(relayPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2);digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration/58.2; Serial.println(distance); // distance < - ТУТ НАХОДИТСЯ РАССТОЯНИЕ В МИЛЛИМЕТРАХ delay(100); }В монитор порта выводит в миллиметрах, что хочешь то и делай с ними.
Загрузил скетч. Вот такая картина получилась:
Так ты пины замени на те что используешь (вместо D6,D7...) и подключи правильно датчик.
Он и выводит ошибку.. Что в переменной растояние ничего нет.
longduration = 0, distance = 0; // А так нули будет выдавать если датчик неисправен, не подключен, не правильно подключеня использую ваши пины. заменил переменную. всё равно ошибка. выделяет 10 строчку.
#define echoPin 7 #define trigPin 6 #define relayPin 8 long duration = 0, distance = 0; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(relayPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration/58.2; Serial.println(distance); // distance < - ТУТ НАХОДИТСЯ РАССТОЯНИЕ В МИЛЛИМЕТРАХ delay(100); }не работает. пишет:
Попробуйте переустановить IDE
Зааааработаалооооо. Спасибо. Теперь не понятно, где задавать расстояние, если <300мм, то включить реле, >-выключить?
01#define echoPin 702#define trigPin 603#define relayPin 80405longduration = 0, distance = 0;0607voidsetup()08{09Serial.begin (9600);10pinMode(trigPin, OUTPUT);11pinMode(relayPin, OUTPUT);12pinMode(echoPin, INPUT);13}1415voidloop()16{17digitalWrite(trigPin, LOW);18delayMicroseconds(2);19digitalWrite(trigPin, HIGH);2021delayMicroseconds(10);22digitalWrite(trigPin, LOW);2324duration = pulseIn(echoPin, HIGH);25distance = duration/58.2;2627Serial.println(distance);28( distance < 300 ) ? digitalWrite(relayPin, HIGH):digitalWrite(relayPin, LOW);
29// distance < - ТУТ НАХОДИТСЯ РАССТОЯНИЕ В МИЛЛИМЕТРАХ3031delay(100);32}А ведь клиент созрел почти. )))
я не понял вас? это тонкий намёк что ли?
новый год скоро.
тогда с наступающим всех новым годом!!! спасибо за поддержку. помогли бедному страдальцу справиться с железякой.