#include <OneWire.h>
#include <DallasTemperature.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a OneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass OneWire reference to Dallas Temperature
DallasTemperature sensors(&oneWire);
void setup(void)
{
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);}
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
Serial.begin(9600);
sensors.begin(); // Start up the library
}
void loop(void)
{
int Spannungswert = analogRead(A0);
float Batteriespannung = Spannungswert * (15.0 / 1023.0);
sensors.requestTemperatures();
Serial.println("Motortemp: " + String(sensors.getTempCByIndex(0),0) + "°C");
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.print("Batterie");
display.setTextSize(1);
display.setCursor(75,0);
display.print(Batteriespannung);
display.setTextSize(1);
display.setCursor(105,0);
display.print("V");
display.fillRect(112,2,1,3, WHITE);
display.fillRect(116,2,10,3, WHITE);
display.drawRect(113,0,15,7, WHITE);
display.setTextSize(1);
display.setCursor(0,30);
display.print("Motortemperatur ");
display.setTextSize(3);
display.setCursor(0,43);
display.print(String(sensors.getTempCByIndex(0),0));
display.print(" ");
display.setTextSize(2);
display.cp437(true);
display.write(167);
display.setTextSize(3);
display.print("C");
display.display();
delay(1000);
}