Hallo Arduino Community,
da ich noch ziemlicher Neuling in Sachen Arduino bin und gerade mein ersten Projekt gestartet habe bräuchte ich eure Hilfe.
Zu meinem Projekt:
Ich benutze einen Arduino Mega 2560 an dem ich einen DCF77 Empfänger und ein 4 zeiliges Display angeschlossen habe.
Zeit wird synchronisiert und auf dem Display ausgegeben, das klappt auch schon super. Später kommen noch 2 Sensoren für Temperatur und Hygro dazu. Das ganze gibt dan eine Terrarium Steuerung.
Jetzt möchte ich Relais Zeitgesteuert schalten.
Sprich, wenn es z.B. 15:30 Uhr ist soll Relai 1 an gehen und um 16:00 Uhr ausgehen.
Es sollte auch auf Sekunden genau funktionieren. Also z.B. Relai 2 um 16:00:00 Uhr ein und um 16:00:30 aus.
Ich hab schon hier im Forum rumgeschaut aber was richtig passenden habe ich nicht gefunden
Hoffe Ihr könnt mir da weiterhelfen.
Hier mein aktueller Code:
// Libarys werden geladen
#include "DCF77.h"
#include "Time.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Pins werden deklariert
#define DCF_PIN 18 // Connection pin to DCF77 device
#define DCF_INTERRUPT 5 // Interrupt Nummer des Pins
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
time_t time;
DCF77 DCF = DCF77(DCF_PIN,DCF_INTERRUPT,false); // *** pin/pin/(normal(true) or invert signal(false)
void setup() {
lcd.begin(20,4);
lcd.print(" Frosch-Terrarium");
lcd.setCursor(0, 1);
lcd.print("--------------------");
Serial.begin(9600);
DCF.Start();
Serial.println("****************************************** ");
Serial.println("> DCF77-Test , Lunalander.de ");
Serial.println("> Warte auf DCF77-Sync ... ");
Serial.println("> Der erste Update dauert mind. 2 Minuten. ");
Serial.println("****************************************** ");
createCustomChars();
lcd.setCursor(12, 4);
lcd.write(byte(2));
lcd.setCursor(2, 2);
lcd.write(byte(0));
lcd.setCursor(4, 2);
lcd.print ("25,3");
lcd.setCursor(8, 2);
lcd.write(byte(3));
lcd.print ("C");
lcd.setCursor(2, 3);
lcd.write(byte(0));
lcd.setCursor(4, 3);
lcd.print ("25,3");
lcd.setCursor(8, 3);
lcd.write(byte(3));
lcd.print ("C");
lcd.setCursor(12, 2);
lcd.write(byte(1));
lcd.setCursor(14, 2);
lcd.print ("75");
lcd.print ("%");
}
void loop() {
delay(1000);
time_t DCFtime = DCF.getTime();
if (DCFtime!=0)
{
Serial.println("> DCF77 OK! , Zeit wurde syncronisiert!");
setTime(DCFtime);
}
digitalClockDisplay();
}
void digitalClockDisplay()
{
lcd.setCursor(14, 4);
Serial.print(hour());
printHour(hour());
printDigits(minute());
}
void printHour(int digits){
if(digits < 10)
lcd.print('0');
lcd.print(digits);
}
void printDigits(int digits){
lcd.print(":");
if(digits < 10)
lcd.print('0');
lcd.print(digits);
}
void createCustomChars()
{
uint8_t temperatur[8] = {4, 10, 10, 10, 14, 31, 31, 14};
uint8_t wassertropfen[8] = {4, 4, 10, 10, 17, 17, 17, 14};
uint8_t clock[8] = {0x00,0x0E,0x15,0x17,0x11,0x0E,0x00,0x00};
uint8_t grad[8] = {28, 20, 28, 0, 0, 0, 0, 0};
lcd.createChar(0, temperatur);
lcd.createChar(1, wassertropfen);
lcd.createChar(2, clock);
lcd.createChar(3, grad);
}