bug fix static in motor und speed
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user