 |
26.09.2017, 22:08
|
#1
|
Живу я тут
Реєстрація: 31.12.2014
Звідки Ви: Львов
Дописи: 1.421
сказав Дякую: 278
сказали Дякую 830 раз(и) в 533 повідомленні
|
Re: Ультразвуковой датчик HC-SR04 и Arduino UNO ===www.aquaforum.ua===
Реле будет стоять с Led3 только в диапазоне 50-190, бребезжание диодов как-то всё равно, а вот реле и ЭМклапан долива, разве что MOSFET поставить, или твердотельные, хоть они и подороже будут.
|
|
|
27.09.2017, 09:31
|
#2
|
Живу я тут
Реєстрація: 31.07.2010
Звідки Ви: Белоруссия, Гомель
Дописи: 413
сказав Дякую: 38
сказали Дякую 192 раз(и) в 87 повідомленні
|
Re: Ультразвуковой датчик HC-SR04 и Arduino UNO ===www.aquaforum.ua===
Цитата:
Допис від Сергій М
Реле будет стоять с Led3 только в диапазоне 50-190, бребезжание диодов как-то всё равно, а вот реле и ЭМклапан долива, разве что MOSFET поставить, или твердотельные, хоть они и подороже будут.
|
Проблема решается на программном уровне. Пробуйте:
Скрытый текст
Цитата:
#include "Arduino.h"
#define echoPin 7 // HC-SR04
#define trigPin 8 // HC-SR04
#define LEDInfo 11
#define LEDWarning 12
#define LEDError 13
long duration, distance;
// clearance to avoid rattling of sensors
const byte GapDistance = 3;
//LED3
const byte LEDInfoMin = 50;
const byte LEDInfoMax = 190;
//LED2
const byte LEDWarningMin = 40;
const byte LEDWarningMax = 200;
//LED1
const byte LEDErrorMin = 0;
const byte LEDErrorMax = 200;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDInfo, OUTPUT);
pinMode(LEDWarning, OUTPUT);
pinMode(LEDError, OUTPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration / 5.82;
/*
* 0-37 203 - > - LEDError1 (ON)
*/
if ((distance >= LEDErrorMin && distance < LEDWarningMin - GapDistance)
|| distance > LEDErrorMax + GapDistance) {
// LEDError1 (ON)
if (digitalRead(LEDError) == LOW) {
digitalWrite(LEDError, HIGH);
}
} else {
// LEDError1 (OFF)
if (digitalRead(LEDInfo) == HIGH) {
digitalWrite(LEDInfo, LOW);
}
// LEDWarning3 (OFF)
if (digitalRead(LEDWarning) == HIGH) {
digitalWrite(LEDWarning, LOW);
}
}
/*
* 53 -187 - LEDInfo2 (ON)
*/
if (distance >= LEDInfoMin + GapDistance && distance <= LEDInfoMax - GapDistance) {
// LEDInfo2 (ON)
if (digitalRead(LEDInfo) == LOW) {
digitalWrite(LEDInfo, HIGH);
}
} else {
// LEDError (OFF)
if (digitalRead(LEDError) == HIGH) {
digitalWrite(LEDError, LOW);
}
// LEDWarning3 (OFF)
if (digitalRead(LEDWarning) == HIGH) {
digitalWrite(LEDWarning, LOW);
}
}
/*
* 43-47 193-197 LEDWarning3 (ON)
*/
if ((distance >= LEDWarningMin + GapDistance && distance < LEDInfoMin - GapDistance)
|| (distance > LEDInfoMax + GapDistance && distance <= LEDWarningMax - GapDistance)) {
// LEDWarning3 (ON)
if (digitalRead(LEDWarning) == LOW) {
digitalWrite(LEDWarning, HIGH);
}
} else {
// LEDInfo (OFF)
if (digitalRead(LEDInfo) == HIGH) {
digitalWrite(LEDInfo, LOW);
}
// LEDWarning3 (OFF)
if (digitalRead(LEDError) == HIGH) {
digitalWrite(LEDError, LOW);
}
}
delay(50);
}
|
|
|
|
 |
Тут присутні: 1 (учасників - 0 , гостей - 1)
|
|
Ваші права у розділі
|
Ви не можете створювати теми
Ви не можете писати дописи
Ви не можете долучати файли
Ви не можете редагувати дописи
HTML код Вимк.
|
|
|
Часовий пояс GMT +3. Поточний час: 12:03.
|