Delay альтернатива
- Войдите на сайт для отправки комментариев
Пт, 28/08/2015 - 22:12
Здравствуйте,
Собираю систему полива растений (датчик влажности почвы (YL-38), реле (SONGLE SRD-05VDC-SL-C), олед дысплей и уно)
Как оно должно работать: если влажность больше уровня Х, срабатывает реле на Х времени, пры использовании delay, информация на олед екране не обновляется, смотрел в сторону millis(), но так и не разобрасля, может ктото поможет с примером? или есть другое альтернативное решение?
Такж при запусте срабатывает реле, можно както отключить?
#include <OLED_I2C.h>
OLED myOLED(SDA, SCL, 8);
extern uint8_t SmallFont[];
extern uint8_t RusFont[];
int WaterSensor=10000;
void setup() {
myOLED.begin();
myOLED.setFont(SmallFont);
pinMode(A0, INPUT);
pinMode(10, OUTPUT);
}
void water() {
myOLED.print("Water Sensor", 0, 10);
WaterSensor = analogRead(A0);
String WaterSensorS = String(WaterSensor);
myOLED.print(" ", RIGHT, 10);
myOLED.print(WaterSensorS, RIGHT, 10);
if (WaterSensor < 1000) {
digitalWrite(10, LOW);
delay(5000);
} else {
digitalWrite(10, HIGH);
}
}
void loop() {
water();
myOLED.update();
}
BlinkWithoutDelay есть такой пример, его и смотрите
Чтобы при запуске не срабатывать реле, нужно включать реле нулём, а пин, управляющий реле инициализируется как digitalWrite(pin, HIGH); pinMode(pin, OUTPUT);