feat: pitch PID regulator, MPU and LPS modified

This commit is contained in:
2024-10-29 09:17:33 +07:00
parent 0cb666c860
commit 2648fc3598
43 changed files with 917 additions and 100 deletions

37
src/Sensors/RangingSensor.cpp Normal file → Executable file
View 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; }