Update main.ino

This commit is contained in:
melody 2025-08-18 11:35:11 +02:00
commit f40033cf3d

View file

@ -26,67 +26,63 @@ const float WAIT_TIME = 150;
class DataStorage {
private:
float data[AMOUNT_DATAPOINTS];
int cursor;
int rIndex;
int rCount;
const int MAX_DATA_POINTS;
const String UNIT;
public:
DataStorage(String unit, int maxDataPoints)
: UNIT(unit), MAX_DATA_POINTS(maxDataPoints), cursor(0) {
for (int i = 0; i < MAX_DATA_POINTS; i++) {
: UNIT(unit), MAX_DATA_POINTS(maxDataPoints), rIndex(0), rCount(0) {
for (int i = 0; i < this->MAX_DATA_POINTS; i++) {
this->data[i] = 0;
};
};
float getDataByIndex(int index) {
if(index < 0 || index >= this->cursor) return 0;
return this->data[index];
};
int getCursor() const {return this->cursor;};
}
}
void addData(float newData) {
if (this->cursor < this->MAX_DATA_POINTS) {
this->data[this->cursor++] = newData; //++cursor, cursor++, know the difference :3
} else {
for (int i = 0; i < this->MAX_DATA_POINTS - 1; i++) {
this->data[i] = this->data[i + 1];
}
this->data[this->MAX_DATA_POINTS - 1] = newData;
}
};
this->data[this->rIndex] = newData;
this->rIndex = (this->rIndex + 1) % this->MAX_DATA_POINTS;
if (this->rCount < this->MAX_DATA_POINTS) this->rCount++;
}
float getDataByIndex(int index) {
if(index < 0 || index >= this->rCount) return 0;
int idx = (this->rIndex + this->MAX_DATA_POINTS - this->rCount + index) % this->MAX_DATA_POINTS;
return this->data[idx];
}
int getCursor() const { return this->rCount; }
float getMaxDataPoint() {
if (this->cursor == 0) return 0;
float maxY = this->data[0];
for (int i = 1; i < this->cursor; i++) {
if (this->data[i] > maxY) maxY = this->data[i];
if (this->rCount == 0) return 0;
float maxY = this->getDataByIndex(0);
for (int i = 1; i < this->rCount; i++) {
float v = this->getDataByIndex(i);
if (v > maxY) maxY = v;
}
return maxY;
};
}
float getMinDataPoint() {
if (this->cursor == 0) return 0;
float minY = this->data[0];
for (int i = 1; i < this->cursor; i++) {
if (this->data[i] < minY) minY = this->data[i];
if (this->rCount == 0) return 0;
float minY = this->getDataByIndex(0);
for (int i = 1; i < this->rCount; i++) {
float v = this->getDataByIndex(i);
if (v < minY) minY = v;
}
return minY;
};
}
float getAvgDataPoint() {
if (this->cursor == 0) return 0;
float avgY = this->data[0];
for (int i = 1; i < this->cursor; i++) {
avgY += data[i];
};
return avgY / this->cursor;
};
if (this->rCount == 0) return 0;
float sum = 0;
for (int i = 0; i < this->rCount; i++) {
sum += this->getDataByIndex(i);
}
return sum / this->rCount;
}
String getUnit() {
return this->UNIT;
};
String getUnit() { return this->UNIT; }
};
class Element {