CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 1 von 10 Herz Jesu Weinachtskrippe Entwicklungsbeginn 3. Aug 2002 Auftrag von Herrn Willi Gerlach PRINT PRINT PRINT ---------------------------------------------- PRINT Programm Version : CD-Muckerle_20020830_01_Fertig.bas PRINT ---------------------------------------------- PRINT Entwicklung und Umsetzung von: PRINT Karl-Peter Kopping PRINT Selligstarsse 49 PRINT 67105 Schifferstadt PRINT PRINT Tel.: 06235 / 98318 PRINT PRINT ---------------------------------------------- PRINT PRINT Auftraggeber: Willi Gerlach PRINT für die Weihnachtskrippe in Herz-Jesu PRINT ----------------------------------------------- Entwickler Herr Karl-Peter Kopping C-Control steuert einen Philips CD-Spieler Typ CD723 ---------Eingangssignale 10. LiedAnzahl 0-99 Lieder 2 stufiges Drucktasten Poti über Tabelle angepaßte 11. Spielzeit 0-999 Sekunden 3 stufiges Drucktasten Poti über Faktor 1000/255*50 angepaßt 15. ShuffleMOD on/off Schalter 0/1 Taster Simliert Muckerle ------------------------------- Programm-Mouds! Die Lieder werden der Reihe nach gespielt.! Ist Zeitangabe 0-999 Sekunden länger als die Zeit eines Liedes stoppt das Lied.! Mit der Zeitangabe 0-999 Sekunden kann die CD vor Spielende gestoppt werden.! Wird die CD vor Spielende mit der Stoptaste von Hand gestoppt, schaltet sich der CD autom. Aus! Die Anzahl der Lieder ist wichtig damit alle Lieder gespielt werden können.! Ist die eingestellte Anzahl größer (10) als die Anzahl auf der CD (8),! werden die Lieder 1-8 und 1 + 2 gespielt. 20. PlayTaste definierter Start, geht immer 21a. StandbyTaste CD-Spieler zurücksetzen 21b. StandbyTaste CD-Spieler aktivieren
CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 2 von 10 22. Programm-Taste drücken Programmierung einleiten 23. Mit NEXT-Taste LiedNr Wählen 24. Programm-Taste drücken Programmierung beenden 25. PlayTaste definierter Start, geht immer 26. PauseTaste Lied starten 27. FadeTaste Ein Faden - Lied-Vortrag starten 28. FadeTaste Aus Faden - Lied-Vortrag starten 29. StandbyTaste-Lied Nach der Spielzeit cd Stoppen ----------------------Schuffle-Modus! Mit jedem Geldeinwurf wird der CD-Spieler gestartet.! Alle Lieder der CD werden in einer zufälligen Reihenfolge gepielt.! Mit der Zeitangabe 0-999 Sekunden kann die CD vor Spielende gestoppt werden.! Wird die CD vor Spielende mit der Stoptaste von Hand gestoppt, schaltet sich der CD autom. Aus! Die Anzahl der Lieder spielt keine Rolle, da die Liednummer per Zufall ausgewählt wird. 30. PlayTaste definierter Start, geht immer 31a. StandbyTaste CD-Spieler zurücksetzen 31b. StandbyTaste CD-Spieler aktivieren 32. Shuffle-Taste drücken Das erste zufällig gestartete Lied Spielt 33. PauseTaste Lied starten 34. FadeTaste Ein Faden - Lied-Vortrag starten 35. FadeTaste Aus Faden - Lied-Vortrag starten 36. StandbyTaste-Lied Nach der Spielzeit cd Stoppen ------------------------------- Ausgänge 40. CDSpieler-AUS Nach längere Spielpause soll der CD ausgeschaltet werden. 41. Extern_ein Schaltet ein 220V Gerät ein PORT Deklaration DEFINE SpielZeit AD[1] 3 fach Drucktastenpoti DEFINE LiedAnzahl AD[3] 2 fach Drucktastenpoti DEFINE Motor AD[8] Motorspannung 5 / 255 x Wert x 2 = ca 6,2 Volt Hysterese ca. 14 bits DEFINE Muckerle PORT[6] Start-Signal DEFINE ShuffleMOD PORT[8] Schuffle-Signal DEFINE FadeTaste PORT[16] FADE 1. Relais Musik langsam ausfaden dauert 5 sec DEFINE ProgTaste PORT[15] Prog 2. Relais DEFINE NextTaste PORT[14] Next 3. Relais DEFINE PauseTaste PORT[13] PAUSE 4. Relais DEFINE ShuffleTaste PORT[12] Shuffle 5. Relais DEFINE Steckdose PORT[11] Steckdose 6. Relais Extern 220V einschalten DEFINE StandbyTaste PORT[10] Standby 7. Relais Stop über den Standby/CD_Haupt ein DEFINE PlayTaste PORT[9] Play 8. Relais
CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 3 von 10 Variablen Deklaration DEFINE CD_Zeit WORD Laufzeit für CD-Uhr Laufzeit der Lieder DEFINE LiedAnzahlW WORD Ai mit Tabelle auf 0-99 umrechnen DEFINE SpielZeitW WORD Ai Umrechnung 50 / 4 = 12,5 (12) DEFINE MotorByte BYTE Merker für die Motorspannung Lauf = 140, Stop = 155 DEFINE SchrittZahler BYTE Laufvariable für die Anzahl der Schritte DEFINE Lied_Zahler BYTE Zählt welches Lied gespielt werden soll DEFINE i BYTE Laufwariable DEFINE MuckFlag BIT[192] Muckerle war ein Flag Deklaration Constanten DEFINE Motor_Hys 10 Halbes Delta zwischen Motor ein/aus DEFINE Motorstart 150 MotorSpannung im Ausgeschalteten Zustand DEFINE WaitStart 100 Einschwing-Zeit für den CD-Spieler DEFINE K_AutoAus 7 Zeit in MilliSec nach dem die Relais/Schalter ausgehen DEFINE FadeAus 200 200 / 50 = 4 Sekunden Musik Ein- / Ausblenden DEFINE REin on Ein/Aus Definition DEFINE RAus off Ein/Aus Definition DEFINE TEin off Ein/Aus Definition DEFINE TAus on Ein/Aus Definition DEFINE SchrittweitePrg 6 CD-Spieler Schritte für 1 Lied Programmieren: Modus Programm DEFINE SchrittweiteShuffle 3 CD-Spieler Schritte für 1 Lied SchuffleStart: Modus Schuffle Programm-Definitions-Teil Muckerle = off Muckerle sicherheitshalber auf Aus definieren MotorByte = Motor MotorSpannung messen und Merken FadeTaste = RAus 1. Relais ausschalten ProgTaste = RAus 2. Relais ausschalten NextTaste = RAus 3. Relais ausschalten PauseTaste = RAus 4. Relais ausschalten ShuffleTaste = RAus 5. Relais ausschalten PlayTaste = RAus 1. Relais ausschalten StandbyTaste = RAus 7. Relais ausschalten Warten auf Einschalt-Zeit für cd-spieler Steckdose = REin PAUSE WaitStart
CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 4 von 10 steckdose = RAus Start in das Program MuckFlag = taus Muckerle auf aus SchrittZahler = 0 Zähler auf 1. Schritt setzen Lied_Zahler = 1 Programm-Teil MuckFlag = on Muckerle Signal vom Mukerle Merken #Muckerle_Start PRINT ++++++++++ i = 0 #Mucken MuckFlag = Muckerle IF Motor > Motorbyte THEN Motorbyte = Motor IF (i < 250) THEN GOTO Mucken_weiter1 Motorbyte = Motorbyte - 1 i = 0 #Mucken_weiter1 i = i + 1 PRINT Motor ;motor, Motorbyte IF Muckflag = TEin THEN Steckdose = REin ELSE Steckdose = RAus IF Muckflag = TAus THEN GOTO Mucken PRINT ++++++++++ looktab TBL_Anzahl_Lieder, LiedAnzahl, LiedAnzahlW 1000 / 256 * 50 = 3,9 Fade-in/out IF spielzeit > 2 THEN SpielzeitW = Spielzeit * 39 / 10 * 50 - (fadeaus* 2) ELSE SpielzeitW = FadeAus * 2 + 1 PRINT Muckerle ;Muckerle; Muckflag ;Muckflag, LiedAnzahl ;LiedAnzahlw, Spielzeit ;SpielzeitW, ShuffleMode ;ShuffleMOD, Motor ;Motor IF MuckFlag = TEin and SchrittZahler = 0 THEN SchrittZahler = 1 ELSE GOTO Muckerle_Start
CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 5 von 10 Lieder ín verschiedenen Modies starten IF ShuffleMOD = TAus THEN GOSUB SUB_Muck_Ablauf_Program_Zahler ELSE GOSUB SUB_Muck_Ablauf_Shuffle_MOD IF ShuffleMOD = TEin THEN Lied_Zahler = 1 IF Muckerle = TAus THEN MuckFlag = TAus Signal zurücksetzen SchrittZahler = 0 Signal zurücksetzen GOTO Muckerle_Start SUB-Rutinen-Teil #SUB_Muck_Ablauf_Shuffle_MOD PRINT Shuffle-MOD SZ ;SchrittZahler IF SchrittZahler = 1 THEN GOSUB SUB_StandbyTaste IF SchrittZahler = 2 THEN GOSUB SUB_ShuffleTaste IF SchrittZahler = 3 THEN GOSUB SUB_StandbyTaste_Lied_Shuffle SchrittZahler = SchrittZahler + 1 IF SchrittZahler <= Schrittweiteshuffle THEN GOTO SUB_Muck_Ablauf_Shuffle_MOD Zähler auf 1. Schritt setzen Return SUB_Muck_Ablauf_Shuffle_MOD #SUB_Muck_Ablauf_Program_Zahler PRINT Programm-MOD SZ ;SchrittZahler IF SchrittZahler = 1 THEN GOSUB SUB_StandbyTaste IF SchrittZahler = 2 THEN GOSUB SUB_ProgTaste IF SchrittZahler = 3 THEN GOSUB SUB_NextTaste IF SchrittZahler = 4 THEN GOSUB SUB_ProgTaste IF SchrittZahler = 5 THEN GOSUB SUB_PauseTaste IF SchrittZahler = 6 THEN GOSUB SUB_StandbyTaste_Lied_Prog PRINT -----------------------------------------------------------------,SchrittZahler SchrittZahler = SchrittZahler + 1 IF SchrittZahler <= SchrittweitePrg THEN GOTO SUB_Muck_Ablauf_Program_Zahler Zähler auf 1. Schritt setzen Return SUB_Muck_Ablauf_Program_Zahler #SUB_ShuffleTaste
CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 6 von 10 Shuffle zum Lied auswählen ShuffleTaste = REin Shuffle auf CD-Spieler drücken PRINT -, Shuffle-P ;Shuffletaste ShuffleTaste = Raus PRINT -, Shuffle-P ;Shuffletaste PAUSE Taste drücken PauseTaste = REin Start auf CD-Spieler drücken PRINT -, -, -, -, Start ;PauseTaste PauseTaste = RAus PRINT -, -, -, -, Start ;PauseTaste FadeTaste zum Ein-Faden FadeTaste = REin FADE Musik langsam ausblenden PRINT -, Fade ;FadeTaste FadeTaste = RAus FADE Musik langsam ausblenden PRINT -, Fade ;FadeTaste, Ein-Blend-dauer 4 sec PAUSE FadeAus Warten auf Musik Signal Return SUB_ShuffleTaste #SUB_StandbyTaste PlayTaste = REin Standby auf CD-Spieler drücken PRINT -, Play ;PlayTaste PlayTaste = RAus PRINT -, Play ; Playtaste *2 StandbyTaste = REin Standby auf CD-Spieler drücken PRINT -, Standby ;StandbyTaste
CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 7 von 10 StandbyTaste = RAus PRINT -, Standby ; StandbyTaste * 2 StandbyTaste = REin Standby auf CD-Spieler drücken PRINT -, Standby ;StandbyTaste StandbyTaste = RAus PRINT -, Standby ; StandbyTaste * 4 Return SUB_StandbyTaste #SUB_ProgTaste ProgTaste = REin Programm auf CD-Spieler drücken PRINT -, Prog ;Progtaste ProgTaste = RAus PRINT -, -, Prog ;Progtaste Return SUB_ProgTaste #SUB_NextTaste IF Lied_zahler = 1 THEN GOTO Next_Weiter1 FOR i = 2 TO Lied_Zahler step 1 NextTaste = REin Next-Taste auf CD-Spieler drücken PRINT -, -, -, NexT ;Nexttaste, LZ ;Lied_zahler, LZM ;LiedanzahlW NextTaste = RAus PRINT -, -, -, NexT ;Nexttaste next #Next_Weiter1 Lied_zahler = Lied_zahler + 1 IF Lied_Zahler > LiedAnzahlW THEN Lied_Zahler = 1
CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 8 von 10 SchrittZahler = 4 Return SUB_NextTaste #SUB_PauseTaste CD Starten PlayTaste = REin Play auf CD-Spieler drücken PRINT -, -, -, -, Play ;Playtaste PlayTaste = RAus PRINT -, -, -, -, Play ;Playtaste CD in die PAUSE PauseTaste = REin Start auf CD-Spieler drücken PRINT -, -, -, -, Start ;PauseTaste PauseTaste = RAus PRINT -, -, -, -, Start ;PauseTaste * 3 FadeTaste zum Ein-Faden FadeTaste = REin FADE Musik langsam ausblenden PRINT -, Fade ;FadeTaste FadeTaste = RAus FADE Musik langsam ausblenden PRINT -, Fade ;FadeTaste, Einblend-dauer 4 sec PAUSE FadeAus Warten auf Musik Signal Return SUB_PauseTaste #SUB_StandbyTaste_Lied_shuffle PRINT Shuffle-Zeit: ;minute; : ;second, Start StopUhr Spielzeit :, SpielZeitW, SpielZeitW - FadeAus - FadeAus PRINT -------------------------------------------------------------------- SpielzeitW = SpielzeitW + (timer)
CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 9 von 10 PRINT Shuffle Timer ;Timer, SpielzeitW ;SpielzeitW,, Mot ;motor, Motw ;motorbyte WAIT (timer <= SpielzeitW + 10 and timer >= SpielzeitW - 10) or (motor > motorbyte - Motor_Hys) PRINT Shuffle-Zeit: ;minute; : ;second, Stop StopUhr,, Mot ;motor, Motw ;motorbyte PAUSE 20 Motor Kondensator leeren IF (motor > motorbyte - Motor_Hys) THEN GOTO Motor_Shuffle_weiter1 wenn der Motor noch läuft FadeTaste = REin FADE Musik langsam ausblenden PRINT -, Fade ;FadeTaste FadeTaste = RAus FADE Musik langsam ausblenden PRINT -, Fade ;FadeTaste, Ausblend-dauer 4 sec PAUSE FadeAus #Motor_Shuffle_weiter1 StandbyTaste = REin Stop auf CD-Spieler drücken PRINT -, STOP-L ;StandbyTaste StandbyTaste = RAus PRINT -, STOP-L ;StandbyTaste Return SUB_StandbyTaste_Lied_shuffle #SUB_StandbyTaste_Lied_Prog PRINT Prog-Zeit: ;minute; : ;second, Start StopUhr Spielzeit :, SpielZeitW, SpielZeitW - FadeAus - FadeAus, Mot ;motor, Motw ;motorbyte PRINT -------------------------------------------------------------------- SpielzeitW = SpielzeitW + timer PRINT Prog Timer ;Timer, SpielzeitW ;SpielzeitW,, Mot ;motor, Motw ;motorbyte WAIT (timer <= SpielzeitW + 10 and timer >= SpielzeitW - 10) or (motor > motorbyte - Motor_Hys) PRINT Prog-Zeit: ;minute; : ;second, Stop StopUhr, Mot ;motor, Motw ;motorbyte PAUSE 20 Motor Kondensator leeren IF (motor > motorbyte - Motor_Hys) THEN GOTO Motor_weiter1 Wenn der Motor läuft
CD-Mukerle_20020830_01_Fertig.doc, 18.11.12, 18:24, Seite 10 von 10 FadeTaste = REin FADE Musik langsam ausblenden PRINT -, Fade ;FadeTaste FadeTaste = RAus FADE Musik langsam ausblenden PRINT -, Fade ;FadeTaste, Ausblend-dauer 4 sec PAUSE FadeAus #Motor_weiter1 PRINT Motor Stop ;second StandbyTaste = REin Stop auf CD-Spieler drücken PRINT -, STOP-L ;StandbyTaste StandbyTaste = RAus PRINT -, STOP-L ;StandbyTaste PRINT CD-Aus ;second Return SUB_StandbyTaste_Lied END TABLE TBL_Anzahl_Lieder Anzahl_Lieder.TAB