|
|
|
@ -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(); |
|
|
|
} |
|
|
|
} |