' ************************************** ' * SEGMENTA mit KREIS:LED Clock Demo * ' * LED-Basic >= 15.1.12 required * ' ~ modyfied by Vanessa Ver. 1.60 * ' ************************************** ' Bedienungsanleitung: ' Bei Neustart und gleichzeitig gedrückter Taste erfolgt eine Zurücksetzung ' auf standard Werte. ' ' Modi: Segmenta mit Kreis -> Segmenta -> Kreis (TRON) -> Timer -> Stoppuhr. ' ' Taster 1.....2..3 ' Kurzer Druck auf Taster-1 wechselt zwischen den Modi. ' Kurzer Druck auf Taster-2 wechselt die Anzeigehelligkeit. Bei Ringaktivität = Auto(LDR) ' Kurzer Druck auf Taster-3 wechselt die Anzeigefarbe. Bei Ringaktivität = Auto(LDR) ' Langer Druck auf einen der Taster startet das Setup. ' ' Setup Funktion 0-5: Taster-2 = Funktion+, Taster-3 = Funktion-. Taster-1 = übernehmen. ' Kein Taster wechselt nach ca. 2 Sekunden zurück auf Zeitanzeige. ' ' Datum / Temperatur wird einmal pro Minute automatisch angezeigt ' Alle Einstellungen bleiben bei Stromausfall erhalten ( EEPROM ). ' ' Alarm ist priorisiert bei Timer / Stoppuhr. ' Versionsanzeige bei Uhrenstart. ' Spielautomat Anzeige. ' ' MODE: Segmenta ( mit / ohne Kreis), TRON ' F0: Alarmzeit einstellen ' Taster-2 = Stunden, Taster-3 = Minuten. Automatische Übernahme nach ca. 2 Sek. oder ' Taster-1 = übernehmen. ' Bei Nichtbetätigung nach ca. 2 Sek. Reset auf 12:00. ' F1: Alarm ON / OFF ' Taster-3 = OFF, Taster-2 = ON. Automatische Übernahme nach ca. 2 Sek. oder ' Taster-1 = übernehmen. ' Doppelpunkt IMMER WEISS bei Alarm ON. Alarmzeit wird zusätzlich zyklisch angezeigt. ' Alarmdauer = 1 Minute, durch Tasten unterbrechbar. ' F2: Uhrzeit einstellen ' Taster-2 = Stunden, Taster-3 = Minuten. Taster-1 = übernehmen. ' F3: Datum / Jahr einstellen ' Taster-2 = Tag, Taster-3 = Monat. Taster-1 = übernehmen. ' Danach Taster 2 / 3 Jahr. Taster-1 = übernehmen. ' F4: Sekunden Anzeige für ca. 1 Minute. Taste = zurück zur Uhrzeit. ' F5: Partymodus ON / OFF ( kein Einfluss auf TRON Mode) ' Taster-3 = OFF, Taster-2 = ON. Automatische Übernahme nach ca. 2 Sek. oder ' Taster-1 = übernehmen. ' ' MODE: Timer: (max. 59Min:59Sek) ' Taster-2 = Minuten , Taster-3 = Sekunden. Taster-1 = Start / Stop. ' Bei Stop Timer wieder veränderbar. ' Langer Druck = zurück auf Uhr. ' ' MODE: Stoppuhr: (max. 59Min:59Sek) ' Taster-1 = Start / Stop. ' Langer Druck = zurück auf Uhr. ' ### L90 CGRB M35 S2 P0 F40 ' INIT LED.irgb(0, 0, 0, 0) 'black LED.ihsv(2, 0, 0, 45) 'weiss LED.ihsv(4, 240, 255, 80) 'blau LED.blackout() '================================================ ' GLOBAL VARS ' t = temp, y = zaehler, z = zaehler, a = alarm, d = alarm stunde, e = alarm minute ' k = key, i = loop, b = bright, c = color, p = position, u = color mode ' n = digits, o = Modus, r = Rainbow '================================================ ' LED-DIGITS MASK 10: data 0b00111111, 0b00000110, 0b01011011, 0b01001111 data 0b01100110, 0b01101101, 0b01111101, 0b00000111 data 0b01111111, 0b01101111 ' Setup mask 11: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01101101, 0b01111001, 0b01111000, 0b00111110, 0b01110011 ' Uhr Set mask 12: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b00111110, 0b01110110, 0b01010000, 0b00000000 data 0b01101101, 0b01111001, 0b01111000 ' Date Set mask 13: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01011110, 0b01110111, 0b01111000, 0b01111001 data 0b00000000, 0b01101101, 0b01111001, 0b01111000 ' Alarm Set mask 14: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01110111, 0b00111000, 0b01110111, 0b01010000 data 0b00000000, 0b01101101, 0b01111001, 0b01111000 ' Alarm mask 15: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01110111, 0b00111000, 0b01110111, 0b01010000 ' Alarm ON mask 16: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01110111, 0b00111000, 0b01110111, 0b01010000 data 0b00000000, 0b00111111, 0b00110111 ' Alarm OFF mask 17: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01110111, 0b00111000, 0b01110111, 0b01010000 data 0b00000000, 0b00111111, 0b01110001, 0b01110001 ' Ti-Set mask 18: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01111000, 0b00010000, 0b01000000, 0b01101101 data 0b01111001, 0b01111000 ' Stoppuhr mask 19: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01101101, 0b01111000, 0b00111111, 0b01110011 data 0b01110011, 0b00111110, 0b01110100, 0b01010000 ' Tron mask 20: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01111000, 0b01010000, 0b01011100, 0b01010100 ' Party ON mask 21: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01110011, 0b01110111, 0b01010000, 0b01111000, 0b01101110 data 0b00000000, 0b00111111, 0b00110111 ' Party OFF mask 22: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01110011, 0b01110111, 0b01010000, 0b01111000, 0b01101110 data 0b00000000, 0b00111111, 0b01110001, 0b01110001 ' HALLO mask 23: data 0b00000000, 0b00000000, 0b00000000, 0b00000000 data 0b01110110, 0b01110111, 0b00111000, 0b00111000, 0b00111111 ' 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, ' color Mode 41: data 360, 1, 10, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 355 ' brigdness Mode 42: data 255, 5, 10, 30, 60, 120, 180, 220, 254 ' EEPROM Init gosub 8000 '======START===================================== ' Software Version gosub 1300 ' blau fill p = 0 n = read 11,0 gosub 1000 p = 7 n = read 10,1 gosub 1000 p = 14 n = read 10,6 gosub 1000 p = 21 n = read 10,0 gosub 1000 LED.lhsv(29, 10, 255, v) LED.show() delay 1500 for j = 0 to 9 p = 0 ' Digit 1 n = read 23,j gosub 1000 p = 7 ' Digit 2 n = read 23,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 23,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 23,j + 3 gosub 1000 v = 0 gosub 1100 LED.show() delay 250 next j delay 100 gosub 1350 ' blau delete '==== MAIN LOOP ================================= 100: x = -1 105: t = 0 if r < 360 then r = r + 2 else r = 0 110: s = IO.getrtc(0) m = IO.getrtc(1) h = IO.getrtc(2) gosub 1260 ' digit color gosub 9000 ' key if k <> 0 then gosub 9100 if k = 1 then goto 400 ' Mode change if k = 2 then goto 450 ' Color change if k = 3 then goto 10000 ' Long Press SETUP if k = 4 then goto 410 ' Brigness change y = IO.eeread(7) ' y = Partymodus if a = 1 and h = d and m = e then goto 9200 ' Alarm beep if m % 10 = 4 and s / 10 = 0 and o <> 3 gosub 3000 ' random if m % 10 = 1 or m % 10 = 5 or m % 10 = 7 or m % 10 = 9 and s = 0 and o <> 3 and y = 1 goto 2900 ' partymodus if m % 10 = 2 or m % 10 = 6 and s = 1 and a = 1 then goto 130 ' show alarm if s = 47 goto 300 'auto Date / Temp if s <> x and o = 3 then goto 11010 ' show tron if s <> x then goto 120 ' show time if o <> 3 then t = t + 1 if t <> 700 then goto 110 v = 0 ' DOPPELPUNKT gosub 1100 LED.show() goto 110 '================================================ ' SHOW TIME 120: x = s m = IO.getrtc(1) h = IO.getrtc(2) if o = 1 gosub 1200 'RING if o = 1 and s = 59 gosub 1210 ' sekunde zurück p = 0 ' STUNDEN ZEHNER n = read 10,h / 10 gosub 1000 p = 7 ' STUNDEN EINER n = read 10,h % 10 gosub 1000 p = 14 ' MINUTEN ZEHNER n = read 10,m / 10 gosub 1000 p = 21 ' MINUTEN EINER n = read 10,m % 10 gosub 1000 v = read 42 , b ' DOPPELPUNKT gosub 1100 LED.show() goto 105 '================================================ ' SHOW ALARM 130: gosub 1250 ' rainbow LED.show() for j = 0 to 8 p = 0 ' Digit 1 n = read 15,j gosub 1000 p = 7 ' Digit 2 n = read 15,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 15,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 15,j + 3 gosub 1000 v = 0 gosub 1100 LED.show() delay 250 next j t = 0 p = 0 n = read 10,d / 10 gosub 1000 p = 7 n = read 10,d % 10 gosub 1000 p = 14 n = read 10,e / 10 gosub 1000 p = 21 n = read 10,e % 10 gosub 1000 v = read 42 , b gosub 1100 LED.show() 140: gosub 9000 if k <> 0 then goto 9200 gosub 1250 ' rainbow LED.show() if t = 120 then goto 105 ' main loop t = t + 1 goto 140 '================================================ ' F4: Show Second 200: x = -1 t = 0 210: m = IO.getrtc(1) h = IO.getrtc(2) gosub 1260 ' digit color gosub 1250 ' rainbow LED.show() s = IO.getrtc(0) if s <> x then goto 220 gosub 9000 if k <> 0 then goto 9200 if a = 1 and h = d and m = e then goto 9200 ' Alarm beep t = t + 1 if t > 1500 then goto 100 ' main loop goto 210 220: x = s p = 14 ' SEKUNDEN ZEHNER n = read 10,s / 10 gosub 1000 p = 21 ' SEKUNDEN EINER n = read 10,s % 10 gosub 1000 v = read 42 , b ' DOPPELPUNKT gosub 1100 LED.show() goto 210 '================================================ ' Show Date / Temp 300: w = IO.gettemp() ' init temp t = 0 goto 320 310: gosub 9000 if k <> 0 then goto 9200 gosub 1250 ' rainbow LED.show() if t = 80 then goto 330 if t = 160 then goto 340 ' show Temp if t = 240 then goto 100 ' main loop t = t + 1 goto 310 320: m = IO.getrtc(4) h = IO.getrtc(3) p = 0 ' TAG ZEHNER n = read 10,h / 10 gosub 1000 p = 7 ' TAG EINER n = read 10,h % 10 gosub 1000 p = 14 ' MONAT ZEHNER n = read 10,m / 10 gosub 1000 p = 21 ' MONAT EINER n = read 10,m % 10 gosub 1000 LED.iled(0, 28) z = IO.getldr() + 4 if z > 254 then z = 254 if read 42 , b = 255 then v = z else v = read 42 , b ' PUNKT LED.lhsv(29, c, 255, v) LED.show() goto 310 '................................................ 330: t = t + 1 h = IO.getrtc(5) m = h / 100 h = h % 100 p = 0 ' JAHR TAUSENDER n = read 10,m / 10 gosub 1000 p = 7 ' JAHR HUNDERTER n = read 10,m % 10 gosub 1000 p = 14 ' JAHR ZEHNER n = read 10,h / 10 gosub 1000 p = 21 ' JAHR EINER n = read 10,h % 10 gosub 1000 LED.lhsv(29, c, 255, 0) LED.show() goto 310 '................................................ 340: w = IO.gettemp() - 30 ' get temp if w >= 0 goto 342 ' plus grad w = -1 * w t = t + 1 m = w / 10 h = w % 10 p = 0 n = read 10,m / 10 gosub 1000 p = 7 n = read 10,m % 10 gosub 1000 p = 14 n = read 10,h / 10 gosub 1000 p = 21 n = 0b01101011 ' Minuszeichen anzeigen gosub 1000 goto 345 342: t = t + 1 m = w / 10 h = w % 10 p = 0 n = read 10,m / 10 gosub 1000 p = 7 n = read 10,m % 10 gosub 1000 p = 14 n = read 10,h / 10 gosub 1000 p = 21 n = 0b01100011 gosub 1000 345: z = IO.getldr() + 4 if z > 254 then z = 254 if read 42 , b = 255 then v = z else v = read 42 , b ' PUNKT LED.lhsv(29, c, 255, v) LED.show() goto 310 '================================================ ' Mode change 400: gosub 9100 ' beep if o = 3 gosub 1350 o = o + 1 if o <> (IO.eeread(6)) then IO.eewrite(6, o) if o = 2 then gosub 1350 ' ohne Ring if o = 3 then goto 11000 ' TRON if o = 4 then goto 4000 ' Timer if o = 5 then goto 5000 ' Stoppuhr if o = 6 then o = 1 IO.eewrite(6, o) goto 100 '================================================ ' bright change 410: b = b + 1 if read 42 , b = 0 then b = 0 if read 42 , b = 255 then gosub 1300 if read 42 , b = 255 then gosub 1350 IO.eewrite(1, b) goto 100 '================================================ ' Color change 450: u = u + 1 if read 41 , u = 0 then u = 0 if read 41 , u = 360 then gosub 1300 if read 41 , u = 360 then gosub 1350 IO.eewrite(5, u) goto 100 '================================================ ' show minute, second 460: p = 0 n = read 10,m / 10 gosub 1000 p = 7 n = read 10,m % 10 gosub 1000 p = 14 n = read 10,s / 10 gosub 1000 p = 21 n = read 10,s % 10 gosub 1000 v = read 42 , b ' DOPPELPUNKT return '================================================ ' Music end 530: o = 1 IO.eewrite(6, o) x = 0 540: t = read 40, x j = read 40, x + 1 x = x + 2 if t = 0 then goto 100 ' main loop IO.beep(t) delay j IO.beep(0) delay 100 goto 540 '================================================ ' DIGIT AUSGEBEN 1000: if read 42 , b = 255 goto 1010 y = 1 for i = 0 to 6 if y & n <> 0 then v = read 42 , b else v = 0 LED.lhsv(i + p, c, 255, v) y = y * 2 next i return 1010: y = 1 z = IO.getldr() + 4 if z > 254 then z = 254 for i = 0 to 6 if y & n <> 0 then v = z else v = 0 LED.lhsv(i + p, c, 255, v) y = y * 2 next i return '================================================ ' DOPPELPUNKT AUSGEBEN 1100: q = 255 z = IO.getldr() + 4 if z > 254 then z = 254 if v = 255 then v = z if v > 0 and a = 1 then gosub 1105 for i = 28 to 29 LED.lhsv(i, c, q, v) next i return 1105: c = 0 q = 0 return '================================================ ' SEKUNDEN-RING 1200: LED.rainbow(r, 255, 25, 30, 89, 12) LED.lhsv(s + 30, 0, 0, 120) return ' SEKUNDEN ZURÜCK 1210: for i = 89 downto 31 if r < 360 then r = r + 1 else r = 0 LED.rainbow(r, 255, 25, 30, 89, 12) LED.lhsv(i, 0, 0, 120) LED.show() next i return '........................................... ' Rainbow 1250: if r < 360 then r = r + 1 else r = 0 if o = 1 then LED.rainbow(r, 255, 10, 30, 89, 12) ' Mode return '........................................... ' Digit color 1260: c = read 41, u 'Digit color if c = 360 then c = (IO.getldr() * 4 / 3) 'Digit color auto LDR return '........................................... ' BLAU FILL 1300: LED.irange(0, 30, 89) for z = 0 to 11 LED.irange(4, 30 + z * 5, 34 + z * 5) LED.show() next z return ' Löschen Ring 1350: for z = 0 to 11 LED.irange(0, 30 + z * 5, 34 + z * 5) LED.show() next z return '================================================ ' Partymodus 2900: i = random z = IO.getldr() + 4 if z > 254 then z = 254 if read 42 , b = 255 then v = z else v = read 42 , b ' brightness if i <= 4681 then gosub 3050 ' Partymodus if i > 4681 and i <= 9362 then gosub 3100 ' Partymodus if i > 9362 and i <= 14043 then gosub 3200 ' Partymodus if i > 14043 and i <= 18724 then gosub 3300 ' Partymodus if i > 18724 and i <= 23405 then gosub 3400 ' Partymodus if i > 23405 and i <= 28086 then gosub 3500 ' Partymodus if i > 28086 then gosub 3600 ' Partymodus if o = 2 then LED.irange(0, 30, 89) ' ohne Kreis goto 100 '================================================ ' SHOW Random (Spielautomat) 3000: LED.irange(0, 28, 29) for j = 1 to 100 gosub 1250 ' rainbow s = random n = read 10,(s % 1000)/100 p = 0 c = random % 359 gosub 1000 n = read 10,(s % 100)/10 p = 7 c = random % 359 gosub 1000 n = read 10,(s % 10000)/1000 p = 14 c = random % 359 gosub 1000 n = read 10,s % 10 p = 21 c = random % 359 gosub 1000 LED.show() delay j * 2 next j return '================================================ ' Partymodus 3050: for i = 1 to 400 t = random % 254 z = random % 59 led.lhsv(30 + z, t, 255, v) ' Farbe z = random % 59 LED.iled(0, 30 + z) led.show() delay 40 next i return '............................................................ 3100: for y = 1 to 7 3110: t = Random % 254 + 1 z = Random % 254 + 1 if t = z then goto 3110 for i = 0 to 59 LED.irange(0, 30, 89) led.lhsv(i + 30,t, 255, v) ' Farbe led.lhsv(89 - i, z, 255, v) ' Farbe led.show() next i next y return '............................................................ 3200: t = Random % 254 + 1 y = Random % 254 + 1 w = Random % 254 + 1 z = Random % 254 + 1 for i = 0 to 449 LED.irange(0, 30, 89) led.lhsv(30 + (i % 59), z, 255, v) led.lhsv(89 - ((i + 1) % 59), t, 255, v) led.lhsv(30 + ((i + 9) % 59), y, 255, v) led.lhsv(89 - ((i + 11) % 59), w, 255, v) led.lhsv(89 - ((i + 3) % 59), t, 255, v) led.lhsv(30 + ((i + 5) % 59), y, 255, v) led.lhsv(89 - ((i + 7) % 59), w, 255, v) led.show() next i return '............................................................ 3300: LED.irange(0, 30, 89) for y = 0 to 5 for i = 59 downto 0 if y % 2 = 0 then led.lhsv(i + 30, (y * i) % 255, 255, v) else led.lhsv(89 - i,(y * i) % 255, 255, v) led.show() next i next y return '............................................................ 3400: h = random % 360 for i = 1 to 400 LED.rainbow(h, 255, v, 30, 89, 12) LED.show() h = (h + i / 7) % 360 next i return '............................................................ 3500: h = random % 360 for i = 1 to 320 LED.irange(0, 30, 89) LED.ihsv(9, (h + i) % 360, 255, v) LED.iled(9, (h % 10) + 30) LED.repeat(30, 40, 4) LED.show() h = h + 1 delay 40 next i return '............................................................ 3600: for z = 1 to 350 i = random % 100 if i < 75 goto 3665 h = ((random % 255) * v) / 255 LED.ihsv(9, 0, 0, h) LED.irange(9, 30, 89) 3665: LED.show() next z return '================================================ ' Timer set and go 4000: LED.irange(0, 0, 29) for j = 0 to 10 p = 0 ' Digit 1 n = read 18,j gosub 1000 p = 7 ' Digit 2 n = read 18,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 18,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 18,j + 3 gosub 1000 LED.show() delay 250 next j s = 0 m = 0 4100: gosub 1260 ' digit color gosub 9000 if k = 2 gosub 4110 ' Second set if k = 4 gosub 4120 ' Minute set gosub 460 ' show min / sec gosub 1100 LED.show() if k = 3 goto 4160 ' exit if k = 1 goto 4130 ' start goto 4100 4110: if s < 59 then s = s + 1 else s = 0 return 4120: if m < 59 then m = m + 1 else m = 0 return 4130: if m + s = 0 goto 400 ' no Timer next Mode x = -1 4140: gosub 1260 ' digit color j = IO.getrtc(0) l = IO.getrtc(2) q = IO.getrtc(1) if j <> x then goto 4150 gosub 9000 if a = 1 and l = d and q = e then goto 4160 ' Alarm beep if k = 1 goto 4100 'start / stop if k = 3 goto 4160 ' exit goto 4140 4150: x = j s = s - 1 if s < 0 gosub 4170 gosub 1260 ' digit color gosub 460 ' show min / sec gosub 1100 ' doppelpunkt gosub 1250 ' rainbow LED.irange(0, 30, 89) if m <> 0 then LED.rainbow(r, 255, 20, 30, 30 + m, 12) LED.iled(0, 30 + m) LED.lhsv(s + 30, 0, 0, 120) LED.show() if s + m = 0 goto 530 ' end musik goto 4140 4160: o = 1 IO.eewrite(6, o) goto 100 ' return alarm 4170: s = 59 m = m - 1 return '================================================ ' Stoppuhr 5000: gosub 1260 ' digit color LED.irange(0, 0, 29) for j = 0 to 12 p = 0 ' Digit 1 n = read 19,j gosub 1000 p = 7 ' Digit 2 n = read 19,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 19,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 19,j + 3 gosub 1000 LED.show() delay 250 next j m = 0 s = 0 5100: gosub 1260 ' digit color gosub 9000 gosub 460 ' show min / sec gosub 1100 LED.show() if k = 3 goto 4160 ' exit if k = 1 goto 5130 ' start goto 5100 5130: x = -1 5140: gosub 1260 ' digit color j = IO.getrtc(0) l = IO.getrtc(2) q = IO.getrtc(1) if j <> x then goto 5150 gosub 9000 if a = 1 and l = d and q = e then goto 4160 ' Alarm beep if k = 1 goto 5100 'start / stop if k = 3 goto 4160 ' exit goto 5140 5150: x = j s = s + 1 if s > 59 gosub 5170 gosub 1260 ' digit color gosub 460 ' show min / sec gosub 1100 gosub 1250 ' rainbow LED.irange(0, 30, 89) if m <> 0 then LED.rainbow(r, 255, 20, 30, 30 + m, 12) LED.iled(0, 30 + m) LED.lhsv(s + 30, 0, 0, 120) LED.show() if s + m = 118 goto 530 ' end max. musik goto 5140 5170: s = 0 m = m + 1 return '================================================ ' EEPROM INIT 8000: z = IO.getkey() ' Sartup INIT if z = 1 then IO.eewrite(0, 0xFFFF) t = IO.eeread(0) if t = 0xABCD then goto 8010 IO.beep(35) delay 35 IO.beep(0) delay 35 IO.beep(31) delay 35 IO.beep(0) IO.eewrite(1, 0) ' 1 = Brightness (LDR) IO.eewrite(2, 0) ' 2 = Alarm (0) IO.eewrite(3, 12) ' 3-4 = Alarm Zeit (Stunde. Minute)(12,0) IO.eewrite(4, 0) ' 3-4 = Alarm Zeit (Stunde. Minute)(12,0) IO.eewrite(5, 0) ' 5 = Color Mode (LDR) IO.eewrite(6, 1) ' 6 = Modus (Segmenta mit Kreis) IO.eewrite(7, 0) ' 7 = Partymodus (0) IO.eewrite(0, 0xABCD) ' 0 = 0xABCD 8010: b = IO.eeread(1) ' b = Bright Mode a = IO.eeread(2) ' a = Alarm d = IO.eeread(3) ' d-e = Alarm Zeit (Stunde) e = IO.eeread(4) ' d-e = Alarm Zeit (Minute) u = IO.eeread(5) ' u = Color Mode o = IO.eeread(6) ' o = Modus return '================================================ ' GETKEY ' k: 0 = No Key, 3 = LONG 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 < 80 then goto 9010 k = 3 9020: return '================================================ ' BEEP 9100: IO.beep(35) delay 25 IO.beep(0) return 9200: IO.beep(35) delay 25 IO.beep(0) goto 100 '================================================ ' MODE SETUP 10000: x = 0 LED.irange(0, 0, 29) gosub 1250 ' rainbow for j = 0 to 9 p = 0 ' Digit 1 n = read 11,j gosub 1000 p = 7 ' Digit 2 n = read 11,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 11,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 11,j + 3 gosub 1000 LED.show() delay 250 next j 10005: n = 0b01110001 p = 0 gosub 1000 ' Digit 1 n = read 10, x p = 7 gosub 1000 ' Digit 2 gosub 1250 ' rainbow LED.show() k = IO.getkey() t = x if k = 2 and x > 0 then x = x - 1 if k = 4 and x < 5 then x = x + 1 if k = 1 then goto 10030 if t <> x then z = 0 z = z + 1 if z > 200 then goto 9200 ' RETURN beep goto 10005 10030: LED.irange(0, 0, 29) LED.show() gosub 9100 ' BEEP if x = 0 then goto 10300 ' F0 Alarm set if x = 1 then goto 10400 ' F1: Alarm ON / OFF if x = 2 then goto 10050 ' F2 Uhr set if x = 3 then goto 10150 ' F3 Date set if x = 4 then goto 200 ' F4 Sekunden Anzeige if x = 5 then goto 10500 ' F5 Partymodus on / off '================================================ ' F1: Uhr Set 10050: for j = 0 to 11 p = 0 ' Digit 1 n = read 12,j gosub 1000 p = 7 ' Digit 2 n = read 12,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 12,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 12,j + 3 gosub 1000 LED.show() delay 250 next j '............................................... h = IO.getrtc(2) ' Read Hour m = IO.getrtc(1) ' Read Minute z = 0 10100: gosub 1260 ' digit color k = IO.getkey() if k = 4 gosub 10110 ' Hour set if k = 2 gosub 10120 ' Minute set p = 0 ' STUNDEN ZEHNER n = read 10,h / 10 gosub 1000 p = 7 ' STUNDEN EINER n = read 10,h % 10 gosub 1000 p = 14 ' MINUTEN ZEHNER n = read 10,m / 10 gosub 1000 p = 21 ' MINUTEN EINER n = read 10,m % 10 gosub 1000 v = read 42 , b ' DOPPELPUNKT gosub 1100 gosub 1250 LED.show() z = z + 1 if z > 300 then goto 9200 ' RETURN beep if k = 1 then goto 10130 ' set goto 10100 10110: if h < 23 then h = h + 1 else h = 0 z = 0 return 10120: if m < 59 then m = m + 1 else m = 0 z = 0 return 10130: IO.setrtc(0, 0) ' Write Sec IO.setrtc(1, m) ' Write Minutes IO.setrtc(2, h) ' Write Hours goto 9200 ' RETURN beep '================================================ ' F2: Date Set 10150: for j = 0 to 12 p = 0 ' Digit 1 n = read 13,j gosub 1000 p = 7 ' Digit 2 n = read 13,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 13,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 13,j + 3 gosub 1000 LED.show() delay 250 next j '................................................ h = IO.getrtc(3) ' Read Tag m = IO.getrtc(4) ' Read Monat z = 0 10200: gosub 1260 ' digit color k = IO.getkey() if k = 4 gosub 10210 ' Monat set if k = 2 gosub 10220 ' Tag set p = 0 n = read 10,h / 10 gosub 1000 p = 7 n = read 10,h % 10 gosub 1000 p = 14 n = read 10,m / 10 gosub 1000 p = 21 n = read 10,m % 10 gosub 1000 v = read 42 , b ' DOPPELPUNKT LED.lhsv(29, c, 255, v) gosub 1250 LED.show() z = z + 1 if z > 300 then goto 9200 ' RETURN beep if k = 1 then goto 10230 ' set goto 10200 10210: if h < 31 then h = h + 1 else h = 1 z = 0 return 10220: if m < 12 then m = m + 1 else m = 1 z = 0 return '................................................ 10230: gosub 9100 ' beep IO.setrtc(4, m) ' Write Month IO.setrtc(3, h) ' Write Day h = IO.getrtc(5) m = h / 100 h = h % 100 z = 0 10240: gosub 1260 ' digit color k = IO.getkey() if k = 4 gosub 10250 ' Jahr hundert if k = 2 gosub 10260 ' jahr zehn p = 0 n = read 10,m / 10 gosub 1000 p = 7 n = read 10,m % 10 gosub 1000 p = 14 n = read 10,h / 10 gosub 1000 p = 21 n = read 10,h % 10 gosub 1000 v = 0 ' DOPPELPUNKT gosub 1100 gosub 1250 LED.show() z = z + 1 if z > 300 then goto 9200 ' RETURN beep if k = 1 then goto 10270 ' set goto 10240 10250: if m < 22 then m = m + 1 else m = 20 z = 0 return 10260: if h < 99 then h = h + 1 else h = 0 z = 0 return 10270: h = m * 100 + h IO.setrtc(5, h) ' Write Year goto 9200 ' RETURN beep '================================================ ' F0: Alarm Set 10300: for j = 0 to 12 p = 0 ' Digit 1 n = read 14,j gosub 1000 p = 7 ' Digit 2 n = read 14,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 14,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 14,j + 3 gosub 1000 LED.show() delay 250 next j '................................................ z = 0 10350: gosub 1260 ' digit color k = IO.getkey() if k = 4 gosub 10360 ' Hour set if k = 2 gosub 10370 ' Minute set p = 0 ' STUNDEN ZEHNER n = read 10,d / 10 gosub 1000 p = 7 ' STUNDEN EINER n = read 10,d % 10 gosub 1000 p = 14 ' MINUTEN ZEHNER n = read 10,e / 10 gosub 1000 p = 21 ' MINUTEN EINER n = read 10,e % 10 gosub 1000 v = read 42 , b ' DOPPELPUNKT gosub 1100 gosub 1250 LED.show() z = z + 1 if z > 300 then goto 10380 ' set return if k = 1 then goto 10380 ' set return goto 10350 10360: if d < 23 then d = d + 1 else d = 0 z = 0 return 10370: if e < 59 then e = e + 1 else e = 0 z = 0 return 10380: if d <> (IO.eeread(3)) then IO.eewrite(3, d) if e <> (IO.eeread(4)) then IO.eewrite(4, e) goto 9200 ' return beep '================================================ ' F3: Alarm ON / OFF 10400: if a = 1 gosub 10440 else gosub 10450 10410: k = IO.getkey() if k = 4 gosub 10440 ' Alarm ON if k = 2 gosub 10450 ' Alarm OFF gosub 1250 ' rainbow LED.show() z = z + 1 if z > 300 then goto 10460 ' set return if k = 1 then goto 10460 ' set return goto 10410 10440: for j = 0 to 9 ' Alarm ON p = 0 ' Digit 1 n = read 16,j gosub 1000 p = 7 ' Digit 2 n = read 16,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 16,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 16,j + 3 gosub 1000 LED.show() delay 250 next j a = 1 z = 0 return '................................................ 10450: for j = 0 to 9 ' Alarm OFF p = 0 ' Digit 1 n = read 17,j gosub 1000 p = 7 ' Digit 2 n = read 17,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 17,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 17,j + 3 gosub 1000 LED.show() delay 250 next j a = 0 z = 0 return 10460: if a <> (IO.eeread(2)) then IO.eewrite(2, a) goto 9200 ' beep return '================================================ ' F5 Partymodus ON / OFF 10500: y = IO.eeread(7) if y = 1 gosub 10540 else gosub 10550 10510: k = IO.getkey() if k = 4 gosub 10540 ' Partymodus ON if k = 2 gosub 10550 ' Partymodus OFF gosub 1250 ' rainbow LED.show() z = z + 1 if z > 300 then goto 10560 ' set return if k = 1 then goto 10560 ' set return goto 10510 10540: for j = 0 to 9 ' Party ON p = 0 ' Digit 1 n = read 21,j gosub 1000 p = 7 ' Digit 2 n = read 21,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 21,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 21,j + 3 gosub 1000 LED.show() delay 250 next j y = 1 z = 0 return '................................................ 10550: for j = 0 to 9 ' Party OFF p = 0 ' Digit 1 n = read 22,j gosub 1000 p = 7 ' Digit 2 n = read 22,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 22,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 22,j + 3 gosub 1000 LED.show() delay 250 next j y = 0 z = 0 return 10560: if y <> (IO.eeread(7)) then IO.eewrite(7, y) goto 9200 ' beep return '================================================ ' TRON 11000: gosub 1260 ' digit color LED.irange(0, 0, 29) for j = 0 to 4 p = 0 ' Digit 1 n = read 20,j gosub 1000 p = 7 ' Digit 2 n = read 20,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 20,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 20,j + 3 gosub 1000 LED.show() delay 250 next j LED.ihsv(3, c, 255, 25) if a = 1 then LED.lhsv(28, 0, 0, v) for z = 0 to 11 LED.irange(3, 30 + z * 5, 34 + z * 5) ' ring fill LED.show() next z goto 110 11010: LED.irange(0, 0, 29) j = 4 p = 0 ' Digit 1 n = read 20,j gosub 1000 p = 7 ' Digit 2 n = read 20,j + 1 gosub 1000 p = 14 ' Digit 3 n = read 20,j + 2 gosub 1000 p = 21 ' Digit 4 n = read 20,j + 3 gosub 1000 if a = 1 then LED.lhsv(28, 0, 0, v) gosub 11200 LED.show() goto 110 '================================================ ' SEKUNDEN-RING Tron 11200: LED.ihsv(3, c, 255, 25) x = s if h > 12 then h = h - 12 if h = 12 or h = 0 then h = 1 + m / 12 else h = h * 5 + m / 12 if s = 59 goto 11210 LED.irange(3, 30, 89) LED.iled(0, h + 30) LED.lhsv(m + 30, c, 255, 240) LED.lhsv(s + 30, c, 255, 5) if m = h then LED.lhsv(m + 30, c, 255, 10) return ' SEKUNDEN ZURÜCK Tron 11210: for i = 89 downto 31 LED.irange(3, 30, 89) LED.iled(0, h + 30) LED.lhsv(m + 30, c, 255, 200) if m = h then LED.lhsv(m + 30, c, 255, 10) LED.lhsv(i, c, 255, 5) LED.show() next i return '================================================ end