#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// oled (on Arduino NANO     A4(SDA), A5(SCL))
#define SCREEN_WIDTH 128     // OLED display width, in pixels
#define SCREEN_HEIGHT 64     // OLED display height, in pixels
#define OLED_RESET -1        // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3D  // Address 0x3D for 128x64, 0x3C for 128x32

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

const int THERMISTOR_pin = A0;
int Vo;
float R1 = 1000;
float logR2, R2, tKelvin, tCelsius, tFahrenheit;
// sensor calibration (steinhart - hart)
float c1 = 0.9919032802e-03, c2 = 1.876972149e-04, c3 = 1.387769818e-07;  //oder
//float c1 = 0.8962019701e-03, c2 = 1.989983783e-04, c3 = 1.092791545e-07;



//////////////////////////////////////////////////////////////////////////
void setup() {
  Serial.begin(9600);  // initialize serial communication:
  delay(10);

  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {  // Address 0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for (;;)
      ;  // Don't proceed, loop forever
  }

  // alte screen daten löschen
  display.clearDisplay();
  // weiße Schrift
  display.setTextColor(WHITE);
  // für void righttoleft()

}

//////////////////////////////////////////////////////////////////////////
void loop() {

  Vo = analogRead(THERMISTOR_pin);

  R2 = R1 * (1023.0 / (float)Vo - 1.0);  // resistance of the Thermistor
  logR2 = log(R2);
  tKelvin = (1.0 / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2));
  tCelsius = tKelvin - 273.15;
  tFahrenheit = (tCelsius * 9.0) / 5.0 + 32.0;

  Serial.print("Temperatur: ");
  Serial.print(tCelsius, 1);
  Serial.println(" °C");

    display.clearDisplay();
  display.setTextColor(WHITE);

  display.setTextSize(2);
  display.setCursor(30, 1);
  display.print("Start");

  display.setCursor(30, 25);
  display.print("Taste");

  display.setCursor(16, 45);
  display.print("dr");
  display.write(129);
  display.print("cken!");

  display.display();

  delay(5000);

display.setTextColor(WHITE);  // Draw white text
  display.clearDisplay();
  display.cp437(true);

  display.setTextSize(2);  // Draw 2X-scale text
  display.setCursor(10, 12);
  display.print("Vorheizen");  //, 1

  display.setTextSize(1);  // Underscore
  display.setCursor(9, 23);
  display.print("__________________");
  display.setCursor(12, 23);
  display.print("__________________");

  display.setTextSize(1);
  display.setCursor(8, 40);
  display.print("Temperatur wird ab");
  display.setCursor(18, 53);
  display.print("60");
  display.write(248);
  display.print("C angezeigt.");

  display.setTextSize(1);
  display.setCursor(98, 0);
  display.print(tCelsius, 0);
  display.write(248);  //167od. 248 = °
  display.print("C");

  display.display();

delay(5000);

display.clearDisplay();
  display.setTextColor(WHITE);

  display.setTextSize(2);
  display.setCursor(22, 12);
  display.print("Standby");

  display.setTextSize(1);  // Underscore
  display.setCursor(20, 23);
  display.print("______________");
  display.setCursor(24, 23);
  display.print("______________");

  display.setTextSize(1);
  display.setCursor(34, 40);
  display.print("ACHTUNG!!!");
  display.setCursor(16, 54);
  display.print("Platte ist Heiss");

  display.cp437(true);  // XXX°C (in top/right corner)
  display.setTextSize(1);
  display.setCursor(98, 0);
  display.print(tCelsius, 0);
  display.write(248);  //167od. 248 = °
  display.print("C");


  display.display();

delay(5000);

display.clearDisplay();
  display.setTextColor(WHITE);

  display.setTextSize(1);
  display.setCursor(4, 6);
  display.println("Temperatur:");

  display.setTextSize(3);
  display.setCursor(12, 22);
  display.print(tCelsius, 1);
  display.setTextSize(2);
  display.cp437(true);
  display.write(248);  //167od. 248 = °
  display.print("C");

  display.display();

delay(5000);

display.clearDisplay();
  display.setTextColor(WHITE);

  display.setTextSize(2);
  display.setCursor(16, 12);
  display.print("Cooldown");

  display.setTextSize(1);  // Underscore
  display.setCursor(15, 23);
  display.print("________________");
  display.setCursor(17, 23);
  display.print("________________");

  display.setTextSize(1);
  display.setCursor(34, 40);
  display.print("ACHTUNG!!!");
  display.setCursor(16, 54);
  display.print("Platte ist Heiss");

  display.cp437(true);  // XXX°C (in top/right corner)
  display.setTextSize(1);
  display.setCursor(98, 0);
  display.print(tCelsius, 0);
  display.write(248);  //167od. 248 = °
  display.print("C");

  display.display();

  delay(5000);
}