' ************************************ ' * 24Segment-6 Clock Demo * ' * LED-Basic >= 15.2.7 required * ' * modyfied by Vanessa Ver, 1.01 * ' ************************************ ' ' Bedienungsanleitung: ' ' Encoder, ' 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 zeigt das Datum / Temperatur. ' Langer Druck auf Taste wechselt den MODUS (Uhr --> Stoppuhr --> Timer --> Uhr). ' Die Auswahl erfolgt durch kurzen Druck. ' ' Stoppuhr: (max 23:59:59) ' kurzer Druck = start/stopp/weiter. ' langer Druck während des Zählens = zurück zur Uhr. ' langer Druck bei Stopp = zurück zum Modus Auswahl (Reset). ' (Bei Maximum automatisch mit Sound zurück auf Uhr). ' ' ' Timer: (max 23:59:59) ' Timer set: ' kurzer Druck = Auswahl Stunde, Minute, Sekunde (Punkte blinken). ' Encoder (Drehrad) = Wert. ' langer Druck = Timer start. ' Timer start: ' kurzer Druck = stopp/weiter. ' langer Druck während des Zählens = zurück zur Uhr. ' langer Druck bei Stopp = zurück zum Modus Auswahl (Reset). ' (Timer null = automatisch mit Sound zurück auf Uhr). ' ' ' Encoder (Drehrad): ' Drehsequenz (Auswahl durch kurzen Druck) : ' -> Alarm (An/Aus), An = Punkt bei Sek. plus zyklische Alarm Anzeige. ' Alarmdauer = 1 Minute, durch Taste unterbrechbar. ' -> Auto Datum / Temp (An/Aus), An = zyklische Datum / Temp Anzeige. ' -> Tasten Beep (An/Aus). ' -> Random (Spielautomat) (An/Aus), An = Zyklische Spielautomat Anzeige. ' -> Helligkeit, 0-15 (0 = Auto Sensor) ' -> Alarm Zeit: (Drehrad = Wert) ' Langer Druck speichert die Einstellung. ' Kurzer Druck wechselt zwischen Minuten, Stunden (Auswahl angezeigt durch Punkte). ' -> Zeit: (Drehrad = Wert) ' Langer Druck speichert die Einstellung. ' Kurzer Druck wechselt zwischen Stunden, Minuten, Sekunden (Auswahl angezeigt durch Punkte). ' -> Datum: (Drehrad = Wert) ' Langer Druck speichert die Einstellung. ' Kurzer Druck wechselt zwischen Monat, Tag, Jahr (Auswahl angezeigt durch Punkte). ' ' Bei Nichtbetätigung abbruch nach ca. 4 Sekungen oder durch langen Tastendruck. ' ' ' Alle Einstellungen bleiben bei Stromausfall erhalten (EEPROM). ' Bei angeschlossenem Terminal (PC) weitere Ausgabe von Werten. ' Alarm ist priorisiert bei Timer / Stoppuhr. ' Versionsanzeige bei Uhrenstart. ' Softwarecheck bei Systemstart. ' Random (Spielautomat) Anzeige (an / abschaltbar). ' Datum / Temp auto Anzeige (an / abschaltbar). ' Tasten-Beep (an / abschaltbar). ' ' ' BITTE BEACHTEN !! ' Die erste LED wird über ROT der ersten RGB-Led angesteuert, ' die zweite LED wird über GRÜN der ersten RGB-Led angesteuert, ' die dritte LED wird über BLAU der ersten RGB-Led angesteuert, ' die vierte LED wird über ROT der zweiten RGB-Led angesteuert, ' die fünfte LED wird über GRÜN der zweiten RGB-Led angesteuert, ' die sechste LED wird über BLAU der zweiten RGB-Led angesteuert ' und so weiter.... ' Die Chip Temperatur wird nur alle 64 Sekunden intern aktualisiert ! '=========================================================== ### L48 P0 S2 CRGB M100 ' Set initial EEPROM state (for testing, uncomment to set on run) ' IO.eewrite(0, 101) ' 0 = Version (101) ' 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, 0) ' 5 = Datum / Temp auto Anzeige (0) ' IO.eewrite(6, 0) ' 6 = Mode (0) ' IO.eewrite(7, 1) ' 7 = Tasten-Beep (1) ' IO.eewrite(8, 0) ' 8 = Random Modus (Spielautomat) (0) ' 10: ' 0-9 ' 3 2 1 0 7 6 5 4 ' BGRBGRBGRBGR BGRBGRBGRBGR data 0b000011111111, 0b000110000011 data 0b000000001100, 0b000000000011 data 0b000000110111, 0b000110000100 data 0b000000111111, 0b000000000100 data 0b110010000000, 0b001001100100 data 0b001100111011, 0b000000000100 data 0b000011111001, 0b001000000100 data 0b000000000011, 0b001110000111 data 0b000011111111, 0b001000000100 data 0b000010011111, 0b001000000100 ' 11: ' A-Z ' 3 2 1 0 7 6 5 4 ' BGRBGRBGRBGR BGRBGRBGRBGR data 0b000011001111, 0b001000000100 data 0b110000111111, 0b000001100100 data 0b000011110011, 0b000000000000 data 0b110000111111, 0b000001100000 data 0b000011110011, 0b001000000000 data 0b000011000011, 0b001000000000 data 0b000011111011, 0b000000000100 data 0b000011001100, 0b001000000100 data 0b110000110011, 0b000001100000 data 0b000001111100, 0b000000000000 data 0b000011000000, 0b001000011011 data 0b000011110000, 0b000000000000 data 0b001111001100, 0b000000000011 data 0b001111001100, 0b000000011000 data 0b000011111111, 0b000000000000 data 0b000011000111, 0b001000000100 data 0b000011111111, 0b000000011000 data 0b000011000111, 0b001000011100 data 0b000010111011, 0b001000000100 data 0b110000000011, 0b000001100000 data 0b000011111100, 0b000000000000 data 0b000011000000, 0b000110000011 data 0b000011001100, 0b000110011000 data 0b001100000000, 0b000110011011 data 0b000010000100, 0b001001100100 data 0b000000110011, 0b001110000111 ' a-z ' 3 2 1 0 7 6 5 4 ' BGRBGRBGRBGR BGRBGRBGRBGR data 0b000001110000, 0b001001100000 data 0b000011100000, 0b001001100000 data 0b000001100000, 0b001000000000 data 0b000000011100, 0b000001100100 data 0b000001100000, 0b001110000000 data 0b110000000010, 0b001001100100 data 0b001100011111, 0b000000000100 data 0b000011000000, 0b001001100000 data 0b100000000000, 0b000001100000 data 0b110001100000, 0b000001100000 data 0b110000000000, 0b000001111011 data 0b000011100000, 0b000000000000 data 0b000001001000, 0b001001100100 data 0b000001000000, 0b001001100000 data 0b000001100000, 0b001001100000 data 0b110011000001, 0b001000000000 data 0b110010000001, 0b001001100000 data 0b000001000000, 0b001000000000 data 0b000000100000, 0b000001100100 data 0b110000010000, 0b001001100100 data 0b000001100000, 0b000001100000 data 0b000001000000, 0b000110000000 data 0b000001001000, 0b000110011000 data 0b000000110000, 0b001001100100 data 0b000100000000, 0b000001100001 data 0b000000100000, 0b001110000000 ' Leerzeichen ' 3 2 1 0 7 6 5 4 ' BGRBGRBGRBGR BGRBGRBGRBGR data 0b000000000000, 0b000000000000 ' 12: ' 0-9 mit Punkt rechts ' 3 2 1 0 7 6 5 4 ' BGRBGRBGRBGR BGRBGRBGRBGR data 0b000011111111, 0b010110000011 data 0b000000001100, 0b010000000011 data 0b000000110111, 0b010110000100 data 0b000000111111, 0b010000000100 data 0b110010000000, 0b011001100100 data 0b001100111011, 0b010000000100 data 0b000011111001, 0b011000000100 data 0b000000000011, 0b011110000111 data 0b000011111111, 0b011000000100 data 0b000010011111, 0b011000000100 ' 0-9 mit Punkt links ' 3 2 1 0 7 6 5 4 ' BGRBGRBGRBGR BGRBGRBGRBGR data 0b000011111111, 0b100110000011 data 0b000000001100, 0b100000000011 data 0b000000110111, 0b100110000100 data 0b000000111111, 0b100000000100 data 0b110010000000, 0b101001100100 data 0b001100111011, 0b100000000100 data 0b000011111001, 0b101000000100 data 0b000000000011, 0b101110000111 data 0b000011111111, 0b101000000100 data 0b000010011111, 0b101000000100 ' 13: ' Sonderzeichen (Stern,°,-,+) ' 3 2 1 0 7 6 5 4 ' BGRBGRBGRBGR BGRBGRBGRBGR data 0b111111111111, 0b111111111111 data 0b110000000110, 0b000000000100 data 0b000000000000, 0b001000000100 data 0b010000000000, 0b001001000100 ' ' Diamex 20: data 3,34,26,38,30,49 ' AutoDa 21: data 0,46,45,40,3,26 ' Alarm 22: data 0,37,26,43,38,53 ' An 23: data 53,0,39,53,53,53 ' Aus 24: data 53,0,46,44,53,53 ' TaBeep 25: data 19,26,1,30,30,41 ' Random 26: data 17,26,39,29,40,38 ' Hell 27: data 7,30,37,37,53,53 ' AlZeit 28: data 0,37,25,30,34,45 ' Zeit 29: data 25,30,34,45,53,53 ' Datum 30: data 3,26,45,46,38,53 ' Stoppuhr 31: data 53,53,53,53,53,53,18,45,40,41,41,46,33,43,53,53,53,53,53,53 ' Timer 32: data 53,53,53,53,53,53,19,34,38,30,43,53,53,53,53,53,53 ' Music Timer / Stoppuhr max :-) 40: 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 ' Helligkeit (0...15) 41: data 0, 4, 8, 13, 18, 25, 37, 51, 68, 87, 109, 133, 160, 189, 221, 255 '=========================================================== ' GLOBAL VARS ' t = temp, i = loop, s = sekunde, m = minute, n = stunde ' z = zeichen, d = digit, v = helligkeit, k = taster, r g b = LED-24Segment ' x = sek-zähler, e = encoder, a = alarm flag '=========================================================== ' Version for v = 0 to 80 step 2 for d = 0 to 5 z = read 20, d ' Diamex gosub 7001 ' A-z, a-z next d LED.show() next v for i = 0 to 6 for a = 0 to 5 z = read 20, a' Diamex d = a + i gosub 7001 ' A-z, a-z next a LED.show() delay 120 LED.iall(0) next i z = 1 ' version d = 0 ' digit gosub 7002 ' 0-9 mit Punkt z = 0 ' version d = 1 ' digit gosub 7000 ' 0-9 z = 1 ' version d = 2 ' digit gosub 7000 ' 0-9 z = 21 ' V d = 4 ' digit gosub 7001 ' A-z, a-z z = 0 ' A d = 5 ' digit gosub 7001 ' A-z, a-z LED.show() delay 1000 '=========================================================== ' EEPROM INIT if (IO.eeread(0)) <> 101 or (IO.getkey()) = 1 gosub 8000 ' Softwareversion check or reset print "24Segment-6 Clock Demo" print " by Vanessa" for i = 0 to 8 ' EEPROM data output t = IO.eeread(i) print "EEP[";i;"] = ";t next i 99: a = 1 ' alarm flag gosub 110 ' helligkeit e = 0 IO.setenc(e, 1, 0) if (IO.eeread(6)) = 1 goto 5000 ' MODE Stoppuhr if (IO.eeread(6)) = 2 goto 6000 ' MODE Timer '=========================================================== ' loop 100: if e <> (IO.getenc()) goto 500 ' Encoderauwertung gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 1 and a = 1 then a = 0 ' alarm flag if k = 1 goto 108 ' Datum / Temp if k = 11 goto 5000 ' MODE Stoppuhr s = IO.getrtc(0) ' SEKUNDEN if x = s goto 102 x = s if s = 0 then a = 1 ' alarm flag m = IO.getrtc(1) ' MINUTEN n = IO.getrtc(2) ' STUNDEN if s > 0 and a = 1 and (IO.eeread(2)) = 1 and (IO.eeread(3)) = n and (IO.eeread(4)) = m goto 9205 ' alarm if s % 10 = 0 gosub 110 ' helligkeit if m % 2 = 1 and s = 10 and (IO.eeread(2)) = 1 goto 200 ' show alarm if m % 2 = 0 and s = 10 and (IO.eeread(8)) = 1 goto 400 ' show random if s = 40 and (IO.eeread(5)) = 1 goto 108 ' Auto Datum / Temp anzeigen 102: gosub 104 ' show time LED.show() goto 100 ' loop end '=========================================================== ' SHOW TIME ' z = zeichen, d = digit, v = helligkeit 104: z = s % 10 d = 5 if (IO.eeread(2)) = 0 gosub 7000 else gosub 7002' wenn alarm zeige Punkt z = s / 10 d = 4 gosub 7000 ' 0-9 z = m % 10 d = 3 gosub 7000 ' 0-9 z = m / 10 d = 2 gosub 7000 ' 0-9 z = n % 10 d = 1 gosub 7000 ' 0-9 z = n / 10 d = 0 gosub 7000 ' 0-9 return '=========================================================== ' SHOW Date ' z = zeichen, d = digit, v = helligkeit 108: gosub 1000 ' digit play (Zeit) for i = 6 downto 0 z = ((IO.getrtc(5)) % 100) % 10 ' Jahr d = 5 + i if (IO.eeread(2)) = 0 gosub 7000 else gosub 7002' wenn alarm zeige Punkt z = ((IO.getrtc(5)) % 100) / 10 ' Jahr d = 4 + i gosub 7000 ' 0-9 z = (IO.getrtc(4)) % 10 ' Monat d = 3 + i gosub 7002 ' 0-9 mit Punkt z = (IO.getrtc(4)) / 10 ' Monat d = 2 + i gosub 7000 ' 0-9 z = (IO.getrtc(3)) % 10 ' Tag d = 1 + i gosub 7002 ' 0-9 mit Punkt z = (IO.getrtc(3)) / 10 ' Tag d = i gosub 7000 ' 0-9 LED.show() delay 100 next i delay 2500 '............................................. ' SHOW Temp y = IO.sys(97, 0) ' Chip-Temp if y < 0 then w = 0 else w = 1 ' minus / plus flag if y < 0 then y = -1 * y ' minus zu plus wegen Anzeige y = y / 4 ' real-temp for i = 6 downto 0 z = 2 ' C d = 5 + i gosub 7001 ' A-z, a-z z = 1 ' ° d = 4 + i gosub 7003 ' Sonderzeichen z = y % 10 ' Chip-Temp d = 3 + i gosub 7000 ' 0-9 if y / 10 <> 0 then z = y / 10 else z = 52 ' Chip-Temp oder leer d = 2 + i if y / 10 <> 0 then gosub 7000 else gosub 7001 ' 0-9 oder A-z, a-z if w = 1 then z = 3 else z = 2' plus oder minus d = 1 + i gosub 7003 ' Sonderzeichen z = 19 ' T d = i gosub 7001 ' A-z, a-z LED.show() delay 100 next i delay 2500 gosub 1002 ' digit play (Zeit) k = IO.getkey() ' reset key goto 100 ' Uhr '=========================================================== ' Helligkeit 110: v = read 41, IO.eeread(1) ' Helligkeit if v = 0 then v = IO.getldr() ' Helligkeit sensor if v < 4 then v = 4 ' min bei ldr return '=========================================================== ' show Alarm ' z = zeichen, d = digit, v = helligkeit 200: if (IO.eeread(6)) = 0 gosub 1000 ' digit play (Zeit) y = v for i = 0 to 50 if y < 6 then v = 4 else v = 4 + random % (y - 4) z = (IO.eeread(4)) % 10 d = 5 gosub 7002 ' 0-9 mit Punkt if y < 6 then v = 4 else v = 4 + random % (y - 4) z = (IO.eeread(4)) / 10 d = 4 gosub 7000 ' 0-9 if y < 6 then v = 4 else v = 4 + random % (y - 4) z = (IO.eeread(3)) % 10 d = 3 gosub 7000 ' 0-9 if y < 6 then v = 4 else v = 4 + random % (y - 4) z = (IO.eeread(3)) / 10 d = 2 gosub 7000 ' 0-9 v = y z = 37 ' l d = 1 gosub 7001 ' A-z, a-z z = 0 ' A d = 0 gosub 7001 ' A-z, a-z LED.show() delay 50 next i if (IO.eeread(6)) = 0 gosub 1002 ' digit play (Zeit) if (IO.eeread(6)) <> 0 then IO.eewrite(6, 0) ' Mode Uhr von Alarm prio k = IO.getkey() ' reset key goto 100 ' Uhr '=========================================================== ' SHOW Random (Spielautomat) 400: for i = 0 to 5 for y = 1 to 23 for d = 5 downto i z = random % 10 gosub 7000 ' 0-9 next d LED.show() delay 15 next y d = i if i = 5 then z = (IO.getrtc(0)) % 10 if i = 5 gosub 7000 ' 0-9 if i = 4 then z = s / 10 if i = 4 gosub 7000 ' 0-9 if i = 3 then z = m % 10 if i = 3 gosub 7000 ' 0-9 if i = 2 then z = m / 10 if i = 2 gosub 7000 ' 0-9 if i = 1 then z = n % 10 if i = 1 gosub 7000 ' 0-9 if i = 0 then z = n / 10 if i = 0 gosub 7000 ' 0-9 next i k = IO.getkey() ' reset key goto 100 ' Uhr '=========================================================== ' Musik end 420: k = 0 430: t = read 40, k i = read 40, k + 1 k = k + 2 if t = 0 then IO.eewrite(6, 0) ' Mode Uhr if t = 0 goto 99 ' Uhr IO.beep(t) delay i IO.beep(0) delay 100 goto 430 '=========================================================== ' Encoderauswertung 500: x = 0 IO.setenc(0, 7, 0) 510: e = IO.getenc() if y <> e then x = 0 if y <> e then y = e if e = 0 gosub 520 ' Alarm if e = 1 gosub 530 ' AutoDa if e = 2 gosub 540 ' TaBeep if e = 3 gosub 550 ' Random if e = 4 gosub 560 ' Hell if e = 5 gosub 570 ' AlZeit if e = 6 gosub 580 ' Zeit if e = 7 gosub 590 ' Datum LED.show() gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k <> 0 then x = 0 if k = 11 goto 99 ' Uhr if k = 1 and e = 0 gosub 525 ' Alarm An / Aus if k = 1 and e = 1 gosub 535 ' AutoDatum / Temp An / Aus if k = 1 and e = 2 gosub 545 ' TastenBeep An / Aus if k = 1 and e = 3 gosub 555 ' Random An / Aus if k = 1 and e = 4 gosub 565 ' Helligkeit if k = 1 and e = 5 gosub 575 ' Alarm Zeit if k = 1 and e = 6 gosub 585 ' Zeit if k = 1 and e = 7 gosub 595 ' Datum x = x + 1 if x > 300 goto 99 ' Uhr delay 10 goto 510 '................................... ' An 515: for d = 0 to 5 z = read 23, d ' An gosub 7001 ' A-z, a-z next d return ' Aus 516: for d = 0 to 5 z = read 24, d ' Aus gosub 7001 ' A-z, a-z next d return '=========================================================== ' Alarm 520: for d = 0 to 5 z = read 22, d ' Alarm gosub 7001 ' A-z, a-z next d return '................................... ' Alarm An / Aus 525: if (IO.eeread(2)) = 0 then IO.setenc(0, 1, 0) else IO.setenc(1, 1, 0) ' set encoder 526: if (IO.getenc()) = 0 gosub 516 else gosub 515' Aus / An LED.show() delay 10 gosub 9000 ' GETKEY if k <> 1 goto 526 gosub 9100 ' beep bei Tastendruck IO.eewrite(2, IO.getenc()) ' Alarm An / Aus IO.setenc(e, 7, 0) ' reset encoder return '=========================================================== ' AutoDatum / Temp 530: for d = 0 to 5 z = read 21, d ' AutoDa gosub 7001 ' A-z, a-z next d return '................................... ' AutoDatum / Temp An / Aus 535: if (IO.eeread(5)) = 0 then IO.setenc(0, 1, 0) else IO.setenc(1, 1, 0) ' set encoder 536: if (IO.getenc()) = 0 gosub 516 else gosub 515' Aus / An LED.show() delay 10 gosub 9000 ' GETKEY if k <> 1 goto 536 gosub 9100 ' beep bei Tastendruck IO.eewrite(5, IO.getenc()) ' AutoDatum / Temp An / Aus IO.setenc(e, 7, 0) ' reset encoder return '=========================================================== ' TaBeep 540: for d = 0 to 5 z = read 25, d ' TaBeep gosub 7001 ' A-z, a-z next d return '................................... ' TastenBeep An / Aus 545: if (IO.eeread(7)) = 0 then IO.setenc(0, 1, 0) else IO.setenc(1, 1, 0) ' set encoder 546: if (IO.getenc()) = 0 gosub 516 else gosub 515' Aus / An LED.show() delay 10 gosub 9000 ' GETKEY if k <> 1 goto 546 gosub 9100 ' beep bei Tastendruck IO.eewrite(7, IO.getenc()) ' TaBeep An / Aus IO.setenc(e, 7, 0) ' reset encoder return '=========================================================== ' Random 550: for d = 0 to 5 z = read 26, d ' Random gosub 7001 ' A-z, a-z next d return '................................... ' Random An / Aus 555: if (IO.eeread(8)) = 0 then IO.setenc(0, 1, 0) else IO.setenc(1, 1, 0) ' set encoder 556: if (IO.getenc()) = 0 gosub 516 else gosub 515' Aus / An LED.show() delay 10 gosub 9000 ' GETKEY if k <> 1 goto 556 gosub 9100 ' beep bei Tastendruck IO.eewrite(8, IO.getenc()) ' Random An / Aus IO.setenc(e, 7, 0) ' reset encoder return '=========================================================== ' Helligkeit 560: for d = 0 to 5 z = read 27, d ' Hell gosub 7001 ' A-z, a-z next d return '................................... ' Helligkeit 565: y = IO.eeread(1) IO.setenc(y, 15, 0) ' set encoder 566: if y <> (IO.getenc()) gosub 567 for d = 0 to 3 z = read 27, d ' Hell gosub 7001 ' A-z, a-z next d z = y % 10 d = 5 gosub 7000 ' 0-9 z = y / 10 d = 4 gosub 7000 ' 0-9 LED.show() delay 10 gosub 9000 ' GETKEY if k <> 1 goto 566 gosub 9100 ' beep bei Tastendruck IO.setenc(e, 7, 0) ' reset encoder return 567: y = IO.getenc() IO.eewrite(1, y) ' Helligkeit gosub 110 ' Helligkeit return '=========================================================== ' Alarm Zeit 570: for d = 0 to 5 z = read 28, d ' AlZeit gosub 7001 ' A-z, a-z next d return '................................... ' Alarm Zeit 575: y = 0 ' Flag m = IO.eeread(4) ' Alarm Minute n = IO.eeread(3) ' Alarm Stunde 576: s = IO.getrtc(0) ' SEKUNDEN if y = 0 then IO.setenc(n, 23, 0) else IO.setenc(m, 59, 0) ' set encoder z = m % 10 d = 5 if y = 1 and s & 1 = 0 gosub 7002 else gosub 7000 z = m / 10 d = 4 if y = 1 and s & 1 = 0 gosub 7002 else gosub 7000 z = n % 10 d = 3 if y = 0 and s & 1 = 0 gosub 7002 else gosub 7000 z = n / 10 d = 2 if y = 0 and s & 1 = 0 gosub 7002 else gosub 7000 z = 25 ' Z d = 1 gosub 7001 ' A-z, a-z z = 0 ' A d = 0 gosub 7001 ' A-z, a-z LED.show() delay 10 if x <> (IO.getenc()) gosub 578 gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 1 then y = y + 1 if y > 1 then y = 0 if k <> 11 goto 576 IO.eewrite(3, n) ' Alarm Zeit Stunde IO.eewrite(4, m) ' Alarm Zeit Minute IO.setenc(e, 7, 0) ' reset encoder return 578: if y = 0 then n = IO.getenc() else m = IO.getenc() x = IO.getenc() return '=========================================================== ' Zeit 580: for d = 0 to 5 z = read 29, d ' Zeit gosub 7001 ' A-z, a-z next d return '................................... ' Zeit 585: y = 0 ' Flag s = IO.getrtc(0) ' SEKUNDEN m = IO.getrtc(1) ' MINUTEN n = IO.getrtc(2) ' STUNDEN 586: i = IO.getrtc(0) ' SEKUNDEN if y = 0 then IO.setenc(n, 23, 0) ' set encoder if y = 1 then IO.setenc(m, 59, 0) ' set encoder if y = 2 then IO.setenc(s, 59, 0) ' set encoder z = s % 10 d = 5 if y = 2 and i & 1 = 0 gosub 7002 else gosub 7000 z = s / 10 d = 4 if y = 2 and i & 1 = 0 gosub 7002 else gosub 7000 z = m % 10 d = 3 if y = 1 and i & 1 = 0 gosub 7002 else gosub 7000 z = m / 10 d = 2 if y = 1 and i & 1 = 0 gosub 7002 else gosub 7000 z = n % 10 d = 1 if y = 0 and i & 1 = 0 gosub 7002 else gosub 7000 z = n / 10 d = 0 if y = 0 and i & 1 = 0 gosub 7002 else gosub 7000 LED.show() delay 10 if x <> (IO.getenc()) gosub 588 gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 1 then y = y + 1 if y > 2 then y = 0 if k <> 11 goto 586 IO.setrtc(2, n) ' Stunde IO.setrtc(1, m) ' Minute IO.setrtc(0, s) ' Sekunde IO.setenc(e, 7, 0) ' reset encoder return 588: if y = 0 then n = IO.getenc() if y = 1 then m = IO.getenc() if y = 2 then s = IO.getenc() x = IO.getenc() return '=========================================================== ' Datum 590: for d = 0 to 5 z = read 30, d ' Datum gosub 7001 ' A-z, a-z next d return '................................... ' Datum 595: y = 0 ' Flag s = (IO.getrtc(5)) % 100 ' Jahr m = IO.getrtc(4) ' Monat n = IO.getrtc(3) ' Tag 596: i = IO.getrtc(0) ' SEKUNDEN if y = 0 then IO.setenc(n, 31, 0) ' Tag if y = 1 then IO.setenc(m, 12, 0) ' Monat if y = 2 then IO.setenc(s, 99, 0) ' Jahr z = s % 10 ' Jahr d = 5 if y = 2 and i & 1 = 0 gosub 7002 else gosub 7000 z = s / 10 ' Jahr d = 4 if y = 2 and i & 1 = 0 gosub 7002 else gosub 7000 z = m % 10 d = 3 if y = 1 and i & 1 = 0 gosub 7002 else gosub 7000 z = m / 10 d = 2 if y = 1 and i & 1 = 0 gosub 7002 else gosub 7000 z = n % 10 d = 1 if y = 0 and i & 1 = 0 gosub 7002 else gosub 7000 z = n / 10 d = 0 if y = 0 and i & 1 = 0 gosub 7002 else gosub 7000 LED.show() delay 10 if x <> (IO.getenc()) gosub 598 gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 1 then y = y + 1 if y > 2 then y = 0 if k <> 11 goto 596 IO.setrtc(3, n) ' Tag IO.setrtc(4, m) ' Monat IO.setrtc(5, 2000 + s) ' Jahr IO.setenc(e, 7, 0) ' reset encoder return 598: if y = 0 then n = IO.getenc() if y = 1 then m = IO.getenc() if y = 2 then s = IO.getenc() x = IO.getenc() return '=========================================================== ' digit play (Zeit) ' z = zeichen, d = digit, v = helligkeit 1000: for i = 0 to 6 LED.iall(0) z = s % 10 d = 5 + i if (IO.eeread(2)) = 0 gosub 7000 else gosub 7002' wenn alarm zeige Punkt z = s / 10 d = 4 + i gosub 7000 ' 0-9 z = m % 10 d = 3 + i gosub 7000 ' 0-9 z = m / 10 d = 2 + i gosub 7000 ' 0-9 z = n % 10 d = 1 + i gosub 7000 ' 0-9 z = n / 10 d = 0 + i gosub 7000 ' 0-9 LED.show() delay 100 next i delay 300 return '............................. 1002: for i = 6 downto 0 z = s % 10 d = 5 + i if (IO.eeread(2)) = 0 gosub 7000 else gosub 7002' wenn alarm zeige Punkt z = s / 10 d = 4 + i gosub 7000 ' 0-9 z = m % 10 d = 3 + i gosub 7000 ' 0-9 z = m / 10 d = 2 + i gosub 7000 ' 0-9 z = n % 10 d = 1 + i gosub 7000 ' 0-9 z = n / 10 d = 0 + i gosub 7000 ' 0-9 LED.show() delay 100 next i return '=========================================================== ' MODE Stoppuhr 5000: gosub 110 ' helligkeit for i = 0 to 14 for d = 0 to 5 z = read 31, d + i ' Stoppuhr gosub 7001 ' A-z, a-z next d LED.show() delay 120 gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k <> 0 then i = 14 next i if k = 11 goto 6000 ' Timer if k = 0 goto 5000 IO.eewrite(6, 1) ' Mode Stoppuhr s = 0 m = 0 n = 0 gosub 104 ' show Time (Stoppuhr) LED.show() goto 5020 5010: gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 1 goto 5020 ' stopp if k = 11 then IO.eewrite(6, 0) ' Mode Uhr if k = 11 goto 99 ' Uhr if x = (IO.getrtc(0)) goto 5010 x = IO.getrtc(0) gosub 110 ' helligkeit gosub 104 ' show Time (Stoppuhr) LED.show() if (IO.eeread(2)) = 1 and (IO.eeread(3)) = (IO.getrtc(2)) and (IO.eeread(4)) = (IO.getrtc(1)) goto 200 ' alarm prio if s < 59 then s = s + 1 else s = 0 if s = 0 then m = m + 1 if m = 60 then n = n + 1 if m = 60 then m = 0 if n = 24 goto 420 ' MAX Music end goto 5010 5020: gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 1 goto 5010 ' go if k = 11 goto 5000 ' auswahlmenü if (IO.eeread(2)) = 1 and (IO.eeread(3)) = (IO.getrtc(2)) and (IO.eeread(4)) = (IO.getrtc(1)) goto 200 ' alarm prio delay 20 goto 5020 '=========================================================== ' MODE Timer 6000: gosub 110 ' helligkeit for i = 0 to 11 for d = 0 to 5 z = read 32, d + i ' Timer gosub 7001 ' A-z, a-z next d LED.show() delay 120 gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k <> 0 then i = 11 next i if k = 11 then IO.eewrite(6, 0) ' Mode Uhr if k = 11 goto 99 ' Uhr if k = 0 goto 6000 IO.eewrite(6, 2) ' Mode Timer s = 0 m = 0 n = 0 '....................... ' Timer set y = 0 ' Flag 6020: i = IO.getrtc(0) ' SEKUNDEN if y = 0 then IO.setenc(n, 23, 0) ' set encoder if y = 1 then IO.setenc(m, 59, 0) ' set encoder if y = 2 then IO.setenc(s, 59, 0) ' set encoder z = s % 10 d = 5 if y = 2 and i & 1 = 0 gosub 7002 else gosub 7000 z = s / 10 d = 4 if y = 2 and i & 1 = 0 gosub 7002 else gosub 7000 z = m % 10 d = 3 if y = 1 and i & 1 = 0 gosub 7002 else gosub 7000 z = m / 10 d = 2 if y = 1 and i & 1 = 0 gosub 7002 else gosub 7000 z = n % 10 d = 1 if y = 0 and i & 1 = 0 gosub 7002 else gosub 7000 z = n / 10 d = 0 if y = 0 and i & 1 = 0 gosub 7002 else gosub 7000 LED.show() delay 10 if x <> (IO.getenc()) gosub 6060 gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 1 then y = y + 1 if y > 2 then y = 0 if k <> 11 goto 6020 '............................ ' Timer start 6040: gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 1 goto 6050 ' stopp if k = 11 then IO.eewrite(6, 0) ' Mode Uhr if k = 11 goto 99 ' Uhr if x = (IO.getrtc(0)) goto 6040 x = IO.getrtc(0) gosub 110 ' helligkeit gosub 104 ' show Time (Timer) LED.show() if (IO.eeread(2)) = 1 and (IO.eeread(3)) = (IO.getrtc(2)) and (IO.eeread(4)) = (IO.getrtc(1)) goto 200 ' alarm prio if s > 0 then s = s - 1 else s = 59 if s = 59 then m = m - 1 if m < 0 then n = n - 1 if m < 0 then m = 59 if n < 0 goto 420 ' Timer Music end goto 6040 6050: gosub 9000 ' GETKEY if k <> 0 gosub 9100 ' beep bei Tastendruck if k = 1 goto 6040 ' go if k = 11 goto 6000 ' auswahlmenü if (IO.eeread(2)) = 1 and (IO.eeread(3)) = (IO.getrtc(2)) and (IO.eeread(4)) = (IO.getrtc(1)) goto 200 ' alarm prio delay 20 goto 6050 '............................ 6060: if y = 0 then n = IO.getenc() if y = 1 then m = IO.getenc() if y = 2 then s = IO.getenc() x = IO.getenc() return '=========================================================== ' show digit 0-9 ' z = zeichen, d = digit, v = helligkeit, r g b = LED 7000: t = read 10, z * 2 gosub 7010 ' show digit lsb t = read 10, z * 2 + 1 gosub 7011 ' show digit msb return '...................................................... ' show digit A-Z,a-z ' z = zeichen, d = digit, v = helligkeit, r g b = LED 7001: t = read 11, z * 2 gosub 7010 ' show digit lsb t = read 11, z * 2 + 1 gosub 7011 ' show digit msb return '...................................................... ' show digit 0-9 mit Punkt ' z = zeichen, d = digit, v = helligkeit, r g b = LED 7002: t = read 12, z * 2 gosub 7010 ' show digit lsb t = read 12, z * 2 + 1 gosub 7011 ' show digit msb return '...................................................... ' show digit Sonderzeichen ' z = zeichen, d = digit, v = helligkeit, r g b = LED 7003: t = read 13, z * 2 gosub 7010 ' show digit lsb t = read 13, z * 2 + 1 gosub 7011 ' show digit msb return '=========================================================== ' show digit lsb ' z = zeichen, d = digit, v = helligkeit, r g b = LED 7010: if t & 1 <> 0 then r = v else r = 0 if t & 2 <> 0 then g = v else g = 0 if t & 4 <> 0 then b = v else b = 0 LED.lrgb(d * 8, r, g, b) if t & 8 <> 0 then r = v else r = 0 if t & 16 <> 0 then g = v else g = 0 if t & 32 <> 0 then b = v else b = 0 LED.lrgb(d * 8 + 1, r, g, b) if t & 64 <> 0 then r = v else r = 0 if t & 128 <> 0 then g = v else g = 0 if t & 256 <> 0 then b = v else b = 0 LED.lrgb(d * 8 + 2, r, g, b) if t & 512 <> 0 then r = v else r = 0 if t & 1024 <> 0 then g = v else g = 0 if t & 2048 <> 0 then b = v else b = 0 LED.lrgb(d * 8 + 3, r, g, b) return '...................................................... ' show digit msb ' z = zeichen, d = digit, v = helligkeit, r g b = LED 7011: if t & 1 <> 0 then r = v else r = 0 if t & 2 <> 0 then g = v else g = 0 if t & 4 <> 0 then b = v else b = 0 LED.lrgb(d * 8 + 4, r, g, b) if t & 8 <> 0 then r = v else r = 0 if t & 16 <> 0 then g = v else g = 0 if t & 32 <> 0 then b = v else b = 0 LED.lrgb(d * 8 + 5, r, g, b) if t & 64 <> 0 then r = v else r = 0 if t & 128 <> 0 then g = v else g = 0 if t & 256 <> 0 then b = v else b = 0 LED.lrgb(d * 8 + 6, r, g, b) if t & 512 <> 0 then r = v else r = 0 if t & 1024 <> 0 then g = v else g = 0 if t & 2048 <> 0 then b = v else b = 0 LED.lrgb(d * 8 + 7, r, g, b) return '=========================================================== ' EEPROM INIT 8000: print "Resetting EEPROM..." IO.eewrite(0, 101) ' 0 = Version (101) 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, 0) ' 5 = Datum / Temp auto Anzeige (0) IO.eewrite(6, 0) ' 6 = Mode (0) IO.eewrite(7, 1) ' 7 = Tasten-Beep (1) IO.eewrite(8, 0) ' 8 = Random Modus (Spielautomat) (0) print "EEPROM reset." IO.beep(35) delay 500 IO.beep(0) return '=========================================================== ' GETKEY ' k: 0 = No Key, k + 10 = LONG, k = SHORT 9000: k = IO.getkey() if k = 0 return i = 0 9010: t = IO.keystate() if t = 0 return delay 10 i = i + 1 if i < 50 goto 9010 k = t + 10 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 goto 100 ' beep aus 9205: x = -1 ' bei Alarm nötig IO.beep(35) delay 25 IO.beep(0) goto 100 ' Uhr '=========================================================== end