Files
GyverLamp2/firmware/GyverLamp2_v0.7b/GyverLamp2_v0.7b.ino
2021-02-04 16:32:12 +03:00

106 lines
4.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// LOLIN(WEMOS) D1 R2 & mini
// ESP core 2.7.4+ http://arduino.esp8266.com/stable/package_esp8266com_index.json
// FastLED 3.4.0+ https://github.com/FastLED/FastLED/releases
// ---------- Настройки -----------
#define MAX_PRESETS 20 // макс количество режимов (не более 30)
#define GL_KEY "GL" // ключ сети
// ------------ Кнопка -------------
#define BTN_PIN 4 // пин кнопки GPIO4 (D2). Или 0 для схемы с ESP-01 !!
#define USE_BTN 1 // 1 использовать кнопку, 0 нет
// ------------ Лента -------------
#define STRIP_PIN 2 // пин ленты GPIO2 (D4)
#define MAX_LEDS 512 // макс. светодиодов
#define STRIP_CHIP WS2812 // чип ленты
#define STRIP_COLOR GRB // порядок цветов в ленте
#define STRIP_VOLT 5 // напряжение ленты, V
/*
WS2811, GBR, 12V
WS2812, GRB, 5V
WS2813, GRB, 5V
WS2815, GRB, 12V
WS2818, RGB, 12V
*/
// ------------ WiFi AP ------------
const char AP_NameChar[] = "GyverLamp2";
const char WiFiPassword[] = "12345678";
// ------------ Прочее -------------
#define MIC_VCC D6 // питание микрофона
#define PHOT_VCC D5 // питание фоторезистора
#define EE_TOUT 303000 // таймаут сохранения епром после изменения, мс
#define DEBUG_SERIAL // закомментируй чтобы выключить отладку (скорость 115200)
#define EE_KEY 40 // ключ сброса WiFi (измени для сброса всех настроек)
#define NTP_UPD_PRD 5 // период обновления времени с NTP сервера, минут
// ---------- БИБЛИОТЕКИ -----------
#include "data.h" // данные
#include "Time.h" // часы
#include "TimeRandom.h" // случайные числа по времени
#include "FastRandom.h" // быстрый рандом
#include "Button.h" // библа кнопки
#include "palettes.h" // палитры
#include "NTPClient-Gyver.h" // сервер времени (модиф)
#include "timerMillis.h" // таймер миллис
#include "VolAnalyzer.h" // анализатор громкости
#include "FFT_C.h" // фурье
#include <FastLED.h> // лента
#include <ESP8266WiFi.h> // базовая либа есп
#include <WiFiUdp.h> // общение по UDP
#include <EEPROM.h> // епром
#include "ESP8266httpUpdate.h" // OTA
// ------------------- ДАТА --------------------
Config cfg;
Preset preset[MAX_PRESETS];
Dawn dawn;
WiFiServer server(80);
WiFiUDP Udp;
WiFiUDP ntpUDP;
NTPClient ntp(ntpUDP);
CRGB leds[MAX_LEDS];
Time now;
Button btn(BTN_PIN);
timerMillis EEtmr(EE_TOUT), turnoffTmr;
TimeRandom trnd;
VolAnalyzer vol(A0), low, high;
FastFilter phot;
byte btnClicks = 0, brTicks = 0;
unsigned char matrixValue[11][16];
bool gotNTP = false;
// ------------------- SETUP --------------------
void setup() {
memset(matrixValue, 0, sizeof(matrixValue));
#ifdef DEBUG_SERIAL
Serial.begin(115200);
DEBUGLN();
#endif
EEPROM.begin(512); // старт епром
startStrip(); // показываем РГБ
btn.setLevel(digitalRead(BTN_PIN)); // смотрим что за кнопка
EE_startup(); // читаем епром
checkGroup(); // показываем или меняем адрес
checkButton(); // проверяем кнопку на удержание
startWiFi(); // старт вайфай
setupTime(); // выставляем время
setupADC(); // настраиваем анализ
}
void loop() {
timeTicker(); // обновляем время
yield();
parsing(); // ловим данные
yield();
checkEEupdate(); // сохраняем епром
presetRotation(); // смена режимов
effectsRoutine(); // мигаем
yield();
button(); // проверяем кнопку
checkAnalog(); // чтение звука и датчика
}