Kfz Uhr Projekt

#include <Adafruit_MLX90614.h> //Infrarot Thermofühler Library
#include <RtcDS3231.h> //RTC Library
#include <max6675.h> //Thermofühler Library Max6675
#include <DallasTemperature.h>
#include <Wire.h>
#include <OneWire.h>
RtcDS3231<TwoWire> Rtc(Wire); //RTC 3231, I2C Adresse 0x57 Zeit/ 0x68 Thermistor

#include "U8glib.h" //Oled Library
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //Oled Treiber I2C Adresse 0x3C

char str[10]; //u8g
char datestring[20]; //RTC3231

// Thermofühler Innen Temperatur (Infrarot) MLX90614
Adafruit_MLX90614 mlx = Adafruit_MLX90614(); //Infrarot Thermofühler SDA,SCL I2C Adresse 0x5A

// Thermofühler Aussen Temperatur DS18B20
#define ONE_WIRE_BUS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

//Thermofühler für die Oel Temperatur Max6675
int thermoDO = 4;                                           
int thermoCS = 3;
int thermoCLK = 2;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

const float scalefactor = 0.066;//Scalefactor für WCS1700

//Spannung Sensor VCC<25V für die Fahrzeugspannung in Volt
int analogInput = A4;
float vout = 0.0;
float vin = 0.0;
float R1 = 30000.0; // 
float R2 = 7500.0; //
int value = 0;

void setup ()
{
pinMode(analogInput, INPUT); //Sensor VCC<25V Spannung Eingang definieren
mlx.begin(); //Infrarot Thermo Messung beginnen
Rtc.Begin(); //RTC3132 Messung beginnen
sensors.begin(); //DS18B20 Aussen Thermistor Messung beginnen
//RTC 3231
RtcDateTime now = Rtc.GetDateTime();
printDateTime(now);
//DS188B20
sensors.requestTemperatures();
//Spannung Sensor
value = analogRead(analogInput);
vout = (value * 5.0) / 1024.0; // see text
vin = vout / (R2/(R1+R2));   
}
//RTC Definition Zeitanzeige
#define countof(a) (sizeof(a) / sizeof(a[0]))
void printDateTime(const RtcDateTime& dt)
{ snprintf_P(datestring,
countof(datestring),
PSTR("%02u:%02u"),
dt.Hour(),
dt.Minute());
//Oled, einmalige Ausgabe beim Start
u8g.firstPage(); 
do {
u8g.setFont(u8g_font_helvR14);
u8g.drawStr( 30, 15,"NISSAN");
u8g.drawStr(34, 55,"GT 4x4");
u8g.setFont(u8g_font_helvR12);
u8g.drawStr(36, 34,"Primera ");
}while( u8g.nextPage() );
delay(3000);
}
void loop ()
{
//Oled, wiederholende Ausgabe Zeit, Innen/Aussen und Oel Temperatur, Bordspannung (Kfz)
u8g.firstPage(); 
do {
u8g.setFont(u8g_font_fur17r);
u8g.drawStr( 35, 22,datestring);
u8g.drawFrame(0,0,28,30);
u8g.drawFrame(100,0,28,30);
u8g.drawFrame(0,33,62,22);
u8g.drawFrame(66,33,62,22);
u8g.setFont(u8g_font_profont12);
u8g.drawStr( 8, 12,"IN");
u8g.setPrintPos(6, 25);                 // set position
u8g.println(mlx.readObjectTempC(), 0);
u8g.drawStr( 19, 25,"\260");
u8g.drawStr( 106, 12,"OUT");
u8g.drawStr( 106, 25, dtostrf(sensors.getTempCByIndex(0), 2, 0, str));
u8g.drawStr( 119, 25,"\260");
u8g.setFont(u8g_font_profont15);
u8g.drawStr( 75, 49,"Oil");
u8g.drawStr( 106, 49, dtostrf(thermocouple.readCelsius(), 2, 0, str));
u8g.drawStr( 119, 49,"\260");
u8g.drawStr( 6, 49, dtostrf(vin, 2, 1, str));
u8g.drawStr( 40, 49,"V");
}while( u8g.nextPage() );
}