Hallo,
ich habe ein kleines Problem bei meiner Steuerung für mein Terrarium mit dem Arduino Nano.
Es sollen zwei unterschiedliche Lampen über eine Zeitschaltuhr EIN und Aus geschaltet werden.
Ausnahme die Temperatur steigt über eine bestimmte Temperatur. Dann soll eine Lampe abgeschaltet werden bis die Temperatur wieder unterschritten wird.
Die Uhrzeit soll auch auf einem LCD Display dargestellt werden.
Die Zeitschaltuhr haut nicht wirklich hin da wohl auch nach der Minutenzahl geschaltet wird und nicht wieder eingeschaltet wird wenn die Temperatur unterschritten wird.
Die Anzeige der Uhrzeit auf dem LCD Display bei Werten unter 10 funktioniert auch nicht. Dann erscheint z.B. 13:98
Hoffe jemand kann mir bei meinem Programm helfen oder mir ein paar Tipps geben.
#include <TimeLib.h>
#include <Wire.h>
#include <DS1307RTC.h>
#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 6
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float feuchte;
float temperatur;
int LED = 7;
int Strahler = 8;
int LCD_Helligkeit = 9;
int LCD_Kontrast = 10;
void setup() {
dht.begin();
lcd.begin(16, 2);
setSyncProvider(RTC.get);
pinMode(LED, OUTPUT);
pinMode(Strahler, OUTPUT);
pinMode(LCD_Helligkeit, OUTPUT);
pinMode(LCD_Kontrast, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if ((hour()>= 7 && minute()>= 20 && dht.readTemperature()<= 30)) { // Zeitschaltuhr Strahler EIN
digitalWrite(Strahler, LOW);
}
if ((hour()>= 22 && minute()>= 00)||(dht.readTemperature()>= 35)) { // Zeitschaltuhr Strahler AUS
digitalWrite(Strahler, HIGH);
}
if ((hour()>= 8 && minute()>= 00)) { // Zeitschaltuhr LED EIN, LCD Helligkeit auf Tag
digitalWrite(LED, LOW);
analogWrite(LCD_Helligkeit, 200);
analogWrite(LCD_Kontrast, 90);
}
if ((hour()>= 21 && minute()>= 50)) { // Zeitschaltuhr LED AUS, LCD Helligkeit auf Nacht
digitalWrite(LED, HIGH);
analogWrite(LCD_Helligkeit, 30);
analogWrite(LCD_Kontrast, 90);
}
float feuchte = dht.readHumidity();
float temperatur = dht.readTemperature();
lcd.setCursor(6, 0);
lcd.print("Grad");
lcd.setCursor(6, 1);
lcd.print("% Feuchte");
lcd.setCursor(0, 0);
lcd.print(temperatur);
lcd.setCursor(0, 1);
lcd.print(feuchte);
if (hour() || minute() >=10) {
lcd.setCursor(11, 0);
lcd.print(hour());
lcd.setCursor(14, 0);
lcd.print(minute());
lcd.setCursor(13, 0);
lcd.print(':');
delay(1000);
lcd.setCursor(13, 0);
lcd.print(' ');
delay(1000);
}
if (hour() <10) {
lcd.setCursor(12, 0);
lcd.print(hour());
lcd.setCursor(11, 0);
lcd.print("0");
}
if (minute() <10) {
lcd.setCursor(15, 0);
lcd.print(minute());
lcd.setCursor(14, 0);
lcd.print("0");
}
Serial.print(hour());
Serial.print(" ");
Serial.print(minute());
Serial.println();
}
Terrarium.ino (2.2 KB)