feat: pitch PID regulator, MPU and LPS modified
This commit is contained in:
37
src/Sensors/RangingSensor.cpp
Normal file → Executable file
37
src/Sensors/RangingSensor.cpp
Normal file → Executable file
@@ -5,39 +5,10 @@
|
||||
#include "RangingSensor.hpp"
|
||||
#include "esp_log.h"
|
||||
|
||||
RangingSensor::RangingSensor(TwoWire &i2c) {
|
||||
_sensor = VL53L0X();
|
||||
_sensor.setBus(&i2c);
|
||||
if (_sensor.init()) {
|
||||
_sensor.setMeasurementTimingBudget(20000);
|
||||
_sensor.setTimeout(25);
|
||||
ESP_LOGI(_tag, "Sensor initialized");
|
||||
} else {
|
||||
ESP_LOGE(_tag, "Failed to initialize RangingSensor!");
|
||||
assert(false);
|
||||
}
|
||||
_sensor.startContinuous(10);
|
||||
}
|
||||
RangingSensor::RangingSensor() {}
|
||||
|
||||
void RangingSensor::startFlight() {
|
||||
//_start_distance = _distance;
|
||||
}
|
||||
void RangingSensor::startFlight() {}
|
||||
|
||||
void RangingSensor::tick() {
|
||||
_distance = (uint32_t) round(runMiddleArifm((float) _sensor.readRangeContinuousMillimeters())) / 10;
|
||||
}
|
||||
void RangingSensor::tick() {}
|
||||
|
||||
uint32_t RangingSensor::getDistance() {
|
||||
return _distance - _start_distance;
|
||||
}
|
||||
|
||||
float RangingSensor::runMiddleArifm(float newVal) {
|
||||
static int t = 0;
|
||||
static float vals[_MID_ARITM_WINDOW];
|
||||
static float average = 0;
|
||||
if (++t >= _MID_ARITM_WINDOW) t = 0; // перемотка t
|
||||
average -= vals[t]; // вычитаем старое
|
||||
average += newVal; // прибавляем новое
|
||||
vals[t] = newVal; // запоминаем в массив
|
||||
return ((float) average / _MID_ARITM_WINDOW);
|
||||
}
|
||||
uint32_t RangingSensor::getDistance() { return 0; }
|
||||
|
||||
Reference in New Issue
Block a user