diff --git a/firmware/GyverLamp_v1.4/Constants.h b/firmware/GyverLamp_v1.4/Constants.h index 79b19f1..03108d6 100644 --- a/firmware/GyverLamp_v1.4/Constants.h +++ b/firmware/GyverLamp_v1.4/Constants.h @@ -23,8 +23,12 @@ uint8_t espMode = ESP_MODE; // ESP_MODE може #ifdef OTA #define ESP_OTA_PORT (8266U) // номер порта, который будет "прослушиваться" в ожидании команды прошивки по воздуху #endif -#define LED_PIN (2U) // пин ленты -#define BTN_PIN (4U) // пин кнопки +#define LED_PIN (2U) // пин ленты (D4) +#define BTN_PIN (4U) // пин кнопки (D2) +#define MOSFET_PIN (5U) // пин MOSFET транзистора (D1) - может быть использован для управления питанием матрицы/ленты +#define ALARM_PIN (16U) // пин состояния будильника (D0) - может быть использован для управления каким-либо внешним устройством на время работы будильника +#define MOSFET_LEVEL (HIGH) // логический уровень, в который будет установлен пин MOSFET_PIN, когда матрица включена - HIGH или LOW +#define ALARM_LEVEL (HIGH) // логический уровень, в который будет установлен пин ALARM_PIN, когда "рассвет"/будильник включен // --- ESP (WiFi клиент) --------------- const uint8_t STA_STATIC_IP[] = {}; // статический IP адрес: {} - IP адрес определяется роутером; {192, 168, 1, 66} - IP адрес задан явно (если DHCP на роутере не решит иначе); должен быть из того же диапазона адресов, что разадёт роутер diff --git a/firmware/GyverLamp_v1.4/GyverLamp_v1.4.ino b/firmware/GyverLamp_v1.4/GyverLamp_v1.4.ino index 2fa3d89..e1db891 100644 --- a/firmware/GyverLamp_v1.4/GyverLamp_v1.4.ino +++ b/firmware/GyverLamp_v1.4/GyverLamp_v1.4.ino @@ -96,6 +96,9 @@ - Добавлены "ночные часы" (от NIGHT_HOURS_START до NIGHT_HOURS_STOP включительно) и "дневные часы" (всё остальное время), для которых доступна регулировка яркости для вывода времени бегущей строкой - NIGHT_HOURS_BRIGHTNESS и DAY_HOURS_BRIGHTNESS --- 20.10.2019 - Добавлена блокировка кнопки на лампе из android приложения; сохраняется в EEPROM память + --- 24.10.2019 + - Добавлен вывод сигнала (HIGH/LOW - настраивается константой MOSFET_LEVEL) синхронно с включением матрицы на пин MOSFET транзистора (настраивается константой MOSFET_PIN) + - Добавлен вывод сигнала (HIGH/LOW - настраивается константой ALARM_LEVEL) на пин будильника (настраивается константой ALARM_PIN); сигнал подаётся в течение одной минуты, начиная со времени, на которое заведён будильник */ // Ссылка для менеджера плат: @@ -215,6 +218,22 @@ void setup() ESP.wdtEnable(WDTO_8S); + // ПИНЫ + #ifdef MOSFET_PIN // инициализация пина, управляющего MOSFET транзистором в состояние "выключен" + pinMode(MOSFET_PIN, OUTPUT); + #ifdef MOSFET_LEVEL + digitalWrite(MOSFET_PIN, !MOSFET_LEVEL); + #endif + #endif + + #ifdef ALARM_PIN // инициализация пина, управляющего будильником в состояние "выключен" + pinMode(ALARM_PIN, OUTPUT); + #ifdef ALARM_LEVEL + digitalWrite(ALARM_PIN, !ALARM_LEVEL); + #endif + #endif + + // TELNET #if defined(GENERAL_DEBUG) && GENERAL_DEBUG_TELNET telnetServer.begin(); diff --git a/firmware/GyverLamp_v1.4/effectTicker.ino b/firmware/GyverLamp_v1.4/effectTicker.ino index c2dc945..04c097c 100644 --- a/firmware/GyverLamp_v1.4/effectTicker.ino +++ b/firmware/GyverLamp_v1.4/effectTicker.ino @@ -69,6 +69,10 @@ void changePower() delay(2); FastLED.show(); } + + #if defined(MOSFET_PIN) && defined(MOSFET_LEVEL) // установка сигнала в пин, управляющий MOSFET транзистором, соответственно состоянию вкл/выкл матрицы + digitalWrite(MOSFET_PIN, ONflag ? MOSFET_LEVEL : !MOSFET_LEVEL); + #endif TimerManager::TimerRunning = false; TimerManager::TimerHasFired = false; diff --git a/firmware/GyverLamp_v1.4/time.ino b/firmware/GyverLamp_v1.4/time.ino index 3471b3c..34f0058 100644 --- a/firmware/GyverLamp_v1.4/time.ino +++ b/firmware/GyverLamp_v1.4/time.ino @@ -95,6 +95,13 @@ void timeTick() delay(1); FastLED.show(); dawnFlag = true; + + #if defined(ALARM_PIN) && defined(ALARM_LEVEL) // установка сигнала в пин, управляющий будильником + if (thisTime == alarms[thisDay].Time) // установка, только в минуту, на которую заведён будильник + { + digitalWrite(ALARM_PIN, ALARM_LEVEL); + } + #endif } } else @@ -115,6 +122,10 @@ void timeTick() dawnColorMinus4 = CHSV(0, 0, 0); dawnColorMinus5 = CHSV(0, 0, 0); dawnCounter = 0; + + #if defined(ALARM_PIN) && defined(ALARM_LEVEL) // установка сигнала в пин, управляющий будильником + digitalWrite(ALARM_PIN, !ALARM_LEVEL); + #endif } } }