From 0463f10781a8fc4c4f1e9d885c222d60555d4ce2 Mon Sep 17 00:00:00 2001 From: Julien Cabillot Date: Mon, 24 Apr 2017 03:12:29 +0200 Subject: [PATCH] WIP : increase brightnes --- arduino/alarmclock/alarmclock.cpp | 22 +++++++++++++++------- arduino/alarmclock/alarmclock.exemple.h | 4 ++-- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/arduino/alarmclock/alarmclock.cpp b/arduino/alarmclock/alarmclock.cpp index 9389faa..2ef0882 100644 --- a/arduino/alarmclock/alarmclock.cpp +++ b/arduino/alarmclock/alarmclock.cpp @@ -8,7 +8,10 @@ #include "alarmclock.h" // LED -float brightness = LED_BRIGHTNESS_DEFAULT; +// Corresponds à un max brightness configurable via HA +int brightness = LED_BRIGHTNESS_DEFAULT; +// Utilisé pour définir le seuil actuel de brightness +int curbrightness = 0; int color = LED_COLOR_DEFAULT; CRGB leds[LED_NUM]; boolean ledState = false; @@ -116,6 +119,7 @@ void callbackMQTT(char* topic, byte* payload, unsigned int length) ledState = true; } else { ledState = false; + curbrightness = 0; ledBlackAll(); } mqttSendState(); @@ -188,20 +192,24 @@ void ledError() * Pour éviter un éclairage basique, on applique un breath qui permet * de faire respirer la couleur (brightness). */ -void ledFullColor() +void ledDisplay() { - // Source : http://sean.voisen.org/blog/2011/10/breathing-led-with-arduino/ - // Voic la version avec la gestion du speed, mais je ne suis pas convaincu - //float breath = (exp(sin(millis() / 2000.0 * map(speed, 0, 255, 50, 300)/100 * PI)) - 0.3678794) * 108.4; float breath = (exp(sin(millis() / 4000.0 * PI)) - 0.3678794) * 108.4; fill_solid(leds, LED_NUM, color); - FastLED.setBrightness(breath); + FastLED.setBrightness(map(breath, 0, 255, 0, curbrightness)); FastLED.show(); } void loop() { + // TODO : à voir s'il est plus interressant d'augmenter vite mais graduellement + // TODO : ou de manière moins fréquence mais en faisant un saut de palier. + // TODO : la solution peut aussi etre un mix des deux + EVERY_N_SECONDS(10) { + curbrightness++; + } + // MQTT testConnectMQTT(); client.loop(); @@ -210,6 +218,6 @@ void loop() { if (!ledState) { FastLED.delay(1000); } else { - ledFullColor(); + ledDisplay(); } } diff --git a/arduino/alarmclock/alarmclock.exemple.h b/arduino/alarmclock/alarmclock.exemple.h index 7f37bf0..b01479f 100644 --- a/arduino/alarmclock/alarmclock.exemple.h +++ b/arduino/alarmclock/alarmclock.exemple.h @@ -5,7 +5,7 @@ #define LED_PIN 5 // = D1 #define LED_CHIPSET WS2812B #define LED_COLOR_ORDER GRB -#define LED_BRIGHTNESS_DEFAULT 96 +#define LED_BRIGHTNESS_DEFAULT 0 #define LED_COLOR_DEFAULT CRGB::Red // WIFI @@ -39,4 +39,4 @@ void mqttSendBrightnessState(); void mqttSendColorState(); void ledBlackAll(); void ledError(); -void ledFullColor(); +void ledDisplay();