Update main.ino

This commit is contained in:
melody 2025-08-18 11:29:29 +02:00
commit ec24bf68dd

View file

@ -21,72 +21,68 @@ Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // Set HW SPI pi
const int buttonPin = 16; const int buttonPin = 16;
const int AMOUNT_DATAPOINTS = 75; // ~120 max on Arduino Nano (2kB SRAM) const int AMOUNT_DATAPOINTS = 75; // ~120 max on Arduino Nano (2kB SRAM)
const float WAIT_TIME = 150; const float WAIT_TIME = 0.1;
class DataStorage { class DataStorage {
private: private:
float data[AMOUNT_DATAPOINTS]; float data[AMOUNT_DATAPOINTS];
int cursor; int rIndex;
int rCount;
const int MAX_DATA_POINTS; const int MAX_DATA_POINTS;
const String UNIT; const String UNIT;
public: public:
DataStorage(String unit, int maxDataPoints) DataStorage(String unit, int maxDataPoints)
: UNIT(unit), MAX_DATA_POINTS(maxDataPoints), cursor(0) { : UNIT(unit), MAX_DATA_POINTS(maxDataPoints), rIndex(0), rCount(0) {
for (int i = 0; i < MAX_DATA_POINTS; i++) { for (int i = 0; i < MAX_DATA_POINTS; i++) {
this->data[i] = 0; 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) { void addData(float newData) {
if (this->cursor < this->MAX_DATA_POINTS) { data[rIndex] = newData;
this->data[this->cursor++] = newData; //++cursor, cursor++, know the difference :3 rIndex = (rIndex + 1) % MAX_DATA_POINTS;
} else { if (rCount < MAX_DATA_POINTS) rCount++;
for (int i = 0; i < this->MAX_DATA_POINTS - 1; i++) { }
this->data[i] = this->data[i + 1];
} float getDataByIndex(int index) {
this->data[this->MAX_DATA_POINTS - 1] = newData; if(index < 0 || index >= rCount) return 0;
} int idx = (rIndex + MAX_DATA_POINTS - rCount + index) % MAX_DATA_POINTS;
}; return data[idx];
}
int getCursor() const { return rCount; }
float getMaxDataPoint() { float getMaxDataPoint() {
if (this->cursor == 0) return 0; if (rCount == 0) return 0;
float maxY = this->data[0]; float maxY = getDataByIndex(0);
for (int i = 1; i < this->cursor; i++) { for (int i = 1; i < rCount; i++) {
if (this->data[i] > maxY) maxY = this->data[i]; float v = getDataByIndex(i);
if (v > maxY) maxY = v;
} }
return maxY; return maxY;
}; }
float getMinDataPoint() { float getMinDataPoint() {
if (this->cursor == 0) return 0; if (rCount == 0) return 0;
float minY = this->data[0]; float minY = getDataByIndex(0);
for (int i = 1; i < this->cursor; i++) { for (int i = 1; i < rCount; i++) {
if (this->data[i] < minY) minY = this->data[i]; float v = getDataByIndex(i);
if (v < minY) minY = v;
} }
return minY; return minY;
}; }
float getAvgDataPoint() { float getAvgDataPoint() {
if (this->cursor == 0) return 0; if (rCount == 0) return 0;
float avgY = this->data[0]; float sum = 0;
for (int i = 1; i < this->cursor; i++) { for (int i = 0; i < rCount; i++) {
avgY += data[i]; sum += getDataByIndex(i);
}; }
return avgY / this->cursor; return sum / rCount;
}; }
String getUnit() { String getUnit() { return UNIT; }
return this->UNIT;
};
}; };
class Element { class Element {