//#include <Arduino.h>
#include <Wire.h>
#include <U8g2lib.h>
#include <OneWire.h>
#include <DallasTemperature.h>
//////////////////////////////////////Oled sherm
#define SDA_PIN 21
#define SCL_PIN 22
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 128
U8G2_SH1107_128X128_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL_PIN, /* data=*/ SDA_PIN);
//U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL_PIN, /* data=*/ SDA_PIN);
bool SchermUpdaten = true;
/////////////////////////////////////Pot meter
#define POTPIN 12
int Ingegeventemp_oud;
int Ingegeventemp;
/////////////////////////////////////Temp meter
#define ONE_WIRE_BUS 27
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float temperatureC_oud;
bool systeemAanUit;
float temperatureC;
unsigned long tempTimeStamp;
////////////////////////////////////Knop systeem aan/uit
#define aanUitknop 18
int statusKnopEerder = 0;
///////////////////////////////////Relais
#define relayPin 13
bool VerwarmingAanUit;
void setup() {
Serial.begin(25100);
//////////////////////////////////////Oled sherm
u8g2.begin();
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_6x13B_t_cyrillic);
//////////////////////////////////////pot meter
int analogValue = analogRead(POTPIN);
///////////////////////////////////Temp meter
sensors.begin();
pinMode(aanUitknop, INPUT_PULLDOWN);
////////////////////////////////////Relay
pinMode(relayPin, OUTPUT);
if (sensors.getDeviceCount() == 0) {
Serial.println("Geen sensor");
}
}
void loop() {
if(systeemAanUit == true){
int analogValue = analogRead(POTPIN);
Ingegeventemp = map(analogValue, 0, 4095, 5, 35);
if(millis() - tempTimeStamp > 2000){
tempTimeStamp = millis();
sensors.requestTemperatures();
if(sensors.isConversionComplete()){
temperatureC = sensors.getTempCByIndex(0) * 7.96178;
Serial.println(temperatureC * 8);
}
}else if(temperatureC == DEVICE_DISCONNECTED_C){
Serial.println("temperatuur ophalen mislukt");
}
if(temperatureC != temperatureC_oud){
temperatureC_oud = temperatureC;
SchermUpdaten = true;
}else if(Ingegeventemp != Ingegeventemp_oud){
Ingegeventemp_oud = Ingegeventemp;
SchermUpdaten = true;
}
VerwarmingAanUit = true;
digitalWrite(relayPin, HIGH);
if(((Ingegeventemp -0.5) < temperatureC)){
VerwarmingAanUit = false;
digitalWrite(relayPin, LOW);
}
}else{
digitalWrite(relayPin, LOW);
}
if(SchermUpdaten == true){
u8g2.clearBuffer();
if(systeemAanUit == false){
u8g2.setCursor(10, 60);
u8g2.print("System off");
}else{
u8g2.setCursor(10, 119);
u8g2.print("Temp:");
u8g2.setCursor(45, 119);
u8g2.print(temperatureC, 1);
u8g2.setCursor(10, 80);
u8g2.print("Temp inst:");
u8g2.setCursor(80, 80);
u8g2.print(Ingegeventemp, 1);
u8g2.setCursor(10, 70);
if(VerwarmingAanUit == true){
u8g2.print("Verwarming aan");
}else{
u8g2.print("Verwarming uit");
}
}
u8g2.sendBuffer();
SchermUpdaten = false;
}
bool statusKnop = digitalRead(aanUitknop);
if(statusKnop != statusKnopEerder ){
statusKnopEerder = statusKnop;
if(statusKnop == 1){
systeemAanUit = !systeemAanUit;
SchermUpdaten = true;
}
delay(5);
}
}