14 Commits
Author SHA1 Message Date
Simon Zeyer 86d6c283fb remove sd stuff 2022-06-28 21:54:30 +02:00
Simon Zeyer b875401547 Delete settings.json 2020-09-19 12:58:08 +00:00
Simon Zeyer 60b0b611d0 Delete c_cpp_properties.json 2020-09-19 12:58:00 +00:00
Simon Zeyer 64bdd8786e Delete arduino.json 2020-09-19 12:57:52 +00:00
Simon Zeyer 1171b98561 Delete Settings.h 2020-09-19 12:54:05 +00:00
Simon Zeyer 8bcf4f64d0 Update .gitignore 2020-09-19 14:53:41 +02:00
Simon Zeyer 738662ee62 Merge branch 'master' into 'wemos-build'
# Conflicts:
#   Steuerung_Truhen.ino
2020-09-19 12:52:10 +00:00
Simon Zeyer bfadf05cf0 Wemos hat wdt builtin 2020-09-19 14:47:33 +02:00
Simon Zeyer 9d2cc72531 Eigene Library für Truhe, Settings in extra datei 2020-09-19 14:46:53 +02:00
Simon Zeyer 0301212bb5 Merge branch 'wemos-build' of gitlab.simonzeyer.de:2222]:dezeyer23/truhensteuerung into wemos-build 2020-09-19 14:43:36 +02:00
Simon Zeyer be89cfe32d Use DHT library from arduino repo (DHT_sensor_library)
in order to use the DHT_sensor_library the setup of the Truhen is moved
into the setup routine.

The log, updateLCD and printName funtions are removed, logic is handled
in the loop with help of new getter and setter methods.
2020-09-19 11:40:07 +02:00
Simon Zeyer 1dbae69dd2 Merge branch 'wemos-build' of gitlab.simonzeyer.de:2222]:dezeyer23/truhensteuerung into wemos-build 2020-09-19 11:29:16 +02:00
Simon Zeyer 456542514a Use DHT library from arduino repo (DHT_sensor_library)
in order to use the DHT_sensor_library the setup of the Truhen is moved
into the setup routine.

