Guten Tag,
seit kurzer Zeit beschäftige ich mich nun mit meinen UNO Arduino Board
und da ich Zeitsignale schon immer spannend fand (Funk) eben eine DFC Uhr als erstes Projekt
Ich benutze den Empfänger von Lunalander
und ein i2c lcd von Sainsmart
#include "DCF77.h"
#include "Time.h"
#include "Wire.h"
#include "LCD.h"
#include "LiquidCrystal_I2C.h"
#define DCF_PIN 2 // Connection pin to DCF77 device
#define DCF_INTERRUPT 0 // Interrupt number associated with pin
char* Wochentag[8] = {"nix","So","Mo","Di","Mi","Do","Fr","Sa"}; // *** lege die Wochentage fest, fängt mit 1 (So.) an
#define I2C_ADDR 0x27 // Define I2C Address where the SainSmart LCD is
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
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);
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
}
void printbin8( uint8_t val )
{
for( uint8_t i = 8; i; i--, val <<= 1 )
putchar( !!(val & 0x80) + '0' );
}
void loop() {
delay(300);
time_t DCFtime = DCF.getTime(); // *** frag ab, ob DCF77-Signal erkannt wurde ...
if (DCFtime!=0)
{
lcd.clear();
lcd.home ();
lcd.setCursor ( 0, 3 );
lcd.print("DCF77 time ");
setTime(DCFtime);
}
digitalClockDisplay();
}
void digitalClockDisplay(){
lcd.setCursor(0, 0);
printDigits(day());
lcd.print(".");
printDigits(month());
lcd.print(".");
lcd.print(year());
lcd.print(" ");
lcd.print("weekday");
lcd.print(" ");
lcd.print(weekday ());
lcd.setCursor(0, 1);
printDigits(hour());
lcd.print(":");
printDigits(minute());
lcd.print(":");
printDigits(second());
lcd.print(" MEZ");
}
void printDigits(int digits){
if(digits < 10)
lcd.print('0');
lcd.print(digits);
}
So, der Code läuft auch erstmal freu
Allerdings würde ich gerne einige Zusatz Features einbauen und wenn ich damit anfange fängt der compiler an zu meckern
Wunschliste :
Time Stamp der letzten Sync auf dem LCD
per Knopfdruck umschalten um sich die Decodierung des DCF Protokolls quasi life anzusehen
Da die Empfangsqualität des DCF (Langwelle ja stark unterschiedlich ist würde ich gerne
eine RGB Diode oder Balkenanzeige die Empfangsquali anzeigen lassen
Ideen wie ich das anstelle ?
Oder wisst Ihr von andern die das schon so, oder so ähnlich gemacht haben ?
Gruss Frank