#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
#define MenuButton 2
Adafruit_SSD1306 display(OLED_RESET);
int blinkcount=0;
int blinkinterval = 500;
int blinkinterval2 = 300;
unsigned long blinkTimer = 0;
int displaystate=1;
float Messwert;
int z = 0;
void EINHEIT() //muss nun hier stehen, weil sonst nicht vom setup() aus aufrufbar
{
display.setTextSize(1.5);
display.setCursor(108, 23);
display.println("bar");
}
void setup()
{
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.setTextColor(WHITE);
EINHEIT(); //ein mal reicht immer noch
display.setTextSize(3.5); //Nun reicht das auch ein mal
}
void loop()
{
if (millis() >= blinkTimer && blinkcount <= 6)
{ blinkcount++;
switch (displaystate)
{
case 1:
blinkTimer=millis()+blinkinterval; //erste Zeitvorgabe nutzen
display.setCursor(23, 9);
display.setTextColor(WHITE);
display.println(Messwert);
display.display();
displaystate=2; //einstellen, dass das case 2 als nächstes verarbeitet wird
break; //gesamten switch verlassen
case 2:
blinkTimer=millis()+blinkinterval2; //zweite Zeitvorgabe nutzen
display.setCursor(23, 9);
display.setTextColor(BLACK);
display.println(Messwert); //Mit Hintergrundfarbe das gleiche erneut schreiben, um es zu löschen. Ist besser so. Für die Zunkunft nützlich.
display.display();
displaystate=1; //einstellen, dass nun wieder case 1 als nächstes verarbeitet wird
break;
default: //wird ausgeführt, wenn weder 1 noch 2 in displaystate steht, also kein case passt. Sollte hier nie ausgeführt werden.
display.setCursor(23, 9);
display.setTextColor(WHITE);
display.println("ERR");
}
}
}