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