52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
#include "grove_alphanumeric_display.h"
|
|
|
|
Seeed_Digital_Tube tube;
|
|
char tubeText[5] = "";
|
|
|
|
void initTube() {
|
|
// Wire initialized by BME280 sensor
|
|
tube.setTubeType(TYPE_4, TYPE_4_DEFAULT_I2C_ADDR);
|
|
tube.setBrightness(15);
|
|
tube.setBlinkRate(BLINK_OFF);
|
|
}
|
|
|
|
void rotateTube() {
|
|
displaySensor = (displaySensor + 1) % SENSORS;
|
|
tubeRotated = true;
|
|
}
|
|
|
|
void updateTube() {
|
|
char newText[5];
|
|
bool highPoint = false, lowPoint = false;
|
|
uint value = countdown;
|
|
|
|
if (countdown <= 0) {
|
|
switch (displaySensor) {
|
|
case TEMPERATURE:
|
|
value = (uint) (sensorValue[TEMPERATURE] * 100);
|
|
lowPoint = true;
|
|
break;
|
|
case HUMIDITY:
|
|
// TODO: add % sign?
|
|
value = (uint) (sensorValue[HUMIDITY]);
|
|
break;
|
|
case PRESSURE:
|
|
value = (uint) (sensorValue[PRESSURE] / 100);
|
|
break;
|
|
}
|
|
}
|
|
sprintf(newText, "%4u", value);
|
|
|
|
// TODO: In the current mode of display refresh (displayNeedsUpdate) it should not be necessary to check previous text
|
|
// Maybe add LED switching for case when the strings match as a rough check before removing comparison?
|
|
// Or LED switching when display is updated?
|
|
if (strcmp(tubeText, newText)) {
|
|
strcpy(tubeText, newText);
|
|
tube.displayString(tubeText);
|
|
tube.setPoint(highPoint, lowPoint);
|
|
tube.display();
|
|
}
|
|
|
|
displayNeedsUpdate = false;
|
|
}
|