mirror of
https://github.com/AlexGyver/GyverLamp2.git
synced 2025-08-07 08:40:35 +03:00
v0.20b
This commit is contained in:
@@ -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" // случайные числа по времени
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -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");
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user