mirror of
https://github.com/AlexGyver/GyverLamp2.git
synced 2025-08-08 17:11:05 +03:00
v0.13b
This commit is contained in:
@@ -1,7 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
|
Версия 0.13b
|
||||||
|
Улучшена стабильность
|
||||||
|
|
||||||
Версия 0.12b
|
Версия 0.12b
|
||||||
Мелкие исправления
|
Мелкие исправления
|
||||||
|
|
||||||
Версия 0.11b
|
Версия 0.11b
|
||||||
Добавлен редактор палитр
|
Добавлен редактор палитр
|
||||||
Исправлены мелкие баги в эффектах
|
Исправлены мелкие баги в эффектах
|
||||||
@@ -15,13 +18,12 @@
|
|||||||
Добавлен рассвет
|
Добавлен рассвет
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
плавная смена режимов
|
плавная смена режимов
|
||||||
Аккуратнее со светомузыкой!
|
4 клика вкл выкл смену?
|
||||||
4 клика вкл выкл смену?
|
|
||||||
Mqtt?
|
Mqtt?
|
||||||
Базовый пак
|
Базовый пак
|
||||||
Предложения Серёги крутского
|
Предложения Серёги крутского
|
||||||
Убрать аплод?
|
Убрать аплод?
|
||||||
Огонь 2018/2020?
|
Огонь 2018/2020?
|
||||||
Взять огонь отсюда https://community.alexgyver.ru/threads/wifi-lampa-budilnik-obsuzhdenie-proshivki-ot-gunner47.2418/page-72#post-33652
|
Взять огонь отсюда https://community.alexgyver.ru/threads/wifi-lampa-budilnik-obsuzhdenie-proshivki-ot-gunner47.2418/page-72#post-33652
|
||||||
Вернуть искры
|
Вернуть искры
|
||||||
@@ -68,7 +70,7 @@ const char AP_NameChar[] = "GyverLamp2";
|
|||||||
const char WiFiPassword[] = "12345678";
|
const char WiFiPassword[] = "12345678";
|
||||||
|
|
||||||
// ------------ Прочее -------------
|
// ------------ Прочее -------------
|
||||||
#define GL_VERSION 012 // код версии прошивки
|
#define GL_VERSION 013 // код версии прошивки
|
||||||
#define EE_TOUT 30000 // таймаут сохранения епром после изменения, мс
|
#define EE_TOUT 30000 // таймаут сохранения епром после изменения, мс
|
||||||
//#define DEBUG_SERIAL // закомментируй чтобы выключить отладку (скорость 115200)
|
//#define DEBUG_SERIAL // закомментируй чтобы выключить отладку (скорость 115200)
|
||||||
#define EE_KEY 51 // ключ сброса WiFi (измени для сброса всех настроек)
|
#define EE_KEY 51 // ключ сброса WiFi (измени для сброса всех настроек)
|
||||||
@@ -97,6 +99,7 @@ const char WiFiPassword[] = "12345678";
|
|||||||
#include "timerMillis.h" // таймер миллис
|
#include "timerMillis.h" // таймер миллис
|
||||||
#include "VolAnalyzer.h" // анализатор громкости
|
#include "VolAnalyzer.h" // анализатор громкости
|
||||||
#include "FFT_C.h" // фурье
|
#include "FFT_C.h" // фурье
|
||||||
|
#define FASTLED_ALLOW_INTERRUPTS 0
|
||||||
#include <FastLED.h> // лента
|
#include <FastLED.h> // лента
|
||||||
#include <ESP8266WiFi.h> // базовая либа есп
|
#include <ESP8266WiFi.h> // базовая либа есп
|
||||||
#include <WiFiUdp.h> // общение по UDP
|
#include <WiFiUdp.h> // общение по UDP
|
||||||
|
@@ -25,6 +25,9 @@ void setupADC() {
|
|||||||
|
|
||||||
phot.setDt(80);
|
phot.setDt(80);
|
||||||
phot.setK(31);
|
phot.setK(31);
|
||||||
|
|
||||||
|
if (cfg.adcMode == GL_ADC_BRI) switchToPhot();
|
||||||
|
else if (cfg.adcMode == GL_ADC_MIC) switchToMic();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -52,23 +55,21 @@ void checkAnalog() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void checkMusic() {
|
void checkMusic() {
|
||||||
if (CUR_PRES.soundMode > 1) {
|
if (CUR_PRES.advMode == GL_ADV_VOL) { // громкость
|
||||||
if (CUR_PRES.soundMode == GL_MUS_VOL) { // громкость
|
vol.tick();
|
||||||
vol.tick();
|
} else if (CUR_PRES.advMode == GL_ADV_LOW || CUR_PRES.advMode == GL_ADV_HIGH) { // частоты
|
||||||
} else { // частоты
|
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);
|
FFT(raw, spectr);
|
||||||
FFT(raw, spectr);
|
int low_raw = 0;
|
||||||
int low_raw = 0;
|
int high_raw = 0;
|
||||||
int high_raw = 0;
|
for (int i = 0; i < FFT_SIZE / 2; i++) {
|
||||||
for (int i = 0; i < FFT_SIZE / 2; i++) {
|
spectr[i] = (spectr[i] * (i + 2)) >> 1;
|
||||||
spectr[i] = (spectr[i] * (i + 2)) >> 1;
|
if (i < 2) low_raw += spectr[i];
|
||||||
if (i < 2) low_raw += spectr[i];
|
else high_raw += spectr[i];
|
||||||
else high_raw += spectr[i];
|
|
||||||
}
|
|
||||||
low.tick(low_raw);
|
|
||||||
high.tick(high_raw);
|
|
||||||
}
|
}
|
||||||
|
low.tick(low_raw);
|
||||||
|
high.tick(high_raw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,10 +80,10 @@ void checkPhot() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
byte getSoundVol() {
|
byte getSoundVol() {
|
||||||
switch (CUR_PRES.soundMode) {
|
switch (CUR_PRES.advMode) {
|
||||||
case GL_MUS_VOL: return vol.getVol();
|
case GL_ADV_VOL: return vol.getVol();
|
||||||
case GL_MUS_LOW: return low.getVol();
|
case GL_ADV_LOW: return low.getVol();
|
||||||
case GL_MUS_HIGH: return high.getVol();
|
case GL_ADV_HIGH: return high.getVol();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -6,10 +6,11 @@
|
|||||||
#define GL_TYPE_STRIP 1
|
#define GL_TYPE_STRIP 1
|
||||||
#define GL_TYPE_ZIG 2
|
#define GL_TYPE_ZIG 2
|
||||||
#define GL_TYPE_PARAL 3
|
#define GL_TYPE_PARAL 3
|
||||||
#define GL_MUS_NONE 1
|
#define GL_ADV_NONE 1
|
||||||
#define GL_MUS_VOL 2
|
#define GL_ADV_VOL 2
|
||||||
#define GL_MUS_LOW 3
|
#define GL_ADV_LOW 3
|
||||||
#define GL_MUS_HIGH 4
|
#define GL_ADV_HIGH 4
|
||||||
|
#define GL_ADV_CLOCK 5
|
||||||
#define GL_REACT_BRI 1
|
#define GL_REACT_BRI 1
|
||||||
#define GL_REACT_SCL 2
|
#define GL_REACT_SCL 2
|
||||||
#define GL_REACT_LEN 3
|
#define GL_REACT_LEN 3
|
||||||
@@ -100,7 +101,7 @@ struct Preset {
|
|||||||
byte effect = 1; // тип эффекта (1,2...) ВЫЧЕСТЬ 1
|
byte effect = 1; // тип эффекта (1,2...) ВЫЧЕСТЬ 1
|
||||||
byte fadeBright = 0; // флаг на свою яркость (0/1)
|
byte fadeBright = 0; // флаг на свою яркость (0/1)
|
||||||
byte bright = 100; // своя яркость (0.. 255)
|
byte bright = 100; // своя яркость (0.. 255)
|
||||||
byte soundMode = 1; // тип звука (1,2...) ВЫЧЕСТЬ 1
|
byte advMode = 1; // дополнительно (1,2...) ВЫЧЕСТЬ 1
|
||||||
byte soundReact = 1; // реакция на звук (1,2...) ВЫЧЕСТЬ 1
|
byte soundReact = 1; // реакция на звук (1,2...) ВЫЧЕСТЬ 1
|
||||||
byte min = 0; // мин сигнал светомузыки (0.. 255)
|
byte min = 0; // мин сигнал светомузыки (0.. 255)
|
||||||
byte max = 0; // макс сигнал светомузыки (0.. 255)
|
byte max = 0; // макс сигнал светомузыки (0.. 255)
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
void effectsRoutine() {
|
void effectsRoutine() {
|
||||||
static timerMillis effTmr(30, true);
|
static timerMillis effTmr(30, true);
|
||||||
static byte prevEff = 255;
|
static byte prevEff = 255;
|
||||||
|
|
||||||
if (dawnTmr.running()) {
|
if (dawnTmr.running()) {
|
||||||
if (effTmr.isReady()) {
|
if (effTmr.isReady()) {
|
||||||
fill_solid(leds, MAX_LEDS, ColorFromPalette(HeatColors_p, dawnTmr.getLength8(), scaleFF(dawnTmr.getLength8(), dawn.bright), LINEARBLEND));
|
fill_solid(leds, MAX_LEDS, ColorFromPalette(HeatColors_p, dawnTmr.getLength8(), scaleFF(dawnTmr.getLength8(), dawn.bright), LINEARBLEND));
|
||||||
@@ -9,7 +9,7 @@ void effectsRoutine() {
|
|||||||
}
|
}
|
||||||
if (dawnTmr.isReady()) dawnTmr.stop();
|
if (dawnTmr.isReady()) dawnTmr.stop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfg.state && effTmr.isReady()) {
|
if (cfg.state && effTmr.isReady()) {
|
||||||
int thisLength = getLength();
|
int thisLength = getLength();
|
||||||
@@ -209,34 +209,37 @@ void effectsRoutine() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool musicMode() {
|
||||||
|
return ((cfg.adcMode == GL_ADC_MIC || cfg.adcMode == GL_ADC_BOTH) && (CUR_PRES.advMode > 1 && CUR_PRES.advMode <= 4));
|
||||||
|
}
|
||||||
|
|
||||||
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 (cfg.adcMode == GL_ADC_BRI || cfg.adcMode == GL_ADC_BOTH) { // ----> датчик света или оба
|
||||||
maxBr = constrain(phot.getFil(), cfg.minLight, cfg.maxLight);
|
maxBr = constrain(phot.getFil(), cfg.minLight, cfg.maxLight);
|
||||||
maxBr = map(maxBr, cfg.minLight, cfg.maxLight, cfg.minBright, cfg.maxBright);
|
if (cfg.minLight != cfg.maxLight)
|
||||||
} else if (cfg.adcMode > 2 && // ----> ацп мик
|
maxBr = map(maxBr, cfg.minLight, cfg.maxLight, cfg.minBright, cfg.maxBright);
|
||||||
CUR_PRES.soundMode > 1 && // светомузыка вкл
|
}
|
||||||
CUR_PRES.soundReact == GL_REACT_BRI) { // режим яркости
|
if (musicMode() && // светомузыка вкл
|
||||||
fadeBr = mapFF(getSoundVol(), CUR_PRES.min, CUR_PRES.max);
|
CUR_PRES.soundReact == GL_REACT_BRI) { // режим яркости
|
||||||
|
fadeBr = mapFF(getSoundVol(), CUR_PRES.min, CUR_PRES.max); // громкость в 0-255
|
||||||
}
|
}
|
||||||
return scaleFF(maxBr, fadeBr);
|
return scaleFF(maxBr, fadeBr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int getLength() {
|
int getLength() {
|
||||||
if (cfg.adcMode > 2 // ацп мик
|
if (musicMode() // светомузыка вкл
|
||||||
&& CUR_PRES.soundMode > 1 // светомузыка вкл
|
&& CUR_PRES.soundReact == GL_REACT_LEN // режим длины
|
||||||
&& CUR_PRES.soundReact == GL_REACT_LEN // режим длины
|
|
||||||
) return mapFF(getSoundVol(), 0, cfg.length);
|
) return mapFF(getSoundVol(), 0, cfg.length);
|
||||||
else return cfg.length;
|
else return cfg.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte getScale() {
|
byte getScale() {
|
||||||
if (cfg.adcMode > 2 // ацп мик
|
if (musicMode() // светомузыка вкл
|
||||||
&& CUR_PRES.soundMode > 1 // светомузыка вкл
|
&& CUR_PRES.soundReact == GL_REACT_SCL // режим масштаба
|
||||||
&& CUR_PRES.soundReact == GL_REACT_SCL // режим масштаба
|
|
||||||
) return mapFF(getSoundVol(), CUR_PRES.min, CUR_PRES.max);
|
) return mapFF(getSoundVol(), CUR_PRES.min, CUR_PRES.max);
|
||||||
else return CUR_PRES.scale;
|
else return CUR_PRES.scale;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user