Update main.ino
This commit is contained in:
parent
024208e3ac
commit
ec24bf68dd
1 changed files with 39 additions and 43 deletions
82
main.ino
82
main.ino
|
@ -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 {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue