#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; }