diff --git a/firmware/GyverLamp_v1.4/GyverLamp_v1.4.ino b/firmware/GyverLamp_v1.4/GyverLamp_v1.4.ino index cd60951..7c9613f 100644 --- a/firmware/GyverLamp_v1.4/GyverLamp_v1.4.ino +++ b/firmware/GyverLamp_v1.4/GyverLamp_v1.4.ino @@ -11,6 +11,18 @@ Версия 1.4: - Исправлен баг при смене режимов - Исправлены тормоза в режиме точки доступа + --- 08.07.2019 + - Исправлены параметры и процесс подключения к WiFi сети (таймаут 7 секунд) и развёртываия WiFi точки доступа (параметры имени/пароля) + - Добавлено "#define USE_NTP" - позволяет запретить обращаться в интернет + - Добавлено "#define ESP_USE_BUTTON - позволяет собирать лампу без физической кнопки, иначе яркость эффектов самопроизвольно растёт до максимальной + - Переработаны параметры IP адресов, STA_STATIC_IP теперь пустой по умолчанию - избавляет от путаницы с IP адресами из неправильных диапазонов + - Добавлено "#define GENERAL_DEBUG" - выводит в Serial некоторые отладочные сообщения + - Добавлено "#define WIFIMAN_DEBUG (true)" - выводит в Serial отладочные сообщения библиотеки WiFiManager + - Добавлена таблица с тест кейсами + - Форматирование кода, комментарии + --- 11.07.2019 + - Исправлена ошибка невыключения матрицы после срабатывания будильника, если до будильника матрица была выключенной + - Дополнена таблица с тест кейсами */ // Ссылка для менеджера плат: @@ -19,9 +31,9 @@ // ============= НАСТРОЙКИ ============= // --- ВРЕМЯ --------------------------- -#define USE_NTP // закомментировать или удалить эту строку, если не нужно, чтобы устройство не лезло в интернет +#define USE_NTP // закомментировать или удалить эту строку, если нужно, чтобы устройство не лезло в интернет #define GMT (3) // часовой пояс (москва 3) -#define NTP_ADDRESS "europe.pool.ntp.org" // сервер времени +#define NTP_ADDRESS ("europe.pool.ntp.org") // сервер времени // --- РАССВЕТ ------------------------- #define DAWN_BRIGHT (200U) // максимальная яркость рассвета (0-255) diff --git a/firmware/GyverLamp_v1.4/button.ino b/firmware/GyverLamp_v1.4/button.ino index ba5d4ca..4f1df84 100644 --- a/firmware/GyverLamp_v1.4/button.ino +++ b/firmware/GyverLamp_v1.4/button.ino @@ -16,16 +16,8 @@ void buttonTick() } else { - if (ONflag) - { - ONflag = false; - changePower(); - } - else - { - ONflag = true; - changePower(); - } + ONflag = !ONflag; + changePower(); } } diff --git a/firmware/GyverLamp_v1.4/effectTicker.ino b/firmware/GyverLamp_v1.4/effectTicker.ino index da60dbd..bb3bbdf 100644 --- a/firmware/GyverLamp_v1.4/effectTicker.ino +++ b/firmware/GyverLamp_v1.4/effectTicker.ino @@ -4,7 +4,7 @@ void effectsTick() { if (!dawnFlag) { - if (ONflag && millis() - effTimer >= ((currentMode < 5 || currentMode > 13) ? modes[currentMode].speed : 50) ) + if (ONflag && (millis() - effTimer >= ((currentMode < 5 || currentMode > 13) ? modes[currentMode].speed : 50))) { effTimer = millis(); switch (currentMode) diff --git a/firmware/GyverLamp_v1.4/effects.ino b/firmware/GyverLamp_v1.4/effects.ino index 0975fbf..655499b 100644 --- a/firmware/GyverLamp_v1.4/effects.ino +++ b/firmware/GyverLamp_v1.4/effects.ino @@ -3,10 +3,10 @@ // ------------- конфетти -------------- void sparklesRoutine() { - for (byte i = 0; i < modes[0].scale; i++) + for (uint8_t i = 0; i < modes[0].scale; i++) { - byte x = random(0, WIDTH); - byte y = random(0, HEIGHT); + uint8_t x = random(0, WIDTH); + uint8_t y = random(0, HEIGHT); if (getPixColorXY(x, y) == 0) leds[getPixelNumber(x, y)] = CHSV(random(0, 255), 255, 255); } @@ -14,18 +14,18 @@ void sparklesRoutine() } // функция плавного угасания цвета для всех пикселей -void fader(byte step) +void fader(uint8_t step) { - for (byte i = 0; i < WIDTH; i++) + for (uint8_t i = 0; i < WIDTH; i++) { - for (byte j = 0; j < HEIGHT; j++) + for (uint8_t j = 0; j < HEIGHT; j++) { fadePixel(i, j, step); } } } -void fadePixel(byte i, byte j, byte step) // новый фейдер +void fadePixel(uint8_t i, uint8_t j, uint8_t step) // новый фейдер { int32_t pixelNum = getPixelNumber(i, j); if (getPixColor(pixelNum) == 0) return; @@ -180,15 +180,15 @@ void drawFrame(int32_t pcnt) } } -byte hue; +uint8_t hue; // ------------- радуга ---------------- void rainbowVertical() { hue += 2; - for (byte j = 0; j < HEIGHT; j++) + for (uint8_t j = 0; j < HEIGHT; j++) { - CHSV thisColor = CHSV((byte)(hue + j * modes[2].scale), 255, 255); - for (byte i = 0; i < WIDTH; i++) + CHSV thisColor = CHSV((uint8_t)(hue + j * modes[2].scale), 255, 255); + for (uint8_t i = 0; i < WIDTH; i++) drawPixelXY(i, j, thisColor); } } @@ -196,10 +196,10 @@ void rainbowVertical() void rainbowHorizontal() { hue += 2; - for (byte i = 0; i < WIDTH; i++) + for (uint8_t i = 0; i < WIDTH; i++) { - CHSV thisColor = CHSV((byte)(hue + i * modes[3].scale), 255, 255); - for (byte j = 0; j < HEIGHT; j++) + CHSV thisColor = CHSV((uint8_t)(hue + i * modes[3].scale), 255, 255); + for (uint8_t j = 0; j < HEIGHT; j++) drawPixelXY(i, j, thisColor); //leds[getPixelNumber(i, j)] = thisColor; } } @@ -227,19 +227,19 @@ void colorRoutine() void snowRoutine() { // сдвигаем всё вниз - for (byte x = 0; x < WIDTH; x++) + for (uint8_t x = 0; x < WIDTH; x++) { - for (byte y = 0; y < HEIGHT - 1; y++) + for (uint8_t y = 0; y < HEIGHT - 1; y++) { drawPixelXY(x, y, getPixColorXY(x, y + 1)); } } - for (byte x = 0; x < WIDTH; x++) + for (uint8_t x = 0; x < WIDTH; x++) { // заполняем случайно верхнюю строку // а также не даём двум блокам по вертикали вместе быть - if (getPixColorXY(x, HEIGHT - 2) == 0 && (random(0, modes[15].scale) == 0)) + if (getPixColorXY(x, HEIGHT - 2) == 0 && (random(0, 100 - modes[15].scale) == 0)) drawPixelXY(x, HEIGHT - 1, 0xE0FFFF - 0x101010 * random(0, 4)); else drawPixelXY(x, HEIGHT - 1, 0x000000); @@ -249,12 +249,12 @@ void snowRoutine() // ------------- матрица --------------- void matrixRoutine() { - for (byte x = 0; x < WIDTH; x++) + for (uint8_t x = 0; x < WIDTH; x++) { // заполняем случайно верхнюю строку uint32_t thisColor = getPixColorXY(x, HEIGHT - 1); if (thisColor == 0) - drawPixelXY(x, HEIGHT - 1, 0x00FF00 * (random(0, modes[16].scale) == 0)); + drawPixelXY(x, HEIGHT - 1, 0x00FF00 * (random(0, 100 - modes[16].scale) == 0)); else if (thisColor < 0x002000) drawPixelXY(x, HEIGHT - 1, 0); else @@ -262,9 +262,9 @@ void matrixRoutine() } // сдвигаем всё вниз - for (byte x = 0; x < WIDTH; x++) + for (uint8_t x = 0; x < WIDTH; x++) { - for (byte y = 0; y < HEIGHT - 1; y++) + for (uint8_t y = 0; y < HEIGHT - 1; y++) { drawPixelXY(x, y, getPixColorXY(x, y + 1)); } @@ -276,7 +276,7 @@ void matrixRoutine() int32_t lightersPos[2][LIGHTERS_AM]; int8_t lightersSpeed[2][LIGHTERS_AM]; CHSV lightersColor[LIGHTERS_AM]; -byte loopCounter; +uint8_t loopCounter; int32_t angle[LIGHTERS_AM]; int32_t speedV[LIGHTERS_AM]; @@ -288,7 +288,7 @@ void lightersRoutine() { loadingFlag = false; randomSeed(millis()); - for (byte i = 0; i < LIGHTERS_AM; i++) + for (uint8_t i = 0; i < LIGHTERS_AM; i++) { lightersPos[0][i] = random(0, WIDTH * 10); lightersPos[1][i] = random(0, HEIGHT * 10); @@ -299,7 +299,7 @@ void lightersRoutine() } FastLED.clear(); if (++loopCounter > 20) loopCounter = 0; - for (byte i = 0; i < modes[17].scale; i++) + for (uint8_t i = 0; i < modes[17].scale; i++) { if (loopCounter == 0) // меняем скорость каждые 255 отрисовок { @@ -336,7 +336,7 @@ void lightersRoutine() { loadingFlag = false; randomSeed(millis()); - for (byte i = 0; i < LIGHTERS_AM; i++) + for (uint8_t i = 0; i < LIGHTERS_AM; i++) { lightersPos[0][i] = random(0, WIDTH * 10); lightersPos[1][i] = random(0, HEIGHT * 10); @@ -351,7 +351,7 @@ void lightersRoutine() FastLED.clear(); if (++loopCounter > 20) loopCounter = 0; - for (byte i = 0; i < modes[17].scale; i++) + for (uint8_t i = 0; i < modes[17].scale; i++) { if (loopCounter == 0) // меняем скорость каждые 255 отрисовок { diff --git a/firmware/GyverLamp_v1.4/noiseEffects.ino b/firmware/GyverLamp_v1.4/noiseEffects.ino index 46303b6..ae8ebc6 100644 --- a/firmware/GyverLamp_v1.4/noiseEffects.ino +++ b/firmware/GyverLamp_v1.4/noiseEffects.ino @@ -167,7 +167,7 @@ void lavaNoise() void fillNoiseLED() { uint8_t dataSmoothing = 0; - if ( speed < 50) + if (speed < 50) { dataSmoothing = 200 - (speed * 4); } diff --git a/firmware/GyverLamp_v1.4/parsing.ino b/firmware/GyverLamp_v1.4/parsing.ino index 49325ad..f427d10 100644 --- a/firmware/GyverLamp_v1.4/parsing.ino +++ b/firmware/GyverLamp_v1.4/parsing.ino @@ -45,7 +45,7 @@ void parseUDP() Serial.printf("New brightness value: %d\n", inputBuffer.substring(3).toInt()); #endif - modes[currentMode].brightness = constrain(inputBuffer.substring(3).toInt(), 0, 255); + modes[currentMode].brightness = constrain(inputBuffer.substring(3).toInt(), 1, 255); FastLED.setBrightness(modes[currentMode].brightness); settChanged = true; eepromTimer = millis(); diff --git a/firmware/GyverLamp_v1.4/time.ino b/firmware/GyverLamp_v1.4/time.ino index 30ffac8..adf80db 100644 --- a/firmware/GyverLamp_v1.4/time.ino +++ b/firmware/GyverLamp_v1.4/time.ino @@ -16,7 +16,7 @@ void timeTick() thisTime >= (alarm[thisDay].time - dawnOffsets[dawnMode]) && // позже начала thisTime < (alarm[thisDay].time + DAWN_TIMEOUT)) // раньше конца + минута { - if (!manualOff) + if (!manualOff) // будильник не был выключен вручную (из приложения или кнопкой) { // величина рассвета 0-255 int32_t dawnPosition = 255 * ((float)(thisTime - (alarm[thisDay].time - dawnOffsets[dawnMode])) / dawnOffsets[dawnMode]); @@ -26,6 +26,7 @@ void timeTick() map(dawnPosition, 0, 255, 10, DAWN_BRIGHT)); fill_solid(leds, NUM_LEDS, dawnColor); FastLED.setBrightness(255); + delay(1); FastLED.show(); dawnFlag = true; } @@ -36,7 +37,7 @@ void timeTick() { dawnFlag = false; manualOff = false; - FastLED.setBrightness(modes[currentMode].brightness); + changePower(); // выключение матрицы или установка яркости текущего эффекта в засисимости от того, была ли включена лампа до срабатывания будильника } } } diff --git a/testing/Testing_v1.4.xlsx b/testing/Testing_v1.4.xlsx index 6c99b37..865dab1 100644 Binary files a/testing/Testing_v1.4.xlsx and b/testing/Testing_v1.4.xlsx differ