#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
#define OLED_ADDR 0x3C
Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT);
//Anschluss A0 ist der Temperatursensor
const int tempSensor = A0;
int valueTemp;
//Anschluss A1 ist der Drucksensor
const int pressSensor = A1;
int valuePress;
void setup() {
// put your setup code here, to run once:
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
Serial.begin(9600);
//Auslesen von Sensoren
float t = analogRead(tempSensor);
float p = analogRead(pressSensor);
}
void loop() {
//Value ist der Wert des Sensors
valueTemp = analogRead(tempSensor);
valuePress = analogRead(pressSensor);
Serial.println(valueTemp);
Serial.println(valuePress);
//Widerstand des Temperatursensors in Grad Celsius umrechnen
float dividedValue = 1/(1/4822.16222557587*log(valueTemp/29150.0)+1/313.15)-273.15;
//Widerstand des Drucksensors in Grad Celsius umrechnen
float dividedValue2 = (-21.475+sqrt(477.9276362-1.6432*valuePress))/-0.8216;
//Wert auf eine Nachkommastelle einstellen
char temp[10];
dtostrf(dividedValue, 4, 1, temp);
char press[10];
dtostrf(dividedValue2, 4, 1, press);
//Interface anzeigen
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.println("Temp");
display.setCursor(0,30);
display.println("Pres");
// Temperatur in String umwandeln
String tempString = String(temp);
// Berechne die Breite des Temperatur-Strings
int16_t x1, y1;
uint16_t w, t;
display.getTextBounds(tempString, 0, 0, &x1, &y1, &w, &t);
// Setze den Cursor für den Temperaturwert (linksbündig zum Text " C")
int cursorXTemp = OLED_WIDTH - 15 - w; // 18 Pixel für " C", w für die Breite des Temperatur-Strings
//Temperaturwert anzeigen
display.setCursor(cursorXTemp, 0);
display.println(tempString);
// Setze den Cursor für " C"
int cursorXC = OLED_WIDTH - 25;
// Zeichne " C" an der festen Position
display.setCursor(cursorXC, 0);
display.println(" C");
// Druck in String umwandeln
String pressString = String(press);
// Berechne die Breite des Druck-Strings
display.getTextBounds(pressString, 0, 0, &x1, &y1, &w, &t);
// Setze den Cursor für den Druckwert (linksbündig zum Text " Bar")
int cursorXPress = OLED_WIDTH - 25 - w; // 18 Pixel für " Bar", w für die Breite des Temperatur-Strings
//TDruckwert anzeigen
display.setCursor(cursorXPress, 30);
display.println(pressString);
// Setze den Cursor für " Bar"
int cursorXBar = OLED_WIDTH - 30;
// Zeichne " Bar" an der festen Position
display.setCursor(cursorXBar, 35);
display.println(" Bar");
display.display();
display.clearDisplay();
delay(500);
}