bug fix static in motor und speed

This commit is contained in:
2022-01-29 12:25:06 +01:00
parent 1265cfda5c
commit 9c4c82f8b3
18 changed files with 197 additions and 99 deletions
+8 -8
View File
@@ -29,24 +29,24 @@ void Speedometer::init(uint8_t pinA, uint8_t pinB, double diameter, uint16_t ste
this->isInit = true;
}
void Speedometer::loop() {
static uint32_t last_millis = 0;
uint16_t Speedometer::loop() {
uint32_t time = millis();
uint16_t elapsed_time = time - this->last_millis_loop;
//Cancel if delay is not reached
if (time - last_millis < delay) {
return;
if (elapsed_time < delay) {
return elapsed_time;
}
runSpeedometer();
last_millis = time;
this->last_millis_loop = time;
return elapsed_time;
}
void Speedometer::runSpeedometer() {
static uint32_t last_millis = 0;
uint32_t time = millis();
uint16_t elapsed_time = time - last_millis;
last_millis = time;
uint16_t elapsed_time = time - last_millis_calc;
last_millis_calc = time;
int16_t count = encoder.getCount();
this->addValToBuf(count);
+5 -1
View File
@@ -58,8 +58,9 @@ class Speedometer {
* functions returns immediately.
* @see runSpeedometer()
* @see DELAY_SPEEDOMETER
* @return time since the last call in Milliseconds
*/
void loop();
uint16_t loop();
/**
* @brief Noramly called repeatedly by loop() to calcluate new values.
@@ -115,6 +116,9 @@ class Speedometer {
uint8_t delay = DELAY_SPEEDOMETER;
int16_t *buf;
uint32_t last_millis_loop = 0;
uint32_t last_millis_calc = 0;
};
#endif // SPEEDOMETER_H