#include #include #include #include #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"); } } }