diff --git a/src/LED.cpp b/src/LED.cpp index 3b09dbe..51561d2 100644 --- a/src/LED.cpp +++ b/src/LED.cpp @@ -54,7 +54,6 @@ public: } void loop() { - float multiplier = getOutputMultiplier(); - _output->writeFraction(1 - multiplier); + _output->writeFraction(getOutputMultiplier()); } }; diff --git a/src/LEDOutput.cpp b/src/LEDOutput.cpp index fe4a0ae..a9b5f34 100644 --- a/src/LEDOutput.cpp +++ b/src/LEDOutput.cpp @@ -6,10 +6,12 @@ class LEDOutput { unsigned int _channel; + bool _invert; - public: - LEDOutput(unsigned int channel) { +public: + LEDOutput(unsigned int channel, bool invert = false) { _channel = channel; + _invert = invert; ledcSetup(channel, LED_OUTPUT_FREQUENCY, LED_OUTPUT_RESOLUTION); } @@ -17,6 +19,9 @@ class LEDOutput { ledcAttachPin(pin, _channel); } void writeFraction(float fraction){ - ledcWrite(_channel, fraction * LED_OUTPUT_PWM_RANGE); + auto value = fraction * LED_OUTPUT_PWM_RANGE; + if (_invert) + value = LED_OUTPUT_PWM_RANGE - value; + ledcWrite(_channel, value); } }; diff --git a/src/main.cpp b/src/main.cpp index 23e43d6..68d2909 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -32,7 +32,7 @@ class BluetoothCallback : public BLECharacteristicCallbacks { }; -LEDOutput _ledOutput(0); +LEDOutput _ledOutput(0, true); LED _led(&_ledOutput, FADE_IN_DURATION, FADE_OUT_DURATION); void toggle(){