diff --git a/.gitignore b/.gitignore index 32e19cf..c5a5e60 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ .vscode/c_cpp_properties.json .vscode/launch.json .vscode/ipch -secrets.ini \ No newline at end of file +secrets.ini + +docs/output/* diff --git a/config.ini b/config.ini index c8e382c..ac3ca14 100644 --- a/config.ini +++ b/config.ini @@ -26,3 +26,5 @@ build_flags = -D PIXEL_PIN=4 -D PIXEL_COUNT=24 + + -D RESET_TIME=60000 diff --git a/include/Program.h b/include/Program.h index c49730f..2f47fb3 100644 --- a/include/Program.h +++ b/include/Program.h @@ -40,6 +40,16 @@ private: WiFiUDP* ntpUDP; NTPClient* timeClient; + /** + * @brief Time to reset the encoder menu + */ + unsigned long resetMillis; + + /** + * @brief true if the NTP is updated durring the cycle + */ + bool ntpUpdated; + /** * @brief Send time to discord * the start time is automaticly set to the current time diff --git a/lib/LedLib/scr/LedLib.cpp b/lib/LedLib/scr/LedLib.cpp index 4f17975..a23d26c 100644 --- a/lib/LedLib/scr/LedLib.cpp +++ b/lib/LedLib/scr/LedLib.cpp @@ -26,9 +26,10 @@ void LedLib::actLed(int nb, int start){ // Boucle dans les LEDs // Loop in LEDs - for (int i = start; i <= nb+start-1; i++) { + for (int i = start; i <= nb+start; i++) { int j = i; - if(j > 24){ + //TODO: géré le cas ou j > 24 + if(j >= 24){ j -= 24; } @@ -52,7 +53,7 @@ void LedLib::actLed(int nb, int start){ int LedLib::getledNB(){ return this->ledNb; } - +//FIXME: this function is broken void LedLib::okBlink(){ this->strip->clear(); for(int i = 0; i < 3; i++){ diff --git a/lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp b/lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp index 2b0edd4..130afb9 100644 --- a/lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp +++ b/lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp @@ -17,7 +17,7 @@ SwitchableEncodeur::SwitchableEncodeur(uint8_t pin1, uint8_t pin2, uint8_t pinSW this->menu = 0; this->nbMenu = nbMenu; pinMode(pinSW, INPUT_PULLUP); - attachInterrupt(digitalPinToInterrupt(pinSW), switchEncoder, RISING);//FIXME: maybe change to FALLING + attachInterrupt(digitalPinToInterrupt(pinSW), switchEncoder, RISING); this->oldPosition = -999; this->oldMenu = -999; } diff --git a/src/Program.cpp b/src/Program.cpp index 102fdb1..fa2a7a0 100644 --- a/src/Program.cpp +++ b/src/Program.cpp @@ -54,11 +54,57 @@ void Program::sendTime(String timeEnd){ void Program::loop() { if(this->encoder->update()){ + switch (this->encoder->getMenu()){ + case 1:{ + if(!this->ntpUpdated){ + this->timeClient->update(); + this->encoder->resetMenu(); + this->ntpUpdated = true; + } + int currentHour = this->timeClient->getHours(); + if(currentHour > 12){ + currentHour -= 12; + } + //TODO: debug this shit + int startLed = currentHour * 2; + startLed += this->timeClient->getMinutes()/30; + int encValue = this->encoder->getValue(); + Serial.println(startLed); + + this->ledLib->actLed(encValue+1, startLed); + break; + }case 2:{ + int finalEncValue = this->encoder->getValue(); + int finalHour = this->timeClient->getHours(); + int finalMinute = this->timeClient->getMinutes(); + + Serial.print("finalHour: "); + Serial.print(finalHour); + Serial.print("h"); + Serial.print(finalMinute); + Serial.print(" finalEncValue: "); + Serial.println(finalEncValue); + + // TODO: send time sur discord + //this->sendTime() + + this->ledLib->okBlink(); + this->ntpUpdated = false; + this->encoder->resetMenu(); + this->resetMillis = millis(); + break; + }} Serial.print(this->encoder->getValue()); - this->ledLib->actLed(this->encoder->getValue(), 5); Serial.print(" "); Serial.println(this->encoder->getMenu()); + //this->ledLib->actLed(this->encoder->getValue(), 5); } + if(this->resetMillis + RESET_TIME == millis()){ + this->encoder->resetMenu(); + this->resetMillis = millis(); + this->ntpUpdated = false; + } + // delay(1000); // this->timeClient->update();