diff --git a/TODO b/TODO deleted file mode 100644 index 69998eb..0000000 --- a/TODO +++ /dev/null @@ -1,3 +0,0 @@ -1. Add an "ease" option to the static mode - other mode to static: from 0 - static to static: depends on current brightness \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 0ef945f..e5b5fd1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,6 +59,7 @@ void setup() stairs->init(pwmDriver); _dln("Initializing WiFi"); + WiFi.mode(WIFI_STA); WiFi.hostname(WiFiHostname); WiFi.begin(WiFiSSID, WiFiPassword); diff --git a/src/modes/static.cpp b/src/modes/static.cpp index 26144bf..7398bf2 100644 --- a/src/modes/static.cpp +++ b/src/modes/static.cpp @@ -35,11 +35,14 @@ void StaticMode::tick(IStairs* stairs, uint32_t currentTime) if (this->easeState == None) return; - this->currentBrightness = (currentTime - this->easeStartTime) * ((this->parameters.brightness - this->easeStartBrightness) / this->parameters.easeTime); + uint32_t elapsedTime = currentTime - this->easeStartTime; + uint32_t diff = this->easeState == Up ? this->parameters.brightness - this->easeStartBrightness : this->easeStartBrightness - this->parameters.brightness; + uint32_t delta = (diff * elapsedTime) / this->parameters.easeTime; + + this->currentBrightness = this->easeState == Up ? this->easeStartBrightness + delta : this->easeStartBrightness - delta; - if ((this->easeState == Up && this->currentBrightness >= this->parameters.brightness) || - (this->easeState == Down && this->currentBrightness <= this->parameters.brightness)) + if (elapsedTime >= this->parameters.easeTime) { this->currentBrightness = this->parameters.brightness; this->easeState = None;