Some improvements...

- Update circuitdiagramm to v1.x
- Improve code to ship v1.1.0
This commit is contained in:
Fliegerjohn 2024-05-07 07:40:35 +02:00
parent a19463b3a1
commit b888c26b8a
Signed by: fliegerjohn
GPG key ID: E2221D5FE4656B6A
2 changed files with 950 additions and 3405 deletions

View file

@ -1,12 +1,13 @@
/* Weckkubator - Weck(topf)-(In)kubator
*
* Version 0.1.0
* Version 1.1.0
*
* Fliegerjohn - 06.05.2024
*
* Have fun!
*/
#include <Wire.h> // Support for I2C --> LCD
#include <LiquidCrystal_I2C.h> // Support for PCF8574 --> LCD
#include <OneWire.h> // 1-Wiresupport for DS18B20
@ -14,8 +15,8 @@
#include <PID_v1.h> // PID-Controller
#define ONE_WIRE_BUS 10 // Enable 1-Wirebus on digital 10 (PB2 - Pin16)
#define fan 8
#define wecktopf 9
#define fan 8 // Fan for cooling the Triac
#define wecktopf 9 // Triac for wecktopf
LiquidCrystal_I2C lcd(0x3F,20,4); // declare LCD
OneWire oneWire(ONE_WIRE_BUS); // declare 1-Wirebus
@ -33,6 +34,8 @@ unsigned long windowStartTime;
// Temp adjustment
float tempset;
int poti;
int potiold;
int poticlean;
// time
unsigned long previousMillis;
@ -73,7 +76,7 @@ void setup() {
myPID.SetMode(AUTOMATIC); //turn on the PID
// Greetings
lcd.print("Weckkubator 0.1.0");
lcd.print("Weckkubator 1.1.0");
delay(3000);
@ -84,14 +87,16 @@ void setup() {
void loop() {
// read temp
readtemp();
// run pid
pid();
// update LCD
// update LCD all 250ms
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 250) {
settemp();
readtemp();
lcdoutput();
previousMillis = currentMillis;
}
@ -102,6 +107,7 @@ void loop() {
else digitalWrite(fan, LOW);
previousMillisFan = currentMillis;
}
}
//------------------------------------------
@ -128,13 +134,14 @@ void readtemp() {
sensors.requestTemperatures();
watertemp = sensors.getTempCByIndex(0);
if (watertemp == -127.00) missingsensor();
if (watertemp == -127.00) missingsensor(); // print error if temp -127 (sensor not detected)
}
//------------------------------------------
// LCD output
void lcdoutput() {
// Output temperatureset
lcd.setCursor(8, 1);
lcd.print(pidset);
@ -157,11 +164,15 @@ void lcdoutput() {
//------------------------------------------
// Read Poti
// Read Poti and calculate the settemp
void settemp() {
poti = analogRead(A3);
tempset = (20+(poti*0.04));
poticlean = ((potiold+poti)/2); // Make average with last value so the tempset will not jump to much
tempset = (20+(poticlean*0.04));
potiold = poti;
// jump to 80 degrees if tempset above 51 degrees.
if (tempset <= 50) {
pidset = tempset;
}
@ -175,22 +186,28 @@ void settemp() {
//------------------------------------------
// Missing Sensor
void missingsensor() {
// turn of all output
// turn of all output to stop heating
digitalWrite(wecktopf, LOW);
digitalWrite(fan, LOW);
// Clear LCD
lcd.clear();
lcd.clear();
// keep in loop until it reads a valid temp
do {
// print errormessage
lcd.setCursor(0, 0);
lcd.print("Error:");
lcd.setCursor(0, 1);
lcd.print("Missing Sensor");
// read sensor
sensors.requestTemperatures();
watertemp = sensors.getTempCByIndex(0);
} while (watertemp == -127.00);
// set back the display
setupdisplay();
}

File diff suppressed because it is too large Load diff