// Forum: https://forum.arduino.cc/t/millis-counter-acting-strange/1123451/
// This Wokwi project: https://wokwi.com/projects/363877972648732673
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// #include "SparkFunHTU21D.h"
// HTU21D myHumidity;
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT);
unsigned long prevTime = 0;
int SSD_State = 0;
void setup()
{
Serial.begin(9600);
// myHumidity.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
}
void loop()
{
if (millis() - prevTime >= 1000)
{
prevTime = millis();
// display temperature
if (SSD_State == 0)
{
// float temp = myHumidity.readTemperature();
float temp = (float) random(2000, 2500) / 100.0;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.print("Temperatuur:");
display.setTextSize(3);
display.setCursor(12, 11);
display.print(temp);
display.print(" ");
display.setTextSize(1);
display.setCursor(105, 13);
display.cp437(true);
display.write(167);
display.setTextSize(2);
display.print("C");
display.display();
}
else if (SSD_State == 1) // display humidititty
{
// float humd = myHumidity.readHumidity();
float humd = (float) random(0, 101);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.print("Luchtvochtigheid:");
display.setTextSize(3);
display.setCursor(12, 11);
display.print(humd);
display.print(" ");
display.setTextSize(1);
display.setCursor(105, 13);
display.setTextSize(2);
display.print("%");
display.display();
}
SSD_State += 1;
if ( SSD_State > 1) // 0 and 1 are valid, bigger than 1 is not
SSD_State = 0;
// Serial.println(SSD_State);
}
}