From ccdc3c465ae42f377a335d1852d9d98010f3d705 Mon Sep 17 00:00:00 2001 From: Oleg Date: Sun, 7 Jan 2018 22:58:49 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20count=5Fseconds=5Ffor=5Foff=5Fled?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен параметр количества секунд (примерно) по проществии которого необходимо отключить ленту, используется при потери связи устройства с компьютером, например при отключении компа, или отключении подсветки (иногда лента продолжала светить после отключения подсветки) --- Gyver_Ambilight/Gyver_Ambilight.ino | 46 ++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/Gyver_Ambilight/Gyver_Ambilight.ino b/Gyver_Ambilight/Gyver_Ambilight.ino index d83b7bb..1de9a59 100644 --- a/Gyver_Ambilight/Gyver_Ambilight.ino +++ b/Gyver_Ambilight/Gyver_Ambilight.ino @@ -4,11 +4,11 @@ 2017 */ //----------------------НАСТРОЙКИ----------------------- -#define NUM_LEDS 98 // число светодиодов в ленте -#define DI_PIN 13 // пин, к которому подключена лента +#define NUM_LEDS 100 // число светодиодов в ленте +#define DI_PIN 2 // пин, к которому подключена лента #define start_flashes 0 // проверка цветов при запуске (1 - включить, 0 - выключить) - +#define count_seconds_for_off_led 60 //Количество секунд по прошествии которого лента выключится (всем пикселям будет задан ) - таймер идет если нет связи с компом (например отключена подсветка) #define auto_bright 0 // автоматическая подстройка яркости от уровня внешнего освещения (1 - включить, 0 - выключить) #define max_bright 255 // максимальная яркость (0 - 255) #define min_bright 50 // минимальная яркость (0 - 255) @@ -17,11 +17,28 @@ //----------------------НАСТРОЙКИ----------------------- int new_bright; -unsigned long bright_timer; +unsigned long bright_timer, off_timer; #define serialRate 115200 // скорость связи с ПК uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i; // кодовое слово Ada для связи #include CRGB leds[NUM_LEDS]; // создаём ленту +int offIndx = 0; + +void switchOffLeds(){ + LEDS.showColor(CRGB(0, 0, 0)); //Ставим черный цвет =) +} + +void increaseCountForOff(){ + if (millis() - off_timer > 1000){ + off_timer=millis(); + if (offIndx >-1 && offIndx < count_seconds_for_off_led) { + offIndx++; + } else { + offIndx = -1; + switchOffLeds(); + } + } +} void setup() { @@ -37,12 +54,13 @@ void setup() delay(500); LEDS.showColor(CRGB(0, 0, 0)); } - + off_timer = millis(); Serial.begin(serialRate); Serial.print("Ada\n"); // Связаться с компом } void loop() { + if (auto_bright) { // если включена адаптивная яркость if (millis() - bright_timer > 100) { // каждые 100 мс bright_timer = millis(); // сброить таймер @@ -53,37 +71,37 @@ void loop() { } for (i = 0; i < sizeof prefix; ++i) { -waitLoop: while (!Serial.available()) ;; +waitLoop: while (!Serial.available()) increaseCountForOff(); if (prefix[i] == Serial.read()) continue; i = 0; goto waitLoop; } - while (!Serial.available()) ;; + while (!Serial.available()) increaseCountForOff(); hi = Serial.read(); - while (!Serial.available()) ;; + while (!Serial.available()) increaseCountForOff(); lo = Serial.read(); - while (!Serial.available()) ;; + while (!Serial.available()) increaseCountForOff(); chk = Serial.read(); if (chk != (hi ^ lo ^ 0x55)) { i = 0; goto waitLoop; } - + offIndx = 0; memset(leds, 0, NUM_LEDS * sizeof(struct CRGB)); for (uint8_t i = 0; i < NUM_LEDS; i++) { byte r, g, b; // читаем данные для каждого цвета - while (!Serial.available()); + while (!Serial.available()) increaseCountForOff(); r = Serial.read(); - while (!Serial.available()); + while (!Serial.available()) increaseCountForOff(); g = Serial.read(); - while (!Serial.available()); + while (!Serial.available()) increaseCountForOff(); b = Serial.read(); leds[i].r = r; leds[i].g = g; leds[i].b = b; } FastLED.show(); // записываем цвета в ленту -} +} \ No newline at end of file From ecb0289ea01d69821680d2c9add782d3ab65024c Mon Sep 17 00:00:00 2001 From: Oleg Date: Sun, 7 Jan 2018 23:43:37 +0300 Subject: [PATCH 2/2] restore default settings and change readme --- Gyver_Ambilight/Gyver_Ambilight.ino | 6 +++--- README.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gyver_Ambilight/Gyver_Ambilight.ino b/Gyver_Ambilight/Gyver_Ambilight.ino index 1de9a59..a12aa65 100644 --- a/Gyver_Ambilight/Gyver_Ambilight.ino +++ b/Gyver_Ambilight/Gyver_Ambilight.ino @@ -4,11 +4,11 @@ 2017 */ //----------------------НАСТРОЙКИ----------------------- -#define NUM_LEDS 100 // число светодиодов в ленте -#define DI_PIN 2 // пин, к которому подключена лента +#define NUM_LEDS 98 // число светодиодов в ленте +#define DI_PIN 13 // пин, к которому подключена лента #define start_flashes 0 // проверка цветов при запуске (1 - включить, 0 - выключить) -#define count_seconds_for_off_led 60 //Количество секунд по прошествии которого лента выключится (всем пикселям будет задан ) - таймер идет если нет связи с компом (например отключена подсветка) +#define count_seconds_for_off_led 60 //Количество секунд по прошествии которого лента выключится (всем пикселям будет задан черный цвет ) - таймер идет если нет связи с компом (например отключена подсветка или выключен компьютер) #define auto_bright 0 // автоматическая подстройка яркости от уровня внешнего освещения (1 - включить, 0 - выключить) #define max_bright 255 // максимальная яркость (0 - 255) #define min_bright 50 // минимальная яркость (0 - 255) diff --git a/README.md b/README.md index 5b4ce3b..349e54a 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ #define DI_PIN 13 // пин, к которому подключена лента #define start_flashes 0 // проверка цветов при запуске (1 - включить, 0 - выключить) - + #define count_seconds_for_off_led 60 //Количество секунд по прошествии которого лента выключится (всем пикселям будет задан черный цвет ) - таймер идет если нет связи с компом (например отключена подсветка или выключен компьютер) #define auto_bright 0 // автоматическая подстройка яркости от уровня внешнего освещения (1 - включить, 0 - выключить) #define max_bright 255 // максимальная яркость (0 - 255) #define min_bright 50 // минимальная яркость (0 - 255)