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