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

View File

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

View File

@@ -19,12 +19,15 @@ void effectsRoutine() {
byte thisScale = getScale();
byte thisBright = getBright();
if (cfg.adcMode > 1) { // музыка или яркость
if (musicMode() || briMode()) { // музыка или яркость
if (cfg.role) { // мастер отправляет
static timerMillis adcSend(120, true);
if (adcSend.isReady() && millis() - udpTmr >= 1000) sendUDP(7, thisLength, thisScale, thisBright);
static uint32_t tmr = 0;
if ((millis() - tmr >= musicMode() ? 120 : 1000) && millis() - udpTmr >= 1000) {
sendUDP(7, thisLength, thisScale, thisBright);
tmr = millis();
}
} else { // слейв получает
if (millis() - gotADCtmr < 2000) { // есть сигнал с мастера
if (millis() - gotADCtmr < 4000) { // есть сигнал с мастера
thisLength = udpLength;
thisScale = udpScale;
thisBright = udpBright;
@@ -46,6 +49,7 @@ void effectsRoutine() {
prevEff = CUR_PRES.effect;
loading = true;
}
yield();
// =================================================== ЭФФЕКТЫ ===================================================
switch (CUR_PRES.effect) {
@@ -217,7 +221,7 @@ void effectsRoutine() {
case 9: // =================================== ЧАСЫ ===================================
FastLED.clear();
drawClock(mapFF(CUR_PRES.scale, 0, cfg.length - 7), (255 - CUR_PRES.speed), CHSV(CUR_PRES.color, 255, 255));
break;
break;
case 10: // ================================= ПОГОДА ==================================
@@ -236,13 +240,16 @@ void effectsRoutine() {
bool musicMode() {
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() {
int maxBr = cfg.bright; // макс яркость из конфига
byte fadeBr = 255;
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);
if (cfg.minLight != cfg.maxLight)
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() {
if (Udp.parsePacket()) {
static char buf[UDP_TX_PACKET_MAX_SIZE + 1];
int n = Udp.read(buf, UDP_TX_PACKET_MAX_SIZE);
buf[n] = NULL;
@@ -27,7 +27,7 @@ void parsing() {
// ПАРСИНГ
byte data[MAX_PRESETS * PRES_SIZE + 10];
memset(data, 0, sizeof(data));
memset(data, 0, MAX_PRESETS * PRES_SIZE + 10);
int count = 0;
char *str, *p = buf;
char *ssid, *pass;
@@ -53,7 +53,6 @@ void parsing() {
if (count == 24) strcpy(cfg.mqttPass, str);
}
}
yield();
// тип 0 - control, 1 - config, 2 - effects, 3 - dawn, 4 - from master, 5 - palette, 6 - time
switch (data[1]) {
@@ -93,6 +92,7 @@ void parsing() {
case 13: // выключить через
if (data[3] == 0) turnoffTmr.stop();
else {
DEBUGLN("Fade");
fadeDown((uint32_t)data[3] * 60000ul);
}
break;

View File

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

View File

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

View File

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