This commit is contained in:
Alex
2021-03-02 02:50:05 +03:00
parent 14efbc29ef
commit 0e7f743bc8
7 changed files with 33 additions and 19 deletions

View File

@@ -1,4 +1,10 @@
/* /*
Версия 0.20b
Оптимизация
Исправление критических ошибок
Пофикшено падение АР
Пофикшено падение лампы во время светомузыки
Версия 0.19b Версия 0.19b
Минимальная версия приложения 1.17!!! Минимальная версия приложения 1.17!!!
Почищен мусор, оптимизация, повышена стабильность и производительность Почищен мусор, оптимизация, повышена стабильность и производительность
@@ -63,8 +69,9 @@
// ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! // ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ!
// ДЛЯ КОМПИЛЯЦИИ ПРОШИВКИ ПОД NODEMCU/WEMOS/ESP01/ESP12 ВЫБИРАТЬ // ДЛЯ КОМПИЛЯЦИИ ПРОШИВКИ ПОД NODEMCU/WEMOS/ESP01/ESP12 ВЫБИРАТЬ
// Инструменты/Плата Generic ESP8266 // Инструменты / Плата Generic ESP8266
// Инструменты/Flash Size 4MB (FS:2MB OTA) // Инструменты / Flash Size 4MB (FS:2MB OTA)
// CPU Frequency / 160 MHz (рекомендуется для стабильности светомузыки!!!)
// При прошивке с других прошивок лампы поставить: Инструменты/Erase Flash/All Flash Contents // При прошивке с других прошивок лампы поставить: Инструменты/Erase Flash/All Flash Contents
// ESP core 2.7.4+ http://arduino.esp8266.com/stable/package_esp8266com_index.json // ESP core 2.7.4+ http://arduino.esp8266.com/stable/package_esp8266com_index.json
// FastLED 3.4.0+ https://github.com/FastLED/FastLED/releases // FastLED 3.4.0+ https://github.com/FastLED/FastLED/releases
@@ -101,9 +108,9 @@ const char AP_NameChar[] = "GyverLamp2";
const char WiFiPassword[] = "12345678"; const char WiFiPassword[] = "12345678";
// ------------ Прочее ------------- // ------------ Прочее -------------
#define GL_VERSION 19 // код версии прошивки #define GL_VERSION 20 // код версии прошивки
#define EE_TOUT 30000 // таймаут сохранения епром после изменения, мс #define EE_TOUT 30000 // таймаут сохранения епром после изменения, мс
#define DEBUG_SERIAL // закомментируй чтобы выключить отладку (скорость 115200) //#define DEBUG_SERIAL // закомментируй чтобы выключить отладку (скорость 115200)
#define EE_KEY 55 // ключ сброса WiFi (измени для сброса всех настроек) #define EE_KEY 55 // ключ сброса WiFi (измени для сброса всех настроек)
#define NTP_UPD_PRD 5 // период обновления времени с NTP сервера, минут #define NTP_UPD_PRD 5 // период обновления времени с NTP сервера, минут
//#define SKIP_WIFI // пропустить подключение к вафле (для отладки) //#define SKIP_WIFI // пропустить подключение к вафле (для отладки)
@@ -120,7 +127,7 @@ const char WiFiPassword[] = "12345678";
//#define STRIP_PIN 5 // GPIO5 на gl module (D1 на wemos/node) //#define STRIP_PIN 5 // GPIO5 на gl module (D1 на wemos/node)
// ---------- БИБЛИОТЕКИ ----------- // ---------- БИБЛИОТЕКИ -----------
#define FASTLED_ALLOW_INTERRUPTS 0 //#define FASTLED_ALLOW_INTERRUPTS 0
#include "data.h" // данные #include "data.h" // данные
#include "Time.h" // часы #include "Time.h" // часы
#include "TimeRandom.h" // случайные числа по времени #include "TimeRandom.h" // случайные числа по времени

View File

@@ -5,7 +5,7 @@ void setupADC() {
vol.setDt(700); vol.setDt(700);
vol.setPeriod(5); vol.setPeriod(5);
vol.setWindow(map(MAX_LEDS, 300, 1200, 20, 1)); vol.setWindow(map(MAX_LEDS, 300, 900, 20, 1));
low.setDt(0); low.setDt(0);
low.setPeriod(0); low.setPeriod(0);
@@ -63,11 +63,11 @@ void checkAnalog() {
void checkMusic() { void checkMusic() {
vol.tick(); vol.tick();
yield();
#if (USE_CLAP == 1) #if (USE_CLAP == 1)
clap.tick(vol.getRawMax()); clap.tick(vol.getRawMax());
if (clap.hasClaps(2)) controlHandler(!cfg.state); if (clap.hasClaps(2)) controlHandler(!cfg.state);
#endif #endif
yield();
if (CUR_PRES.advMode == GL_ADV_LOW || CUR_PRES.advMode == GL_ADV_HIGH) { // частоты if (CUR_PRES.advMode == GL_ADV_LOW || CUR_PRES.advMode == GL_ADV_HIGH) { // частоты
int raw[FFT_SIZE], spectr[FFT_SIZE]; int raw[FFT_SIZE], spectr[FFT_SIZE];
for (int i = 0; i < FFT_SIZE; i++) raw[i] = analogRead(A0); for (int i = 0; i < FFT_SIZE; i++) raw[i] = analogRead(A0);

View File

@@ -19,12 +19,15 @@ void effectsRoutine() {
byte thisScale = getScale(); byte thisScale = getScale();
byte thisBright = getBright(); byte thisBright = getBright();
if (cfg.adcMode > 1) { // музыка или яркость if (musicMode() || briMode()) { // музыка или яркость
if (cfg.role) { // мастер отправляет if (cfg.role) { // мастер отправляет
static timerMillis adcSend(120, true); static uint32_t tmr = 0;
if (adcSend.isReady() && millis() - udpTmr >= 1000) sendUDP(7, thisLength, thisScale, thisBright); if ((millis() - tmr >= musicMode() ? 120 : 1000) && millis() - udpTmr >= 1000) {
sendUDP(7, thisLength, thisScale, thisBright);
tmr = millis();
}
} else { // слейв получает } else { // слейв получает
if (millis() - gotADCtmr < 2000) { // есть сигнал с мастера if (millis() - gotADCtmr < 4000) { // есть сигнал с мастера
thisLength = udpLength; thisLength = udpLength;
thisScale = udpScale; thisScale = udpScale;
thisBright = udpBright; thisBright = udpBright;
@@ -46,6 +49,7 @@ void effectsRoutine() {
prevEff = CUR_PRES.effect; prevEff = CUR_PRES.effect;
loading = true; loading = true;
} }
yield();
// =================================================== ЭФФЕКТЫ =================================================== // =================================================== ЭФФЕКТЫ ===================================================
switch (CUR_PRES.effect) { switch (CUR_PRES.effect) {
@@ -217,7 +221,7 @@ void effectsRoutine() {
case 9: // =================================== ЧАСЫ =================================== case 9: // =================================== ЧАСЫ ===================================
FastLED.clear(); FastLED.clear();
drawClock(mapFF(CUR_PRES.scale, 0, cfg.length - 7), (255 - CUR_PRES.speed), CHSV(CUR_PRES.color, 255, 255)); drawClock(mapFF(CUR_PRES.scale, 0, cfg.length - 7), (255 - CUR_PRES.speed), CHSV(CUR_PRES.color, 255, 255));
break; break;
case 10: // ================================= ПОГОДА ================================== case 10: // ================================= ПОГОДА ==================================
@@ -236,13 +240,16 @@ void effectsRoutine() {
bool musicMode() { bool musicMode() {
return ((cfg.adcMode == GL_ADC_MIC || cfg.adcMode == GL_ADC_BOTH) && (CUR_PRES.advMode > 1 && CUR_PRES.advMode <= 4)); return ((cfg.adcMode == GL_ADC_MIC || cfg.adcMode == GL_ADC_BOTH) && (CUR_PRES.advMode > 1 && CUR_PRES.advMode <= 4));
} }
bool briMode() {
return (cfg.adcMode == GL_ADC_BRI || cfg.adcMode == GL_ADC_BOTH);
}
byte getBright() { byte getBright() {
int maxBr = cfg.bright; // макс яркость из конфига int maxBr = cfg.bright; // макс яркость из конфига
byte fadeBr = 255; byte fadeBr = 255;
if (CUR_PRES.fadeBright) fadeBr = CUR_PRES.bright; // ограничен вручную if (CUR_PRES.fadeBright) fadeBr = CUR_PRES.bright; // ограничен вручную
if (cfg.adcMode == GL_ADC_BRI || cfg.adcMode == GL_ADC_BOTH) { // ----> датчик света или оба if (briMode()) { // ----> датчик света или оба
maxBr = constrain(phot.getFil(), cfg.minLight, cfg.maxLight); maxBr = constrain(phot.getFil(), cfg.minLight, cfg.maxLight);
if (cfg.minLight != cfg.maxLight) if (cfg.minLight != cfg.maxLight)
maxBr = map(maxBr, cfg.minLight, cfg.maxLight, cfg.minBright, cfg.maxBright); maxBr = map(maxBr, cfg.minLight, cfg.maxLight, cfg.minBright, cfg.maxBright);

View File

@@ -1,6 +1,6 @@
char buf[UDP_TX_PACKET_MAX_SIZE + 1];
void parsing() { void parsing() {
if (Udp.parsePacket()) { if (Udp.parsePacket()) {
static char buf[UDP_TX_PACKET_MAX_SIZE + 1];
int n = Udp.read(buf, UDP_TX_PACKET_MAX_SIZE); int n = Udp.read(buf, UDP_TX_PACKET_MAX_SIZE);
buf[n] = NULL; buf[n] = NULL;
@@ -27,7 +27,7 @@ void parsing() {
// ПАРСИНГ // ПАРСИНГ
byte data[MAX_PRESETS * PRES_SIZE + 10]; byte data[MAX_PRESETS * PRES_SIZE + 10];
memset(data, 0, sizeof(data)); memset(data, 0, MAX_PRESETS * PRES_SIZE + 10);
int count = 0; int count = 0;
char *str, *p = buf; char *str, *p = buf;
char *ssid, *pass; char *ssid, *pass;
@@ -53,7 +53,6 @@ void parsing() {
if (count == 24) strcpy(cfg.mqttPass, str); if (count == 24) strcpy(cfg.mqttPass, str);
} }
} }
yield();
// тип 0 - control, 1 - config, 2 - effects, 3 - dawn, 4 - from master, 5 - palette, 6 - time // тип 0 - control, 1 - config, 2 - effects, 3 - dawn, 4 - from master, 5 - palette, 6 - time
switch (data[1]) { switch (data[1]) {
@@ -93,6 +92,7 @@ void parsing() {
case 13: // выключить через case 13: // выключить через
if (data[3] == 0) turnoffTmr.stop(); if (data[3] == 0) turnoffTmr.stop();
else { else {
DEBUGLN("Fade");
fadeDown((uint32_t)data[3] * 60000ul); fadeDown((uint32_t)data[3] * 60000ul);
} }
break; break;

View File

@@ -68,7 +68,7 @@ void setPower(bool state) {
FastLED.clear(); FastLED.clear();
FastLED.show(); FastLED.show();
} }
if (millis() - udpTmr >= 1000) sendToSlaves(0, cfg.state); // пиздец костыль if (millis() - udpTmr >= 1000) sendToSlaves(0, cfg.state); // пиздец костыль (не отправлять слейвам если команда получена по воздуху)
DEBUGLN(state ? "Power on" : "Power off"); DEBUGLN(state ? "Power on" : "Power off");
} }

View File

@@ -164,7 +164,7 @@ void checkUpdate() {
DEBUGLN(GL_VERSION); DEBUGLN(GL_VERSION);
} else { } else {
blink16(CRGB::Blue); blink16(CRGB::Blue);
DEBUG("Update to current"); DEBUGLN("Update to current");
} }
cfg.update = 0; cfg.update = 0;
EE_updCfg(); EE_updCfg();

View File

@@ -12,7 +12,7 @@ void setupTime() {
void timeTicker() { void timeTicker() {
static timerMillis tmr(30, true); static timerMillis tmr(30, true);
if (tmr.isReady()) { if (tmr.isReady()) {
if (cfg.WiFimode && WiFi.status() == WL_CONNECTED) { // если вайфай подключен if (cfg.WiFimode && WiFi.status() == WL_CONNECTED && !connTmr.running()) { // если вайфай подключен и это не попытка переподключиться
now.sec = ntp.getSeconds(); now.sec = ntp.getSeconds();
now.min = ntp.getMinutes(); now.min = ntp.getMinutes();
now.hour = ntp.getHours(); now.hour = ntp.getHours();