Relais mit Stundenschlag

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
fiffi
Beiträge: 25
Registriert: 27.12.2009, 22:27

Relais mit Stundenschlag

Beitrag von fiffi » 03.01.2010, 23:06

Hallo liebe Fs20 Fans,
Ich möchte einem Universal-Empfänger FS20 UE1 den Stundenschlag einer
Westminster Uhr (Regulator oder Kuckucksuhr) beibringen.
Das Relais soll also zur jeden vollen Stunde die Uhrzeit im Sekundentakt anzeigen.
Wenn es nicht zu kompliziert ist, auch jede viertel Stunde takten.(1x,2x,3x)
Wie muss das Makro aussehen ?
Für eine Idee danke ich.

Gruß
Rainer

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Relais mit Stundenschlag

Beitrag von buempi » 05.01.2010, 09:36

Hallo Rainer

Um die verschiedenen Melodien des Westminsterschlages generieren zu können, brauchst du aber 3 UE1:

- Viertel-Stunde: Erster
- Halbe-Stunde: Zweiter
- Dreiviertel-Stunde: Zweiter + Erster
- Volle-Stunde: 2 x Zweiter
- Stundenschlag: Dritter

Ich mache es mir mal einfach und verwende "UE1" für die Viertelstunden und "UE2" für den Stundenschlag! Beim Makro gebe ich mir etwas mehr Mühe: Die aktuelle Stunde in PHP zu ermitteln wäre einfacher. In Homeputer gibt's dafür keine Funktion. Man muss das über einen Umweg machen!

Code: Alles auswählen

** Makro mit Ausführungsintervall jede Minute

** Variablen:
** HalbeSekunde    Typ Zahl       Startwert 0,0
** Stunde          Typ Zahl       Startwert 0
** Anfang          Typ Zeichen
** Ende            Typ Zeichen

** Der Tag hat 86400 Sekunden, eine halbe also:
HalbeSekunde := 1 / 172800

wenn Uhrzeit =# "**:15:**" dann
   UE1 einschalten für Halbesekunde
endewenn

wenn Uhrzeit =# "**:30:**" dann
   UE1 einschalten für Halbesekunde
   warte("00:00:01")
   UE1 einschalten für Halbesekunde
endewenn

wenn Uhrzeit =# "**:45:**" dann
   UE1 einschalten für Halbesekunde
   warte("00:00:01")
   UE1 einschalten für Halbesekunde
   warte("00:00:01")
   UE1 einschalten für Halbesekunde
endewenn

wenn Uhrzeit =# "**:00:**" dann

   UE1 einschalten für Halbesekunde
   warte("00:00:01")
   UE1 einschalten für Halbesekunde
   warte("00:00:01")
   UE1 einschalten für Halbesekunde
   warte("00:00:01")
   UE1 einschalten für Halbesekunde
   warte("00:00:02")

   Stunde := 0

   Nochmals:

   wenn Stunde < 10 dann
      Anfang  := "0" + Stunde + ":00:00"
      Ende    := "0" + Stunde + ":59:59"
   sonst
      Anfang  := Stunde + ":00:00"
      Ende    := Stunde + ":59:59"
   endewenn

   wenn nicht Uhrzeit zwischen Anfang und Ende dann

      Stunde  := Stunde + 1

      ** Sicherheitshalber, damit keine Endlosschleife entstehen kann:
      wenn Stunde > 23 dann
         verlassen
      endewenn

      gehezu Nochmals

   endewenn

   wenn Stunde = 0 dann
      Stunde  := 12
   endewenn

   wenn Stunde > 12 dann
      Stunde  := Stunde - 12
   endewenn

   Wiederholen:

   UE2 einschalten für Halbesekunde

   Stunde := Stunde - 1

   wenn Stunde > 0 dann
      warte("00:00:01")
      gehezu Wiederholen
   endewenn

endewenn
Ich hoffe, dass der UE1 Timerzeiten von weniger als 1 Sekunde verarbeiten kann! - Verlange jetzt nicht von mir, dass der letzte Stundenschlag genau auf die volle Stunde fällt (wie es - glaube ich - richtig wäre)! - Liesse sich zwar auch machen, aber...

Übrigens: Ich habe versucht, das Ganze mit LAUT() - statt UE1 und UE2 - nachzuspielen und für die Viertelstunden und den Stundenschlag verschiedene Zahlen zu verwenden. Aber bei mir (Vista Home) tönt alles gleich... Wie ist das bei andern?

Viele Grüsse
Bümpi

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“