From 964cf5eedf3c23d77374ac0b0f1d7f617a069f0a Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Mon, 11 Mar 2024 21:14:42 +0000 Subject: [PATCH] G/S/C Unicorn: Fix get_brightness to use correct max value. Add a comment noting that 256 is the correct maximum brightness. --- libraries/cosmic_unicorn/cosmic_unicorn.cpp | 5 ++++- libraries/galactic_unicorn/galactic_unicorn.cpp | 5 ++++- libraries/stellar_unicorn/stellar_unicorn.cpp | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/libraries/cosmic_unicorn/cosmic_unicorn.cpp b/libraries/cosmic_unicorn/cosmic_unicorn.cpp index b7d16ab7..0dfec9c4 100644 --- a/libraries/cosmic_unicorn/cosmic_unicorn.cpp +++ b/libraries/cosmic_unicorn/cosmic_unicorn.cpp @@ -494,11 +494,14 @@ namespace pimoroni { void CosmicUnicorn::set_brightness(float value) { value = value < 0.0f ? 0.0f : value; value = value > 1.0f ? 1.0f : value; + // Max brightness is - in fact - 256 since it's applied with: + // result = (channel * brightness) >> 8 + // eg: (255 * 256) >> 8 == 255 this->brightness = floor(value * 256.0f); } float CosmicUnicorn::get_brightness() { - return this->brightness / 255.0f; + return this->brightness / 256.0f; } void CosmicUnicorn::adjust_brightness(float delta) { diff --git a/libraries/galactic_unicorn/galactic_unicorn.cpp b/libraries/galactic_unicorn/galactic_unicorn.cpp index 44defb02..9bfc8465 100644 --- a/libraries/galactic_unicorn/galactic_unicorn.cpp +++ b/libraries/galactic_unicorn/galactic_unicorn.cpp @@ -488,11 +488,14 @@ namespace pimoroni { void GalacticUnicorn::set_brightness(float value) { value = value < 0.0f ? 0.0f : value; value = value > 1.0f ? 1.0f : value; + // Max brightness is - in fact - 256 since it's applied with: + // result = (channel * brightness) >> 8 + // eg: (255 * 256) >> 8 == 255 this->brightness = floor(value * 256.0f); } float GalacticUnicorn::get_brightness() { - return this->brightness / 255.0f; + return this->brightness / 256.0f; } void GalacticUnicorn::adjust_brightness(float delta) { diff --git a/libraries/stellar_unicorn/stellar_unicorn.cpp b/libraries/stellar_unicorn/stellar_unicorn.cpp index f71de50b..95e93229 100644 --- a/libraries/stellar_unicorn/stellar_unicorn.cpp +++ b/libraries/stellar_unicorn/stellar_unicorn.cpp @@ -485,11 +485,14 @@ namespace pimoroni { void StellarUnicorn::set_brightness(float value) { value = value < 0.0f ? 0.0f : value; value = value > 1.0f ? 1.0f : value; + // Max brightness is - in fact - 256 since it's applied with: + // result = (channel * brightness) >> 8 + // eg: (255 * 256) >> 8 == 255 this->brightness = floor(value * 256.0f); } float StellarUnicorn::get_brightness() { - return this->brightness / 255.0f; + return this->brightness / 256.0f; } void StellarUnicorn::adjust_brightness(float delta) {