Почему не корректно работает задержка ?
- Войдите на сайт для отправки комментариев
Вс, 04/10/2020 - 11:08
пробую использовать millis для запуска двух не связанных кусочков кода, но работает то через раз то вообще фиг пойми как)) подскажите где косяк?
#define rele_dom 9 // пин реле в доме #define rele_ul 6 // пин реле на улице #define dsveta 7 // пин датчика света #define ddvij 2 // датчик движения #define gerkon 5 // геркон #define knopka 3 // кнопка // test // Variables will change: long previousMillis = 0; // храним время последнего переключения светодиода long previousMillis2 = 0; bool one = false; // /test void setup() { Serial.begin(9600); pinMode(rele_dom, OUTPUT); pinMode(rele_ul, OUTPUT); digitalWrite(rele_dom, HIGH); // выключаем реле по умолчанию digitalWrite(rele_ul, HIGH); pinMode(dsveta, INPUT); pinMode(gerkon, INPUT); pinMode(knopka, INPUT); } void loop() { Serial.println(digitalRead(dsveta)); // здесь будет код, который будет работать постоянно // и который не должен останавливаться на время между переключениями свето unsigned long currentMillis = millis(); if (digitalRead(dsveta) == 1) { digitalWrite(rele_dom, LOW); } else { if (currentMillis - previousMillis > 30000) { // время в милисекундах previousMillis = currentMillis; digitalWrite(rele_dom, HIGH); } } if (digitalRead(dsveta) == 1) { digitalWrite(rele_ul, LOW); } else { if (currentMillis - previousMillis2 > 4000) { // время в милисекундах previousMillis2 = currentMillis; digitalWrite(rele_ul, HIGH); } } }
написанное фиг пойми как, именно так и работает.
Замените
На
Замените
На
здесь это как мёртвому припарки.
Наверно счетчики отключения нужно стартовать в момент включения, и завершать после этого, а не крутить вне зависимости от ничего.
на самом деле не такая простая задача )))
проверь, может это то, что и требовалось?
в железе не проверял, но скомпилировалось
экстрасексы набежали ...
экстрасексы набежали ...
это Знахари анализ мочи на вкус делают, а мы экстрасенсы общаемся только с Хрустальным шаром )))