Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Thomas, > > ich habe zwar Formel noch nicht kontrolliert, aber eine Genauigkeit von +/- 5 Minuten sollte jedem > reichen, ich werde Deinen Source bei mir zur Steuerung meiner Rolladaden verwenden. > > Danke! > > Gruß Hansi > > > > > Hallo zusammen, > > > > für die eigene Haussteuerung mussten, damit die Rolladen bei Abwesenheit auf- und abfahren, die > > Zeitpunkte der Morgen- und Abenddämmerung bestimmt werden. > > > > Angeregt durch das Programm zu Jalusie-Steuerung von Axel Rathey sowie der Formeldarstellung > > unter http://lexikon.astronomie.info/zeitgleichung/ habe ich die Funktionen zur Berechnung von > > Sonnenauf und -untergang sowie der verschiedenen Dämmerungszeitpunkte in ein Modul zusammen- > > gefasst. > > > > sun.c2 > > > > Aufruf: sun.rise_set (int day, float breitengrad, float laengengrad) > > > > day ist eine Zahl von 1 (1.Januar) bis 365 (31.Dezember) - wir als day Null übergeben, so werden > > die Werte für den aktuellen Tag berechnet. > > > > Da in c2 keine komlexen Type als Return-Wert möglich sind, werden die Ergebnisse in sun.rs[] > > gespeichert. > > > > Vielleicht kann es jemand gebrauchen. > > > > Beste Grüße > > Thomas > > > > Hier ein Testprogramm und nachfolgend das Modul: > > <code> > > thread main { > > float Laenge, Breite; > > int Tage; > > > > // Berechnung fuer heute > > Tage = 0; > > > > // Koordinaten fuer Dortmund > > Laenge = 7.45; > > Breite = 51.53; > > > > // Aufruf der Berechnung > > sun.rise_set (Tage, Breite, Laenge); > > > > float auf, ab; > > int aufStd, aufMin, abStd, abMin; > > int i; > > > > > > // Die Ergebnisse stehen in sun.rs[i] für > > // i=sun.tranit = Transit, > > // i=civil = bürgerliche Dämmerung > > // i=nautical = nautische Dämmerung > > // i=astronomical = astronomische Dämmerung > > > > for i = sun.transit ... sun.astronomical { > > auf = sun.rs[i].riseTime; > > ab = sun.rs[i].setTime; > > aufStd = sun.rs[i].riseHour; > > aufMin = sun.rs[i].riseMinute; > > abStd = sun.rs[i].setHour; > > abMin = sun.rs[i].setMinute; > > } > > } > > </code> > > > > Hier nur das Modul sun.c2: > > <code> > > /******************************************************************** > > > > sun.c2 > > > > release : 2004/12/15 > > author : Thomas Wahle > > based on : Axel Rathey, Dr. Roland Brobeck) > > requires : math.c2, system.c2, myconst.c2 > > version : 0.1 > > contents : routine to calculate transit and twilight > > > > input: day 1 = 01.01 ... 356 = 31.12 > > current date is used if day is eq. 0 > > latitude (grad) > > longitude (grad) > > > > output: sun.rs[i].riseTime = sunrise as float > > sun.rs[i].setTime = sunset as float > > sun.rs[i].riseHour = sunrise hour as int > > sun.rs[i].riseMinute = sunrise minute as int > > sun.rs[i].setHour = sunset hour as int > > sun.rs[i].setMinute = sunset minute as int > > > > where i may be: > > sun.transit to get the transit > > sun.civil to get the civil twilight > > sun.nautical to get the nautical twilight > > sun.astronomical to get the astronomical twilight > > ********************************************************************/ > > > > // Constants for transit and twilight definitions > > const transit = 0; > > const civil = 1; > > const nautical = 2; > > const astronomical = 3; > > const h[] = -0.0145444, // transit > > -0.1047197, // civil twilight > > -0.2094395, // nautical twilight > > -0.3141592; // astronomical twilight > > > > // Type to return sunset and sunrise > > type stimeType { > > float riseTime; > > int riseHour; > > int riseMinute; > > float setTime; > > int setHour; > > int setMinute; > > } > > > > stimeType rs[4]; > > > > function rise_set (int day, float latitude, float longitude){ > > > > if day == 0 { > > int mcnt; > > for mcnt = 1 ... system.month()-1 > > day = day + myconst.DOM[mcnt]; > > day = day + system.day()+1; > > } > > // convert latizude from grad into rad > > latitude = latitude * constant.PI/180.0; > > float decl, eqTime, deltaTime; > > decl = 0.40954*math.sin(0.0172*(day-79.35)); > > eqTime = -0.1752*math.sin(0.033430*day+0.5474)-0.1340*math.sin(0.018234*day-0.1939); > > > > int time2utc; > > if system.dst() == 0 > > time2utc = 1; > > else > > time2utc = 2; > > > > int i; > > for i = transit ... astronomical { > > deltaTime = 12*math.acos((math.sin(h[i])-math.sin(latitude)*math.sin(decl))/(math.cos(latitude) > > *math.cos(decl)))/constant.PI; > > rs[i].riseTime = 12 - deltaTime - eqTime - longitude /15 + time2utc; > > rs[i].setTime = 12 + deltaTime - eqTime - longitude /15 + time2utc; > > rs[i].riseHour = rs[i].riseTime; > > rs[i].riseMinute = (rs[i].riseTime-rs[i].riseHour)*60; > > rs[i].setHour = rs[i].setTime; > > rs[i].setMinute = (rs[i].setTime-rs[i].setHour)*60; > > } > > } > > </code> > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB