Software:DCF
aus JControlWiki, der freien Wissensdatenbank
Auch wenn es hier eigentlich nur um die reine Software Seite geht, hier ein paar kurze Hinweise zur Hardware.
Ich benutze DCF Antenne von Conrad (Art-Nr. 641138 - 10,21 EUR). Angeschlossen ist die ganze Sache über den Gipo Port, in unserm Fall an den 6. Strom könnt ihr euch auch von der JControl ziehen.
Nun die Software. Diese stellt das Funksignal als Diagramm auf dem Display dar und zeigt die Aktuelle Zeit an.
CODE:
import jcontrol.io.GPIO;
import jcontrol.io.Display;
import jcontrol.system.Time;
import jcontrol.system.RTC;
import jcontrol.io.Backlight;
public class dcfgipo {
Display lcd = new Display();
int okv = 0;
public void readbits() {
Backlight.setBrightness(100);
lcd.clearDisplay();
int bit = 0;
int bito = 0;
int lastbit = 0;
int oldtime = 0;
int zahler = 0;
int wert = 0;
String lasterror;
int min = 0;
int stunde = 0;
int ktag = 0;
int monat = 0;
int jahr = 0;
for(;;) {
Time t = new Time();
if(GPIO.getState(6) == true) {
zahler = 0;
} else {
zahler = zahler + 1;
}
if(zahler > wert) {
wert = zahler;
lcd.drawString("0or1: ",38,0);
lcd.drawString(("0or1: ".concat(String.valueOf(wert))),38,0);
}
if(zahler >= 50) {
RTC.setTime(new Time(0, 0, 0, 0,0, 0, 0));
wert = 0;
lcd.drawString("0or1: 0 ",38,0);
lcd.drawString(" ",0,10);
min = 0;
stunde = 0;
ktag = 0;
monat = 0;
jahr = 0;
}
if(GPIO.getState(6) == true) {
if(bit == 0) {
lcd.drawString("|",lastbit,25);
} else {
lcd.drawString(".",lastbit,20);
}
bit = 1;
bito = bito + 1;
} else {
if(bit == 1) {
lcd.drawString("|",lastbit,25);
} else {
lcd.drawString(".",lastbit,30);
}
bit = 0;
}
if(oldtime != t.second) {
lcd.drawString(String.valueOf(t.second),lastbit,40);
oldtime = t.second;
lcd.drawString("".concat(String.valueOf(ktag)),50,10);
lcd.drawString(".".concat(String.valueOf(monat)),65,10);
lcd.drawString(".".concat(String.valueOf(jahr)),80,10);
lcd.drawString(":".concat(String.valueOf(t.second)),30,10);
lcd.drawString(":".concat(String.valueOf(min)),15,10);
lcd.drawString("".concat(String.valueOf(stunde)),0,10);
if(bito > 4) {
//Minute
if(t.second-1 == 21) {
min = min + 1;
}
if(t.second-1 == 22) {
min = min + 2;
}
if(t.second-1 == 23) {
min = min + 4;
}
if(t.second-1 == 24) {
min = min + 8;
}
if(t.second-1 == 25) {
min = min + 10;
}
if(t.second-1 == 26) {
min = min + 20;
}
if(t.second-1 == 27) {
min = min + 40;
}
//Stunde
if(t.second-1 == 29) {
stunde = stunde + 1;
}
if(t.second-1 == 30) {
stunde = stunde + 2;
}
if(t.second-1 == 31) {
stunde = stunde + 4;
}
if(t.second-1 == 32) {
stunde = stunde + 8;
}
if(t.second-1 == 33) {
stunde = stunde + 10;
}
if(t.second-1 == 34) {
stunde = stunde + 20;
}
//Tag
if(t.second-1 == 36) {
ktag = ktag + 1;
}
if(t.second-1 == 37) {
ktag = ktag + 2;
}
if(t.second-1 == 38) {
ktag = ktag + 4;
}
if(t.second-1 == 39) {
ktag = ktag + 8;
}
if(t.second-1 == 40) {
ktag = ktag + 10;
}
if(t.second-1 == 41) {
ktag = ktag + 20;
}
//Monat
if(t.second-1 == 45) {
monat = monat + 1;
}
if(t.second-1 == 46) {
monat = monat + 2;
}
if(t.second-1 == 47) {
monat = monat + 4;
}
if(t.second-1 == 48) {
monat = monat + 8;
}
if(t.second-1 == 49) {
monat = monat + 10;
}
//Jahre
if(t.second-1 == 50) {
jahr = jahr + 1;
}
if(t.second-1 == 51) {
jahr = jahr + 2;
}
if(t.second-1 == 52) {
jahr = jahr + 4;
}
if(t.second-1 == 53) {
jahr = jahr + 8;
}
if(t.second-1 == 54) {
jahr = jahr + 10;
}
if(t.second-1 == 55) {
jahr = jahr + 20;
}
if(t.second-1 == 56) {
jahr = jahr + 40;
}
if(t.second-1 == 57) {
jahr = jahr + 80;
}
}
bito = 0;
}
lcd.drawString(" ",lastbit+1,20);
lcd.drawString(" ",lastbit+1,25);
lcd.drawString(" ",lastbit+1,30);
lcd.drawString(" ",lastbit+12,40);
if(lastbit == 120) {
lastbit = 0;
lcd.drawString(" ",lastbit,40);
} else {
lastbit = lastbit + 1;
}
}
}
public dcfgipo() {
readbits();
}
public static void main(String[] args) {
new dcfgipo();
}
}
