' ************************************ ' * LED TUBE Clock Demo * ' * LED-Basic >= 15.2.1 required * ' * modyfied by Vanessa Ver, 1.22 * ' ************************************ ' Bedienungsanleitung: ' ' Taster 1..2...3..4 (Steuerung über PC möglich...KeyTaste in Klammern). ' Bei Neustart und gleichzeitig gedrückter Taste während der Versionsanzeige (halten bis ' Beep hörbar), erfolgt eine Zurücksetzung auf (Standard) Werte. (Bitte ausführen falls ' Funktionen nicht funktionieren). ' ' ' Kurzer Druck auf Taste-4 zeigt das Datum.(d) ' Kurzer Druck auf Taste-3 wechselt die Helligkeit (0 = Nachtmodus manuell, 1...15 = fest).(h) ' Im manuellen Nachtmodus NUR Helligkeit und Alarm an / aus aktiv. ' Langer Druck auf Taste-3 wechselt Auto Nachtmodus SOFORT AN / AUS (N) ' Im auto Nachtmodus NUR Helligkeit, Alarm an / aus und auto Nachtmodus an / aus aktiv. ' Ändern der Helligkeit im Auto Nachtmode = Auto Nachtmode aus. ' Kurzer Druck auf Taste-2 zeigt Alarmzeit. (a) ' Langer Druck auf Taste-2 wechselt Alarm an / aus (A) ' An = Punkt bei Sek. plus zyklische Alarm Anzeige. ' Alarmdauer = 1 Minute, durch Tasten unterbrechbar. ' Kurzer Druck auf Taste-1 wechselt den MODUS (Uhr, Stoppuhr, Timer). ' Langer Druck auf Taste-1 wechselt in den Setup Modus. ' ' Eine geheime Nachricht kann einprogrammiert werden (g) ' ' Alle Einstellungen bleiben bei Stromausfall erhalten ( EEPROM ). ' Bei angeschlossenem Terminal (PC) weitere Ausgabe von Werten und Steuerung möglich. ' Alarm ist priorisiert bei Timer / Stoppuhr. ' Versionsanzeige bei Uhrenstart. ' Random (Spielautomat) Anzeige (an / abschaltbar). ' Datum auto Anzeige (an / abschaltbar). ' Tasten-Beep (an / abschaltbar). ' Binäre Zeitanzeige (an / abschaltbar oder auto = 10 Min. Wechsel). ' ' ' Stoppuhr Modus: (MAX: 59:59) ' Kurzer Druck auf Taste-1 = wechselt zum Timer Modus (nur bei stopp) ' Kurzer Druck auf Taste-2 = start / stopp / weiter ' Kurzer Druck auf Taste-3 = reset (nur bei stopp) ' Kurzer Druck auf Taste-4 = zurück zur Uhr (nur bei stopp) ' ' ' Timer Modus: (MAX: 59:59) ' Kurzer Druck auf Taste-1 = wechselt zur Uhr (nur bei stopp) ' Kurzer Druck auf Taste-2 = start / stopp / weiter ' Kurzer Druck auf Taste-3 = Minuten + (nur bei stopp) ' Kurzer Druck auf Taste-4 = Sekunden + (nur bei stopp) ' ' ' SETUP Modus: ' Kurzer Druck auf Taste-1 wechselt die Funktion. ' Kurzer Druck auf Taste-2 wählt die Funktion aus. ' Kurzer Druck auf Taste-4 = Abbruch (ebenso bei Inaktivität nach ca. 15 Sek.) ' ' Alarmzeit einstellen. ' Kurzer Druck auf Taste-4 = Minuten ' Kurzer Druck auf Taste-3 = Stunden ' Kurzer Druck auf Taste-2 speichert die Werte ' (bei Inaktivität nach ca. 15 Sek. Abbruch) ' Auto Nachtmodus Zeit ( Begin / Ende) ' Kurzer Druck auf Taste-4 = Minuten Begin ' Kurzer Druck auf Taste-3 = Stunden Begin ' Kurzer Druck auf Taste-2 speichert die Werte Begin --> danach: ' Kurzer Druck auf Taste-4 = Minuten Ende ' Kurzer Druck auf Taste-3 = Stunden Ende ' Kurzer Druck auf Taste-2 speichert die Werte Ende ' (bei Inaktivität nach ca. 15 Sek. Abbruch) ' Uhrzeit einstellen. ' Kurzer Druck auf Taste-4 = Minuten ' Kurzer Druck auf Taste-3 = Stunden ' Kurzer Druck auf Taste-2 speichert die Werte ' (bei Inaktivität nach ca. 15 Sek. Abbruch) ' Datum einstellen ' Kurzer Druck auf Taste-4 = Monat ' Kurzer Druck auf Taste-3 = Tag ' Kurzer Druck auf Taste-2 speichert die Werte Monat / Tag --> danach: ' Kurzer Druck auf Taste-4 = Jahr plus ' Kurzer Druck auf Taste-3 = Jahr minus ' Kurzer Druck auf Taste-2 speichert Wert Jahr ' (bei Inaktivität nach ca. 15 Sek. Abbruch) ' Datum auto Anzeige AN / AUS ' Kurzer Druck auf Taste-3 wechselt zwischen AN / AUS ' Kurzer Druck auf Taste-2 speichert die Werte ' Kurzer Druck auf Taste-4 = Abbruch ' (bei Inaktivität nach ca. 15 Sek. Abbruch) ' Random (Spielautomat Anzeige) AN / AUS (keine Funktion bei binärer Zeitanzeige) ' Kurzer Druck auf Taste-3 wechselt zwischen AN / AUS ' Kurzer Druck auf Taste-2 speichert die Werte ' Kurzer Druck auf Taste-4 = Abbruch ' (bei Inaktivität nach ca. 15 Sek. Abbruch) ' Tasten-Beep AN / AUS ' Kurzer Druck auf Taste-3 wechselt zwischen AN / AUS ' Kurzer Druck auf Taste-2 speichert die Werte ' Kurzer Druck auf Taste-4 = Abbruch ' (bei Inaktivität nach ca. 15 Sek. Abbruch) ' Zeitkorrektur (Calib) einstellen. ( -510 bis 510 Taktzyklen per 32 Sek.) ' Kurzer Druck auf Taste-3 = minus 1 ' Kurzer Druck auf Taste-4 = plus 1 ' Kurzer Druck auf Taste-2 speichert die Werte ' (bei Inaktivität nach ca. 15 Sek. Abbruch) ' Binäre Zeitanzeige AN / AUS / AUTO ' Kurzer Druck auf Taste-3 wechselt zwischen AN / AUS / AUTO ' Kurzer Druck auf Taste-2 speichert die Werte ' Kurzer Druck auf Taste-4 = Abbruch ' (bei Inaktivität nach ca. 15 Sek. Abbruch) '=========================================================== ### P0 S2 LED.clear() ' Dezimalpunkte 10: data 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 ' HALLO Wort 20: data 21,21,21,21,21,21,21,21,16,10,17,17,0,21,21,21,21,21,21,21,21 ' Music Timer / Stoppuhr max :-) 41: data 13,200,15,200,17,200,13,200,13,200,15,200,17,200,13,200 data 17,200,18,200,20,400,17,200,18,200,20,400 ' rESEt Wort 50: data 21,21,21,21,21,21,21,21,24,14,5,14,26,21,21,21,21,21,21,21,21 ' ALAr AN Wort 51: data 21,21,21,21,21,21,21,21,10,17,10,24,21,10,25,21,21,21,21,21,21,21,21 ' ALAr AUS Wort 52: data 21,21,21,21,21,21,21,21,10,17,10,24,21,10,19,5,21,21,21,21,21,21,21,21 ' AUto NACHt AN Wort 53: data 21,21,21,21,21,21,21,21,10,19,26,27,20,25,10,12,16,26,21,10,25,21,21 ' AUto NACHt AUS Wort 54: data 21,21,21,21,21,21,21,21,10,19,26,27,20,25,10,12,16,26,21,10,19,5,21 ' Ti-SEt Wort 58: data 21,21,21,21,21,21,21,21,26,1,20,21,5,14,26,21,21,21,21,21,21,21,21 ' Stoppuhr Wort 59: data 21,21,21,21,21,21,21,21,5,26,27,18,18,19,16,24,21,21,21,21,21,21,21,21 ' SEtUP Wort 60: data 21,21,21,21,21,21,21,21,5,14,26,19,18,21,21,21 '=========================================================== ' GLOBAL VARS ' t = temp, i = loop-zaehler, s = sekunde, m = minute, n = stunde ' z = zaehler / zeichen, j = temp, b = helligkeit, k = taster '=========================================================== LED.bright(4) ' Version LED.pdez(0, 1, 0, 0) ' Version LED.pdez(1, 2, 0, 0) ' Version LED.pdez(2, 2, 0, 0) ' Version LED.pchar(3, 11) LED.pchar(4, 29) LED.pchar(5, 20) LED.pchar(6, 19) LED.pchar(7, 10) LED.adp(0x83) delay 2500 ' INIT gosub 8000 ' EEPROM INIT LED.adp(0) gosub 250 '........................................................... ' HALLO for i = 0 to 13 for z = 0 to 7 LED.pchar(z, read 20, i + z) next z delay 160 next i b = IO.eeread(1) LED.bright(b) 99: LED.clear() z = IO.eeread(14) ' Zeitkorrektur lesen IO.sys(99, z) ' Zeitkorrektur schreiben if (IO.eeread(6)) = 1 then goto 500 ' MODE Stoppuhr if (IO.eeread(6)) = 2 then goto 600 ' MODE Timer '==== MAIN LOOP ============================================ 100: gosub 9000 ' GETKEY gosub 9050 ' GETASCII if z = 103 gosub 150 ' Nachricht (geheim) (g) if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 8 or z = 100 and b <> 0 then goto 305 ' Datum (d) if k = 4 or z = 104 then gosub 190 ' Helligkeit ändern (h) if k = 14 or z = 78 and b <> 0 then gosub 440 ' Auto Nachtmodus sofort an / aus (N) if k = 12 or z = 65 then gosub 400 ' Alarm an / aus (A) if k = 2 or z = 97 and b <> 0 then goto 350 ' Alarm anzeigen (a) if k = 1 and b <> 0 then goto 500 ' Mode if k = 11 and b <> 0 then goto 10000 ' Setup n = IO.getrtc(2) ' STUNDEN m = IO.getrtc(1) ' MINUTEN s = IO.getrtc(0) ' SEKUNDEN if (IO.eeread(2)) = 1 and (IO.eeread(3)) = n and (IO.eeread(4)) = m then goto 9205 ' alarm b = IO.eeread(1) if s = 0 and (IO.eeread(9)) = (IO.eeread(11)) and (IO.eeread(10)) = (IO.eeread(12)) goto 102 ' Kein Auto Nacht Bereich if s = 0 and n = (IO.eeread(9)) and m = (IO.eeread(10)) then IO.eewrite(13, 1) ' Auto Nacht an if s = 0 and n = (IO.eeread(11)) and m = (IO.eeread(12)) then IO.eewrite(13, 0) ' Auto Nacht aus if (IO.eeread(13)) = 1 then goto 220 ' Auto Nachtmodus 102: if b = 0 then goto 220 ' Nachtmodus manuell LED.bright(b) if m % 10 = 2 or m % 10 = 4 or m % 10 = 6 or m % 10 = 8 and s = 10 and (IO.eeread(2)) = 1 goto 350 ' show alarm if m % 10 = 1 or m % 10 = 3 or m % 10 = 5 or m % 10 = 7 or m % 10 = 9 and s = 0 and (IO.eeread(8)) = 1 and (IO.eeread(15)) = 0 goto 4000 ' random if s = 40 and (IO.eeread(5)) = 1 goto 300 ' Datum anzeigen if (IO.eeread(15)) = 1 then goto 110' SHOW Time binary if (IO.eeread(15)) = 2 and (m / 10) % 2 = 1 then goto 110' SHOW Time binary auto goto 104 ' SHOW TIME '================================================ ' SHOW TIME 104: s = IO.getrtc(0) ' SEKUNDEN if (IO.eeread(2)) = 1 then LED.adp(0x01) else LED.adp(0) ' alarm punkt LED.pchar(2, 20) LED.pchar(5, 20) LED.pdez(0, n, 1, 1) ' STUNDEN LED.pdez(3, m, 1, 1) ' MINUTEN if s % 10 = 9 goto 105 ' Seunden flip LED.pdez(6, s, 1, 1) ' SEKUNDEN goto 100 '................................... ' sekunden FLip 105: LED.pdez(6, s, 1, 1) delay 500 for i = 1 to 9 LED.pdez(6, s - i, 1, 1) ' SEKUNDEN Flip delay 58 next i goto 100 '================================================ ' show Time Binary 110: if (IO.eeread(2)) = 1 then LED.adp(0x01) else LED.adp(0) ' alarm punkt y = 1 for i = 0 to 5 if y & s <> 0 then u = 1 else u = 0 if y & m <> 0 then v = 1 else v = 0 if y & n <> 0 then w = 1 else w = 0 y = y * 2 LED.praw(i, w + v * 0x40 + u * 0x08) next i LED.praw(6, 0) LED.praw(7, 0) goto 100 '================================================ ' Nachricht (geheim) 150: LED.clear() LED.adp(0) LED.bright(14) print "Dies könnte eine Nachricht sein" print " by Vanessa" for z = 0 to 10 for i = 0 to 7 LED.adp(read 10 , i) delay 100 next i next z LED.adp(0) LED.bright(b) return '================================================ ' Helligkeit ändern 190: LED.clear() LED.adp(0) b = IO.eeread(1) ' Helligkeit if (IO.eeread(13)) = 1 then IO.eewrite(13, 0) ' bei Änderung während auto Nacht = auto Nacht aus b = b + 1 if b > 15 then b = 0 IO.eewrite(1, b) ' Helligkeit neu LED.pdez(2, b, 1, 1) LED.pchar(0, 16) LED.pchar(1, 20) delay 1000 if b = 0 then LED.clear() return '================================================ ' Nachtmodus (fading) 220: b = 0 if s % 10 = 1 goto 225 if s <> 36 goto 100 s = IO.getrtc(0) ' SEKUNDEN LED.pchar(2, 20) LED.pchar(5, 20) LED.pdez(0, n, 1, 1) ' STUNDEN LED.pdez(3, m, 1, 1) ' MINUTEN LED.pdez(6, s, 1, 1) ' SEKUNDEN b = 1 LED.bright(b) delay 1500 b = 0 LED.bright(b) LED.clear() goto 100 225: LED.clear() if (IO.eeread(2)) = 1 then LED.adp(0x09) else LED.adp(0x08) ' alarm punkt for b = 0 to 8 LED.bright(b) delay 100 next b for b = 8 downto 1 LED.bright(b) delay 100 next b LED.adp(0) goto 100 '================================================ 'DIGIT Play 250: for r = 0 to 7 for y = 1 to 10 w = random % 128 LED.praw(r, w) delay 25 next y LED.pchar(r, 21) next r return '................................... 260: for r = 7 downto 0 for y = 1 to 10 w = random % 128 LED.praw(r, w) delay 25 next y LED.pchar(r, 21) next r return '................................... 270: for r = 0 to 7 LED.praw(r, 1) delay 35 next r for r = 7 downto 0 LED.praw(r, 0x41) delay 35 next r for r = 0 to 7 LED.praw(r, 0x49) delay 35 next r for r = 7 downto 0 LED.praw(r, 0x48) delay 35 next r for r = 0 to 7 LED.praw(r, 0x08) delay 35 next r for r = 7 downto 0 LED.praw(r, 0) delay 35 next r return '................................... 280: for r = 7 downto 0 for y = 0 to 2 if y = 0 then LED.praw(r, 1) if y = 1 then LED.praw(r, 0x41) if y = 2 then LED.praw(r, 0x49) delay 50 next y next r for r = 7 downto 0 LED.praw(r, 0x48) delay 35 next r for r = 0 to 7 LED.praw(r, 0x08) delay 35 next r for r = 7 downto 0 LED.praw(r, 0) delay 35 next r return '................................... 290: if (IO.eeread(15)) <> 0 then goto 100 ' Mode Binär for r = 6 downto 0 LED.pdez(r, n, 1, 1) ' STUNDEN if r < 6 then LED.pchar(2 + r, 20) if r < 4 then LED.pdez(3 + r, m, 1, 1) ' MINUTEN if r < 3 then LED.pchar(5 + r, 20) if r < 1 then LED.pdez(6, s, 1, 1) ' SEKUNDEN delay 130 next r goto 100 '================================================ ' SHOW DATE 300: if (IO.eeread(8)) = 0 goto 305 t = random % 4 if t = 0 gosub 250 if t = 1 gosub 260 if t = 2 gosub 270 if t = 3 gosub 280 305: t = IO.getrtc(3) ' TAG LED.pdez(0, t, 1, 1) t = IO.getrtc(4) ' MONAT LED.pdez(2, t, 1, 1) t = IO.getrtc(5) ' JAHR LED.pdez(4, t, 3, 0) if (IO.eeread(2)) = 1 then LED.adp(0x51) else LED.adp(0x50) ' alarm punkt delay 4000 k = IO.getkey() ' key reset if (IO.eeread(2)) = 1 then LED.adp(0x01) else LED.adp(0) ' alarm punkt goto 290 '================================================ ' SHOW Alarm 350: if (IO.eeread(8)) = 0 or k = 2 or z = 97 goto 355 t = random % 4 if t = 0 gosub 250 if t = 1 gosub 260 if t = 2 gosub 270 if t = 3 gosub 280 355: LED.adp(0) LED.pchar(0, 10) LED.pchar(1, 17) LED.pchar(2, 21) LED.pchar(5, 20) t = IO.eeread(3) LED.pdez(3, t, 1, 1) ' STUNDEN t = IO.eeread(4) LED.pdez(6, t, 1, 1) ' MINUTEN if (IO.eeread(6)) <> 0 then IO.eewrite(6, 0) ' von alarm prio --> mode Uhr delay 2000 if k <> 2 then goto 290 ' auto date k = IO.getkey() ' key reset goto 100 '================================================ ' alarm an / aus 400: LED.adp(0) if b = 0 then LED.bright(2) else LED.bright(b)' bei Nachtmodus if (IO.eeread(2)) = 1 goto 410 for i = 0 to 15 for z = 0 to 7 LED.pchar(z, read 51, i + z) next z delay 250 next i IO.eewrite(2, 1) ' alarm an if b = 0 then LED.bright(b) ' bei Nachtmodus if b = 0 then LED.clear() ' bei Nachtmodus if (IO.eeread(13)) = 1 then LED.bright(0) ' bei Nachtmodus if (IO.eeread(13)) = 1 then LED.clear() ' bei Nachtmodus return 410: for i = 0 to 16 for z = 0 to 7 LED.pchar(z, read 52, i + z) next z delay 250 next i IO.eewrite(2, 0) ' alarm aus if b = 0 then LED.bright(b) ' bei Nachtmodus if b = 0 then LED.clear() ' bei Nachtmodus if (IO.eeread(13)) = 1 then LED.bright(0) ' bei Nachtmodus if (IO.eeread(13)) = 1 then LED.clear() ' bei Nachtmodus return '================================================ ' Musik end 420: z = 0 430: t = read 41, z i = read 41, z + 1 z = z + 2 if t = 0 then goto 99 ' mode loop IO.beep(t) delay i IO.beep(0) delay 100 goto 430 '================================================ ' Auto Nachtmodus sofort an / aus 440: LED.adp(0) if (IO.eeread(13)) = 1 goto 450 for i = 0 to 15 for z = 0 to 7 LED.pchar(z, read 53, i + z) next z delay 250 next i IO.eewrite(13, 1) ' Auto Nachtmodus sofort an delay 1000 LED.clear() return 450: LED.bright(IO.eeread(1)) for i = 0 to 15 for z = 0 to 7 LED.pchar(z, read 54, i + z) next z delay 250 next i IO.eewrite(13, 0) ' Auto Nachtmodus sofort aus delay 1000 return '================================================ ' MODE Stoppuhr 500: IO.eewrite(6, 1) ' MODE Stoppuhr if (IO.eeread(2)) = 1 then LED.adp(0x01) else LED.adp(0) ' alarm punkt d = IO.eeread(3) ' alarm Stunde e = IO.eeread(4) ' alarm Minute for i = 0 to 16 for z = 0 to 7 LED.pchar(z, read 59, i + z) next z delay 250 next i LED.pchar(2, 20) LED.pchar(5, 20) 504: z = 0 y = 0 w = 0 j = 0 505: LED.pdez(0, y, 1, 1) ' Minuten LED.pdez(3, w, 1, 1) ' Sekunden LED.pdez(6, j, 1, 1) k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k = 1 and z = 0 then goto 600 ' MODE Timer nur bei stopp if k = 2 then z = z + 1 ' Start / Stopp / weiter if z > 1 then z = 0 if k = 4 and z = 0 then goto 504 ' reset nur bei stopp if k = 8 and z = 0 then goto 508 ' return Uhr nur bei stopp delay 16 if z = 0 goto 505 j = j + 1 if j > 59 then w = w + 1 if j > 59 then j = 0 if w > 59 then y = y + 1 if w > 59 then w = 0 if d = (IO.getrtc(2)) and e = (IO.getrtc(1)) and (IO.eeread(2)) = 1 then goto 350 ' alarm prio show Alarm if y + w + j = 177 then goto 420 ' Music end goto 505 '................................... 508: IO.eewrite(6, 0) ' MODE Uhr goto 100 ' return Uhr '================================================ ' MODE Timer 600: IO.eewrite(6, 2) ' MODE Timer if (IO.eeread(2)) = 1 then LED.adp(0x01) else LED.adp(0) ' alarm punkt d = IO.eeread(16) ' alarm Stunde e = IO.eeread(17) ' alarm Minute for i = 0 to 15 for z = 0 to 7 LED.pchar(z, read 58, i + z) next z delay 250 next i LED.pchar(2, 20) LED.pchar(5, 20) 604: z = 0 y = 0 w = 0 j = 0 605: LED.pdez(0, y, 1, 1) ' Minuten LED.pdez(3, w, 1, 1) ' Sekunden LED.pdez(6, j, 1, 1) ' k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k = 1 and z = 0 then goto 508 ' Mode Uhr nur bei stopp if k = 2 then z = z + 1 ' Start / Stopp / weiter if z > 1 then z = 0 if k = 4 and z = 0 then goto 606 ' nur bei stopp Minuten+ if k = 8 and z = 0 then goto 607 ' nur bei stopp Sekunden+ delay 16 if z = 0 goto 605 if y + w + j = 0 then goto 420 ' Music end j = j - 1 if j < 0 then j = 59 if j = 59 then w = w - 1 if w < 0 then w = 59 if w = 59 and j = 59 then y = y - 1 if d = (IO.getrtc(2)) and e = (IO.getrtc(1)) and (IO.eeread(2)) = 1 then goto 350 ' alarm prio show Alarm goto 605 606: y = y + 1 if y > 59 then y = 0 goto 605 607: w = w + 1 if w > 59 then w = 0 goto 605 '================================================ ' Text: ' ' auto date 1000: if z % 200 > 100 goto 1001 LED.pchar(0, 21) LED.pchar(1, 21) LED.pchar(2, 10) LED.pchar(3, 19) LED.pchar(4, 26) LED.pchar(5, 27) LED.pchar(6, 21) LED.pchar(7, 21) return 1001: LED.pchar(0, 21) LED.pchar(1, 21) LED.pchar(2, 13) LED.pchar(3, 10) LED.pchar(4, 26) LED.pchar(5, 14) LED.pchar(6, 21) LED.pchar(7, 21) return ' beep 1010: LED.pchar(0, 21) LED.pchar(1, 21) LED.pchar(2, 11) LED.pchar(3, 14) LED.pchar(4, 14) LED.pchar(5, 18) LED.pchar(6, 21) LED.pchar(7, 21) return ' random 1020: LED.pchar(0, 21) LED.pchar(1, 21) LED.pchar(2, 24) LED.pchar(3, 10) LED.pchar(4, 25) LED.pchar(5, 13) LED.pchar(6, 21) LED.pchar(7, 21) return ' alarm set 1030: LED.pchar(0, 10) LED.pchar(1, 17) LED.pchar(2, 10) LED.pchar(3, 24) LED.pchar(4, 21) LED.pchar(5, 5) LED.pchar(6, 14) LED.pchar(7, 26) return ' nacht set 1050: if z % 200 > 100 goto 1051 LED.pchar(0, 21) LED.pchar(1, 25) LED.pchar(2, 10) LED.pchar(3, 12) LED.pchar(4, 16) LED.pchar(5, 26) LED.pchar(6, 21) LED.pchar(7, 21) return 1051: LED.pchar(0, 21) LED.pchar(1, 21) LED.pchar(2, 21) LED.pchar(3, 5) LED.pchar(4, 14) LED.pchar(5, 26) LED.pchar(6, 21) LED.pchar(7, 21) return ' uhr set 1060: LED.pchar(0, 19) LED.pchar(1, 16) LED.pchar(2, 24) LED.pchar(3, 21) LED.pchar(4, 5) LED.pchar(5, 14) LED.pchar(6, 26) LED.pchar(7, 21) return ' datum set 1070: LED.pchar(0, 13) LED.pchar(1, 10) LED.pchar(2, 26) LED.pchar(3, 14) LED.pchar(4, 21) LED.pchar(5, 5) LED.pchar(6, 14) LED.pchar(7, 26) return ' calib set 1080: LED.pchar(0, 12) LED.pchar(1, 10) LED.pchar(2, 17) LED.pchar(3, 22) LED.pchar(4, 21) LED.pchar(5, 5) LED.pchar(6, 14) LED.pchar(7, 26) return ' binaer 1090: LED.pchar(0, 21) LED.pchar(1, 11) LED.pchar(2, 22) LED.pchar(3, 23) LED.pchar(4, 10) LED.pchar(5, 14) LED.pchar(6, 24) LED.pchar(7, 21) return '================================================ ' SHOW Random (Spielautomat) 4000: if (IO.eeread(2)) = 1 then LED.adp(0x01) else LED.adp(0) ' alarm punkt for r = 0 to 7 for y = 1 to 24 for i = 7 downto r w = random % 128 LED.praw(i, w) next i delay 35 next y if r = 7 or r = 6 then s = IO.getrtc(0) if r = 7 then LED.pchar(r ,s % 10) if r = 6 then LED.pchar(r ,s / 10) if r = 5 then LED.pchar(r ,20) if r = 4 then LED.pchar(r ,m % 10) if r = 3 then LED.pchar(r ,m / 10) if r = 2 then LED.pchar(r ,20) if r = 1 then LED.pchar(r ,n % 10) if r = 0 then LED.pchar(r ,n / 10) next r k = IO.getkey() ' key reset goto 100 '=================== INIT ======================= ' EEPROM INIT 8000: print "LED TUBE Clock" print " by Vanessa" k = IO.getkey() if k <> 0 then IO.eewrite(0, 0xFFFF) ' Sartup INIT (Reset) if (IO.eeread(0)) = 0xABCD then goto 8010 print "Resetting EEPROM..." print " " IO.eewrite(0, 0xABCD) ' 0 = 0xABCD IO.eewrite(1, 5) ' 1 = Helligkeit (5) IO.eewrite(2, 0) ' 2 = Alarm (0) IO.eewrite(3, 12) ' 3 = Alarm Zeit Stunde (12) IO.eewrite(4, 0) ' 4 = Alarm Zeit Minute (0) IO.eewrite(5, 1) ' 5 = Datum auto Anzeige (1) IO.eewrite(6, 0) ' 6 = Mode (0) IO.eewrite(7, 1) ' 7 = Tasten-Beep (1) IO.eewrite(8, 1) ' 8 = Random Modus (Spielautomat) (1) IO.eewrite(9, 0) ' 9 = Auto Nachtmodus start STUNDEN (0) IO.eewrite(10, 0) ' 10 = Auto Nachtmodus start MINUTEN (0) IO.eewrite(11, 0) ' 11 = Auto Nachtmodus stopp STUNDEN (0) IO.eewrite(12, 0) ' 12 = Auto Nachtmodus stopp MINUTEN (0) IO.eewrite(13, 0) ' 13 = Auto Nachtmodus (0) IO.eewrite(14, 0) ' 14 = Zeitkorrektur (0) IO.eewrite(15, 0) ' 15 = Binäre Zeitanzeige (0) print "EEPROM reset." print " " IO.beep(35) delay 500 IO.beep(0) ' rESEt LED.adp(0) for i = 0 to 13 for z = 0 to 7 LED.pchar(z, read 50, i + z) next z delay 180 next i 8010: for i = 0 to 15 ' Ausgabe der EEPROM-Daten t = IO.eeread(i) print "EEP[";i;"] = ";t next i return ' start UHR '================================================ ' GETKEY ' k: 0 = No Key, k + 10 = LONG, k = SHORT 9000: k = IO.getkey() if k = 0 then goto 9020 i = 0 9010: z = IO.keystate() if z = 0 then goto 9020 delay 10 i = i + 1 if i < 50 then goto 9010 k = z + 10 9020: return '================================================ ' GETASCII 9050: z = IO.sys(0, 0) ' Anzahl Zeichen im Buffer if z = 0 then return z = IO.sys(1, 0) ' Buffer lesen print "Z =",z IO.sys(0, 1) ' Buffer löschen return '================================================ ' BEEP 9100: if (IO.eeread(7)) = 0 then return ' beep aus IO.beep(35) delay 25 IO.beep(0) return 9200: if (IO.eeread(7)) = 0 then goto 99 ' beep aus 9205: IO.beep(35) delay 25 IO.beep(0) goto 99 '================================================ ' SETUP 10000: LED.adp(0) for i = 0 to 6 for z = 0 to 7 LED.pchar(z, read 60, i + z) next z delay 220 next i delay 1000 p = 0 z = 0 10005: k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 1 then p = p + 1 if p = 9 then p = 0 if p = 0 gosub 1030 ' Alarm Set if p = 1 gosub 1050 ' Nacht set if p = 2 gosub 1060 ' Uhr Set if p = 3 gosub 1070 ' Datum Set if p = 4 gosub 1000 ' Auto Date if p = 5 gosub 1020 ' Random if p = 6 gosub 1010 ' Beep if p = 7 gosub 1080 ' Calib set if p = 8 gosub 1090 ' Binär if k = 2 then goto 10010 ' auswahl if k = 8 then goto 99 ' return Uhr z = z + 1 delay 10 if z > 1500 then goto 9200 ' auto RETURN Uhr beep goto 10005 10010: if p = 0 then goto 12000 ' Alarm SET if p = 1 then goto 13000 ' Auto Nachtmodus Zeit SET if p = 2 then goto 11400 ' Uhr einstellen if p = 3 then goto 14000 ' Datum einstellen if p = 4 then goto 10050 ' Datum auto Anzeige AN / AUS if p = 5 then goto 10050 ' random AN / AUS if p = 6 then goto 10050 ' Beep AN / AUS if p = 7 then goto 11500 ' Zeitkorrektur einstellen if p = 8 then goto 10450 ' Binär AN / AUS / AUTO '================================================ ' Auswahl AN / AUS 10050: j = p if j = 4 then p = IO.eeread(5) ' Datum auto Anzeige if j = 5 then p = IO.eeread(8) ' random if j = 6 then p = IO.eeread(7) ' Beep LED.clear() if p = 0 then gosub 10100 else gosub 10200 10060: k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 4 then gosub 10150 ' an / aus if k = 2 then goto 10300 ' save if k = 8 then goto 10000 ' return setup delay 40 z = z + 1 if z > 600 then goto 10000 ' auto RETURN setup goto 10060 10100: p = 0 ' aus LED.pchar(2, 10) LED.pchar(3, 19) LED.pchar(4, 5) LED.pchar(5, 21) return 10150: p = p + 1 if p = 2 then p = 0 if p = 0 then gosub 10100 else gosub 10200 return 10200: p = 1 ' an LED.pchar(2, 21) LED.pchar(3, 10) LED.pchar(4, 25) LED.pchar(5, 21) return 10300: if j = 4 and p <> (IO.eeread(5)) then IO.eewrite(5, p) ' save Datum auto Anzeige if j = 5 and p <> (IO.eeread(8)) then IO.eewrite(8, p) ' save random if j = 6 and p <> (IO.eeread(7)) then IO.eewrite(7, p) ' save Beep LED.pchar(2, 5) LED.pchar(3, 10) LED.pchar(4, 19) LED.pchar(5, 14) delay 2000 goto 10000 ' RETURN setup '================================================ ' Binär AN / AUS / AUTO 10450: p = IO.eeread(15) ' Binär LED.clear() if p = 0 then gosub 10100 ' aus if p = 1 then gosub 10200 ' an if p = 2 then gosub 10600 ' auto 10460: k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 4 then gosub 10550 ' an / aus / auto if k = 2 then goto 10700 ' save if k = 8 then goto 10000 ' return setup delay 40 z = z + 1 if z > 600 then goto 10000 ' auto RETURN setup goto 10460 10550: p = p + 1 if p = 3 then p = 0 if p = 0 then gosub 10100 ' aus if p = 1 then gosub 10200 ' an if p = 2 then gosub 10600 ' auto return 10600: p = 2 ' auto LED.pchar(2, 10) LED.pchar(3, 19) LED.pchar(4, 26) LED.pchar(5, 27) return 10700: if p <> (IO.eeread(15)) then IO.eewrite(15, p) ' save Binär LED.pchar(2, 5) LED.pchar(3, 10) LED.pchar(4, 19) LED.pchar(5, 14) delay 2000 goto 10000 ' RETURN setup '================================================ ' Uhr Set 11400: n = IO.getrtc(2) ' STUNDEN m = IO.getrtc(1) ' MINUTEN z = 0 LED.pchar(2, 20) LED.pchar(5, 20) 11405: LED.pdez(0, n, 1, 1) ' STUNDEN LED.pdez(3, m, 1, 1) ' MINUTEN LED.pdez(6, 0, 1, 1) ' SEKUNDEN k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 8 and m < 60 then m = m + 1 ' MINUTEN if m = 60 then m = 0 if k = 4 and n < 24 then n = n + 1 ' STUNDEN if n = 24 then n = 0 if k = 2 then goto 11410 ' save delay 40 z = z + 1 if z > 600 then goto 10000 ' auto RETURN setup goto 11405 11410: if m <> (IO.getrtc(1)) then IO.setrtc(1, m) ' save MINUTEN if n <> (IO.getrtc(2)) then IO.setrtc(2, n) ' save STUNDEN IO.setrtc(0, 0) ' save SEKUNDEN LED.clear() LED.pchar(2, 5) LED.pchar(3, 10) LED.pchar(4, 19) LED.pchar(5, 14) delay 2000 goto 10000 ' RETURN setup '================================================ ' Calib Set 11500: p = IO.eeread(14) ' Zeitkorrektur j = p z = 0 LED.clear() 11505: if j < 0 then LED.pchar(4, 20) else LED.pchar(4, 21)' minus Zeichen if j < 0 then j = j * -1 ' nur positive Werte bei LED.pdez LED.pdez(5, j, 2, 0) ' Zeitkorrektur Wert k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 8 then p = p + 1 ' Offset + if p > 510 then p = 0 if k = 4 then p = p - 1 ' Offset - if p < -510 then p = 0 j = p if k = 2 then goto 11510 ' save delay 40 z = z + 1 if z > 600 then goto 10000 ' auto RETURN setup goto 11505 11510: if p <> (IO.eeread(14)) then IO.eewrite(14, p) ' save LED.clear() LED.pchar(2, 5) LED.pchar(3, 10) LED.pchar(4, 19) LED.pchar(5, 14) delay 2000 goto 10000 ' RETURN setup '================================================ ' Alarm Set 12000: LED.clear() w = IO.eeread(3) ' Alarm STUNDEN p = IO.eeread(4) ' Alarm MINUTEN z = 0 LED.pchar(0, 10) LED.pchar(1, 17) LED.pchar(5, 20) 12005: LED.pdez(3, w, 1, 1) ' Alarm STUNDEN LED.pdez(6, p, 1, 1) ' Alarm MINUTEN k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 8 and p < 60 then p = p + 1 ' Alarm MINUTEN if p = 60 then p = 0 if k = 4 and w < 24 then w = w + 1 ' Alarm STUNDEN if w = 24 then w = 0 if k = 2 then goto 12010 ' save delay 40 z = z + 1 if z > 600 then goto 10000 ' auto RETURN setup goto 12005 12010: if p <> (IO.eeread(4)) then IO.eewrite(4, p) ' save Alarm MINUTEN if w <> (IO.eeread(3)) then IO.eewrite(3, w) ' save Alarm STUNDEN LED.clear() LED.pchar(2, 5) LED.pchar(3, 10) LED.pchar(4, 19) LED.pchar(5, 14) delay 2000 goto 10000 ' RETURN setup '================================================ ' Auto Nachtmodus Set 13000: LED.clear() LED.pchar(0, 10) LED.pchar(1, 25) LED.pchar(5, 20) w = IO.eeread(9) ' Auto Nachtmodus start STUNDEN p = IO.eeread(10) ' Auto Nachtmodus start MINUTEN z = 0 13005: LED.pdez(3, w, 1, 1) ' Auto Nachtmodus start STUNDEN LED.pdez(6, p, 1, 1) ' Auto Nachtmodus start MINUTEN k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 8 and p < 60 then p = p + 1 ' Auto Nachtmodus start MINUTEN if p = 60 then p = 0 if k = 4 and w < 24 then w = w + 1 ' Auto Nachtmodus start STUNDEN if w = 24 then w = 0 if k = 2 then goto 13010 ' save delay 40 z = z + 1 if z > 600 then goto 10000 ' auto RETURN setup goto 13005 13010: if p <> (IO.eeread(10)) then IO.eewrite(10, p) ' save Auto Nachtmodus start MINUTEN if w <> (IO.eeread(9)) then IO.eewrite(9, w) ' save Auto Nachtmodus start STUNDEN LED.clear() LED.pchar(2, 5) LED.pchar(3, 10) LED.pchar(4, 19) LED.pchar(5, 14) delay 2000 '..................................... LED.clear() LED.pchar(0, 10) LED.pchar(1, 19) LED.pchar(2, 5) LED.pchar(5, 20) w = IO.eeread(11) ' Auto Nachtmodus stopp STUNDEN p = IO.eeread(12) ' Auto Nachtmodus stopp MINUTEN z = 0 13105: LED.pdez(3, w, 1, 1) ' Auto Nachtmodus stopp STUNDEN LED.pdez(6, p, 1, 1) ' Auto Nachtmodus stopp MINUTEN k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 8 and p < 60 then p = p + 1 ' Auto Nachtmodus stopp MINUTEN if p = 60 then p = 0 if k = 4 and w < 24 then w = w + 1 ' Auto Nachtmodus stopp STUNDEN if w = 24 then w = 0 if k = 2 then goto 13110 ' save delay 40 z = z + 1 if z > 600 then goto 10000 ' auto RETURN setup goto 13105 13110: if p <> (IO.eeread(12)) then IO.eewrite(12, p) ' save Auto Nachtmodus stopp MINUTEN if w <> (IO.eeread(11)) then IO.eewrite(11, w) ' save Auto Nachtmodus stopp STUNDEN LED.clear() LED.pchar(2, 5) LED.pchar(3, 10) LED.pchar(4, 19) LED.pchar(5, 14) delay 2000 goto 10000 ' RETURN setup '================================================ ' Date set 14000: w = IO.getrtc(3) ' Tag p = IO.getrtc(4) ' Monat z = 0 LED.pchar(2, 20) LED.pchar(5, 20) 14005: LED.pdez(3, w, 1, 1) ' Tag LED.pdez(6, p, 1, 1) ' Monat k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 8 then p = p + 1 ' Monat if p = 13 then p = 1 if k = 4 then w = w + 1 ' Tag if w = 32 then w = 1 if k = 2 then goto 14010 ' save delay 40 z = z + 1 if z > 600 then goto 10000 ' auto RETURN setup goto 14005 14010: if p <> (IO.getrtc(4)) then IO.setrtc(4, p) ' Monat if w <> (IO.getrtc(3)) then IO.setrtc(3, w) ' Tag LED.clear() LED.pchar(2, 5) LED.pchar(3, 10) LED.pchar(4, 19) LED.pchar(5, 14) delay 2000 '..................................... w = IO.getrtc(5) ' JAHR z = 0 14105: LED.pdez(2, w, 3, 0) ' JAHR k = IO.getkey() if k <> 0 then gosub 9100 ' beep bei Tastendruck if k <> 0 then z = 0 if k = 4 and w > 2010 then w = w - 1 ' JAHR if k = 8 and w < 2200 then w = w + 1 ' JAHR if k = 2 then goto 14110 ' save delay 40 z = z + 1 if z > 600 then goto 10000 ' auto RETURN setup goto 14105 14110: if w <> (IO.getrtc(5)) then IO.setrtc(5, w) ' save JAHR LED.clear() LED.pchar(2, 5) LED.pchar(3, 10) LED.pchar(4, 19) LED.pchar(5, 14) delay 2000 goto 10000 ' RETURN setup '================================================ end