From 17d862049e863ec6ddb3a6cc742adf0b067f10e7 Mon Sep 17 00:00:00 2001 From: Ronald Schaten Date: Wed, 27 Apr 2016 21:33:58 +0200 Subject: [PATCH] refactor function to set led --- things/DeviceLed.cpp | 30 ++++++++++++------------------ things/DeviceLed.h | 1 + 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/things/DeviceLed.cpp b/things/DeviceLed.cpp index a1caade..69b453c 100644 --- a/things/DeviceLed.cpp +++ b/things/DeviceLed.cpp @@ -1,25 +1,25 @@ #include "DeviceLed.h" +void DeviceLed::setLed(int red, int green, int blue) { + analogWrite(pinRed, red); + analogWrite(pinGreen, green); + analogWrite(pinBlue, blue); +} + void DeviceLed::deviceSetup() { pinMode(pinRed, OUTPUT); pinMode(pinGreen, OUTPUT); pinMode(pinBlue, OUTPUT); - analogWrite(pinRed, led_red); - analogWrite(pinGreen, led_green); - analogWrite(pinBlue, led_blue); + setLed(led_red, led_green, led_blue); } bool DeviceLed::ledOnHandler(String value) { if (value == "true") { - analogWrite(pinRed, led_red); - analogWrite(pinGreen, led_green); - analogWrite(pinBlue, led_blue); + setLed(led_red, led_green, led_blue); Homie.setNodeProperty(ledNode, "on", "true"); Serial.println("led is on"); } else if (value == "false") { - analogWrite(pinRed, 0); - analogWrite(pinGreen, 0); - analogWrite(pinBlue, 0); + setLed(0, 0, 0); Homie.setNodeProperty(ledNode, "on", "false"); Serial.println("led is off"); } else { @@ -34,16 +34,14 @@ bool DeviceLed::ledColorHandler(String message) { if (json_in.success()) { if (json_in.containsKey("red")) { led_red = json_in["red"]; - analogWrite(pinRed, led_red); } if (json_in.containsKey("green")) { led_green = json_in["green"]; - analogWrite(pinGreen, led_green); } if (json_in.containsKey("blue")) { led_blue = json_in["blue"]; - analogWrite(pinBlue, led_blue); } + setLed(led_red, led_green, led_blue); } else { Serial.println("parsing of JSON failed"); } @@ -109,20 +107,16 @@ void DeviceLed::deviceLoop() { float progress = 1.0 * (millis() - fade_start) / (fade_end - fade_start); if ((int)(progress * 100) != (int)(progress_last * 100)) { led_red = fade_from_red + (fade_to_red - fade_from_red) * progress; - analogWrite(pinRed, led_red); led_green = fade_from_green + (fade_to_green - fade_from_green) * progress; - analogWrite(pinGreen, led_green); led_blue = fade_from_blue + (fade_to_blue - fade_from_blue) * progress; - analogWrite(pinBlue, led_blue); + setLed(led_red, led_green, led_blue); progress_last = progress; } } else { led_red = fade_to_red; - analogWrite(pinRed, led_red); led_green = fade_to_green; - analogWrite(pinGreen, led_green); led_blue = fade_to_blue; - analogWrite(pinBlue, led_blue); + setLed(led_red, led_green, led_blue); fading = false; } } diff --git a/things/DeviceLed.h b/things/DeviceLed.h index e6be25d..21f9cc0 100644 --- a/things/DeviceLed.h +++ b/things/DeviceLed.h @@ -27,6 +27,7 @@ class DeviceLed : public Device { unsigned long fade_start = 0; unsigned long fade_end = 0; float progress_last = 0; + void setLed(int red, int green, int blue); bool ledOnHandler(String value); bool ledColorHandler(String message); bool ledFadeHandler(String message);