From fe73dbbf9b6864c2064ec8d002a8a1212fafb54a Mon Sep 17 00:00:00 2001 From: EnricoGuccii Date: Wed, 7 May 2025 13:02:37 +0200 Subject: file structure, rgb class --- lib/rgb/rgb.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 lib/rgb/rgb.cpp (limited to 'lib/rgb/rgb.cpp') diff --git a/lib/rgb/rgb.cpp b/lib/rgb/rgb.cpp new file mode 100644 index 0000000..a748006 --- /dev/null +++ b/lib/rgb/rgb.cpp @@ -0,0 +1,76 @@ +#include +#include "settings.h" +#include "rgb.h" + +int RGB::scaleColor(uint8_t val) +{ + return map(val, 0, 255, 0, 1023); +} + + +RGB::RGB() +{ + pinMode(RED_PIN, OUTPUT); + pinMode(GREEN_PIN, OUTPUT); + pinMode(BLUE_PIN, OUTPUT); +} + + +void RGB::setColorRGB(uint8_t red, uint8_t green, uint8_t blue) +{ + analogWrite(RED_PIN, scaleColor(red)); + analogWrite(GREEN_PIN, scaleColor(green)); + analogWrite(BLUE_PIN, scaleColor(blue)); +} + + +void RGB::fadeColor(uint8_t red, uint8_t green, uint8_t blue, int duration) +{ + for (int i = 0; i <= 255; i++) + { + setColorRGB(red * i / 255, green * i / 255, blue * i / 255); + delay(duration / 255); + } + for (int i = 255; i >= 0; i--) + { + setColorRGB(red * i / 255, green * i / 255, blue * i / 255); + delay(duration / 255); + } +} + + +void RGB::blinkColor(uint8_t red, uint8_t green, uint8_t blue, int duration) +{ + setColorRGB(red, green, blue); + delay(duration); + setColorRGB(0, 0, 0); + delay(duration); +} + + +void RGB::breatheColor(uint8_t red, uint8_t green, uint8_t blue, int duration) +{ + for (int i = 0; i <= 255; i++) + { + setColorRGB(red * i / 255, green * i / 255, blue * i / 255); + delay(duration / 255); + } + for (int i = 255; i >= 0; i--) + { + setColorRGB(red * i / 255, green * i / 255, blue * i / 255); + delay(duration / 255); + } +} + + +void RGB::rainbowCycle(int duration) +{ + for (int i = 0; i < 256; i++) + { + int red = sin(i * 0.024) * 127 + 128; + int green = sin(i * 0.024 + 2) * 127 + 128; + int blue = sin(i * 0.024 + 4) * 127 + 128; + setColorRGB(red, green, blue); + delay(duration / 256); + } +} -- cgit v1.2.3