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/oled/oled.cpp | 33 ++++++++++++++++++++++++ lib/oled/oled.h | 9 +++++++ lib/rgb/rgb.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/rgb/rgb.h | 19 ++++++++++++++ 4 files changed, 137 insertions(+) create mode 100644 lib/oled/oled.cpp create mode 100644 lib/oled/oled.h create mode 100644 lib/rgb/rgb.cpp create mode 100644 lib/rgb/rgb.h (limited to 'lib') diff --git a/lib/oled/oled.cpp b/lib/oled/oled.cpp new file mode 100644 index 0000000..0c433f2 --- /dev/null +++ b/lib/oled/oled.cpp @@ -0,0 +1,33 @@ +// #include +// #include +// #include +// #include +// #include "settings.h" +// #include "oled.h" + +// Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); + +// void oled_init() { +// Wire.begin(SDA_PIN, SCL_PIN); +// display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); +// display.clearDisplay(); +// display.display(); +// } + +// void oled_print(const String& text, int x, int y) { +// display.setTextSize(1); +// display.setTextColor(WHITE); +// display.setCursor(x, y); +// display.println(text); +// display.display(); +// } + +// void oled_clear() { +// display.clearDisplay(); +// display.display(); +// } + +// void oled_drawBox() { +// display.drawRect(0, 0, 128, 64, WHITE); +// display.display(); +// } diff --git a/lib/oled/oled.h b/lib/oled/oled.h new file mode 100644 index 0000000..e229dbe --- /dev/null +++ b/lib/oled/oled.h @@ -0,0 +1,9 @@ +// #pragma once +// #include +// #include "settings.h" + + +// void oled_init(); +// void oled_clear(); +// void oled_print(const String& text, int x, int y); +// void oled_drawBox(); 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); + } +} diff --git a/lib/rgb/rgb.h b/lib/rgb/rgb.h new file mode 100644 index 0000000..562e9dd --- /dev/null +++ b/lib/rgb/rgb.h @@ -0,0 +1,19 @@ +#pragma once + +#include "settings.h" +#include + +class RGB +{ +public: + RGB(); + void setColorRGB(uint8_t red, uint8_t green, uint8_t blue); + void fadeColor(uint8_t red, uint8_t green, uint8_t blue, int duration); + void blinkColor(uint8_t red, uint8_t green, uint8_t blue, int duration); + void breatheColor(uint8_t red, uint8_t green, uint8_t blue, int duration); + void rainbowCycle(int duration); + +private: + int scaleColor(uint8_t val); +}; + -- cgit v1.2.3