The log, updateLCD and printName funtions are removed, logic is handled
in the loop with help of new getter and setter methods.
2020-09-19 11:28:01 +02:00
Simon Zeyer 8d1a43ceb8 Use DHT library from arduino repo (DHT_sensor_library)
in order to use the DHT_sensor_library the setup of the Truhen is moved
into the setup routine.
2020-09-17 19:02:49 +02:00
6 changed files with 140 additions and 143 deletions
+4 -1
View File
@@ -1,3 +1,6 @@
.autogit
*.txt
*.pdf
*.pdf
output/
Settings.h
.vscode
BIN
View File
Binary file not shown.
+26
View File
@@ -0,0 +1,26 @@
//* **EINSTELLUNGEN** *//
#define SETUPTIMEOUT 500
// So, the minimum sampling period is the minimum time
// interval that we need to wait between two consecutive
// measurements from the sensor. In the case of the DHT22,
// this value is of 2 seconds [1].
static const unsigned long MESS_REFRESH_INTERVAL = 10000; // ms getMinimumSamplingPeriod == 2 sec
static const unsigned long SCHALT_REFRESH_INTERVAL = 60000; // ms
static const unsigned long LCD_REFRESH_INTERVAL = 500; // ms
const int uT = 1; //Abschalt-Temperatur in °C
const int oT = 4; //Einschalt-Temperatur in °C
/*
Truhe truhen[] = {
Truhe("Truhe 1", 2, 8),
Truhe("Truhe 2", 3, 9),
};*/
//Name, Relaypin, DTH Pin
Truhe truhen[] = {
Truhe("Truhe 1", D0, D2),
};
//LiquidCrystal_I2C lcd(0x3F, 0, 0, 0, 0, 0, 0, 0, 0, POSITIVE); //0x3F = Adresse des Displays
+41 -142
View File
@@ -1,141 +1,15 @@
#include <DHT.h> //Setup Sensoren
#include <avr/wdt.h>
#include <SD.h> //Setup SD SDK=D13, MOSI=D11, MISO=D12
#include <Wire.h> //Setup LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //0x3F = Adresse des Displays
#include "Truhe.h"
#include "Settings.h"
static unsigned long last_lcd_time = 0;
static unsigned long last_mess_time = 0;
static unsigned long last_schalt_time = 0;
class Truhe {
private:
int _relay;
DHT _dht;
int _stat = -1;
int _cur_temp = 0;
int _updlcd = 0;
String _name = "";
public:
Truhe(String name, int relay, int dhtpin, int dhttype) {
_name = name;
_relay = relay;
_dht.setup(dhtpin);
pinMode(_relay, OUTPUT);
};
void mess() {
//Serial.println(String(_name) + " mess()");
//Serial.print("Minimum Sampling Period: ");
//Serial.println(_dht.getMinimumSamplingPeriod());
//delay(_dht.getMinimumSamplingPeriod());
_cur_temp = _dht.getTemperature();
//Serial.println(String(_name) + "\t\t" + String(_cur_temp) + " grad gelesen");
};
void log(File logfile) {
//Serial.println(String(_name) + " log()");
String logdata = String(_name) + "\t" + String(_cur_temp) + "\t" + String(_stat);
logfile.println(logdata);
}
void updateLCD(int row) {
//Serial.println(String(_name) + " updateLCD("+String(row)+")");
//LCD-Anzeige
lcd.setCursor(0, row); //...(Zeichen,Zeile);
lcd.print(_name + " " + String(_updlcd));
lcd.setCursor(8, row);
lcd.print(" ");
//Serial.println(sizeof(String(_cur_temp))/2);
lcd.setCursor(11 - sizeof(String(_cur_temp))/2, row);
lcd.setCursor(8, row);
lcd.print(String(_cur_temp));
lcd.setCursor(11, row);
lcd.print("\337");
lcd.setCursor(13, row);
if (_stat == -1) {
lcd.print("-");
}
else if (_stat == 1) {
lcd.print("I");
}
else if (_stat == 0) {
lcd.print("O");
}
if(_updlcd == 0){
lcd.setCursor(15, row);
lcd.print(String("|"));
//Serial.println(String(_name) + " updateLCD("+String(row)+") .");
_updlcd = 1;
}else{
lcd.setCursor(15, row);
lcd.print(String("-"));
//Serial.println(String(_name) + " updateLCD("+String(row)+") ");
_updlcd = 0;
}
}
void schalt(int oT, int uT) {
Serial.print(String(_name) + " schalt() stat: " + String(_stat));
if (_cur_temp >= oT && _stat != 1) {
digitalWrite(_relay, LOW);
_stat = 1;
Serial.println("schalt " + _name + " zu " + String(_stat));
}
else if (_cur_temp <= uT && _stat != 0) {
digitalWrite(_relay, HIGH);
_stat = 0;
Serial.println("schalt " + _name + " zu " + String(_stat));
}
}
void printName(){
//Serial.println(_name);
}
};
//* **EINSTELLUNGEN** *//
#define DHTTYPE DHT22
#define SETUPTIMEOUT 500
// So, the minimum sampling period is the minimum time
// interval that we need to wait between two consecutive
// measurements from the sensor. In the case of the DHT22,
// this value is of 2 seconds [1].
static const unsigned long MESS_REFRESH_INTERVAL = 10000; // ms getMinimumSamplingPeriod == 2 sec
static const unsigned long SCHALT_REFRESH_INTERVAL = 10000; // ms
static const unsigned long LCD_REFRESH_INTERVAL = 500; // ms
const int uT = 1; //Abschalt-Temperatur in °C
const int oT = 4; //Einschalt-Temperatur in °C
Truhe truhen[] = {
Truhe("Truhe 1", 2, 8, 0),
Truhe("Truhe 2", 3, 9, 0),
};
void setup_sd() {
//Initialsierugn SD
lcd.clear();
lcd.setCursor(0, 0); //...(Zeichen,Zeile);
lcd.print("Init SD");
if (!SD.begin(4)) { //Init SD_Karte mit CS auf Pin D4
lcd.setCursor(0, 1);
lcd.print("fehlgeschlagen!");
Serial.println("Init SD fehlgeschlagen!");
delay(SETUPTIMEOUT);
return;
} else {
lcd.setCursor(0, 1);
lcd.print("abgeschlossen!");
Serial.println("Init SD abgeschlossen!");
delay(SETUPTIMEOUT);
}
}
void setup_lcd() {
//LCD
lcd.begin(16, 2); //Starten des LCD, 16 Zeichen, 2 Zeilen
@@ -155,13 +29,12 @@ void setup() {
Serial.println();
Serial.println();
setup_lcd();
setup_sd();
File logfile = SD.open("logTruhe.txt", FILE_WRITE); //Erstelle bzw. öffne log-Datei
logfile.println("t(min)\tTruhe\tT(°C)\tStatus");
logfile.close();
lcd.clear();
wdt_enable(WDTO_1S); // Watchdog auf 1 s stellen
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
truhen[i].setup();
}
wdt_enable(WDTO_4S); // Watchdog auf 4 s stellen
delay(3000);
Serial.println("Setup fi");
}
@@ -171,14 +44,8 @@ void loop() {
//MESSINTERVALL
last_mess_time = millis();
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
truhen[i].printName();
truhen[i].mess();
File logfile = SD.open("logTruhe.txt", FILE_WRITE);
truhen[i].log(logfile);
logfile.close();
}
logfile.println();
}
//Serial.println("Schaltintervall: "+ String(millis() - last_schalt_time) + " " + String(SCHALT_REFRESH_INTERVAL));
if(millis() - last_schalt_time >= SCHALT_REFRESH_INTERVAL || last_schalt_time == 0)
@@ -195,7 +62,39 @@ void loop() {
//LCD Update INTERVALL
last_lcd_time = millis();
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
truhen[i].updateLCD(i);
//LCD-Anzeige
lcd.setCursor(0, i); //...(Zeichen,Zeile);
lcd.print(truhen[i].getName() + " " + String(truhen[i].getUpdLcd()));
lcd.setCursor(8, i);
lcd.print(" ");
//Serial.println(sizeof(String(truhen[i].getCurTemp()))/2);
lcd.setCursor(11 - sizeof(String(truhen[i].getCurTemp()))/2, i);
lcd.setCursor(8, i);
lcd.print(String(truhen[i].getCurTemp()));
lcd.setCursor(11, i);
lcd.print("\337");
lcd.setCursor(13, i);
if (truhen[i].getStat() == -1) {
lcd.print("-");
}
else if (truhen[i].getStat() == 1) {
lcd.print("I");
}
else if (truhen[i].getStat() == 0) {
lcd.print("O");
}
if(truhen[i].getUpdLcd() == 0){
lcd.setCursor(15, i);
lcd.print(String("|"));
//Serial.println(String(truhen[i]._name) + " updateLCD("+String(i)+") .");
truhen[i].setUpdLcd(1);
}else{
lcd.setCursor(15, i);
lcd.print(String("-"));
//Serial.println(String(truhen[i]._name) + " updateLCD("+String(i)+") ");
truhen[i].setUpdLcd(0);
}
}
}
wdt_reset();
+46
View File
@@ -0,0 +1,46 @@
#include "Truhe.h"
Truhe::Truhe(String name, int relay, uint8_t dhtpin): _dht(dhtpin, DHT22) {
_name = name;
_relay = relay;
_dhtpin = dhtpin;
};
void Truhe::setup() {
Serial.println("Setup " + _name);
Serial.println(_dhtpin);
pinMode(_relay, OUTPUT);
digitalWrite(_relay, HIGH);
pinMode(_dhtpin, INPUT);
_dht.begin();
delay(2000);
}
void Truhe::mess() {
Serial.println(String(_name) + " mess()");
//Serial.print("Minimum Sampling Period: ");
//delay(_dht.getMinimumSamplingPeriod());
_cur_temp = _dht.readTemperature();
Serial.println(String(_name) + "\t\t" + String((int)_cur_temp) + " grad gelesen");
};
void Truhe::schalt(int oT, int uT) {
Serial.print(String(_name) + " schalt() stat: " + String(_stat));
if (_cur_temp >= oT && _stat != 1) {
digitalWrite(_relay, LOW);
_stat = 1;
Serial.println("schalt " + _name + " zu " + String(_stat));
}
else if (_cur_temp <= uT && _stat != 0) {
digitalWrite(_relay, HIGH);
_stat = 0;
Serial.println("schalt " + _name + " zu " + String(_stat));
}
}
int Truhe::getUpdLcd(){ return _updlcd;};
void Truhe::setUpdLcd(int updlcd){ _updlcd = updlcd;};
int Truhe::getRelay(){ return _relay;};
int Truhe::getDhtPin(){return _dhtpin;};
int Truhe::getStat(){return _stat;};
float Truhe::getCurTemp(){return _cur_temp;};
String Truhe::getName(){return _name;};
+23
View File
@@ -0,0 +1,23 @@
#include <DHT.h>
class Truhe {
private:
DHT _dht;
int _relay;
uint8_t _dhtpin;
int _stat = -1;
float _cur_temp = 0;
int _updlcd = 0;
String _name = "";
public:
Truhe(String, int, uint8_t);
void setup();
void mess();
void schalt(int, int);
int getUpdLcd();
void setUpdLcd(int);
int getRelay();
int getDhtPin();
int getStat();
float getCurTemp();
String getName();
};