<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=12&amp;t=21817&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-01-02T15:35:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=21817&amp;mode</id>
<entry>
<author><name><![CDATA[mrek33]]></name></author>
<updated>2019-01-02T15:35:37+01:00</updated>
<published>2019-01-02T15:35:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21817&amp;p=215330#p215330</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21817&amp;p=215330#p215330"/>
<title type="html"><![CDATA[Wschód i zachód słońca]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21817&amp;p=215330#p215330"><![CDATA[
Witam, ostatnio zrobiłem wyświetlacz matrycowy na zewnątrz tak aby pokazywał<br />czas temperaturę imieniny i inne wydarzenia i pomyślałem że fajnie by było aby pokazywał<br />też godzinę wschodu i zachodu słońca oraz długość dnia.<br />Po kilku dniach wertowania internetu i studiowaniu rożnych wzorów powstał taki oto kawałek kodu<br />[syntax=basic4gl]$regfile = &quot;m328pdef.dat&quot;<br />$crystal = 16000000<br />$hwstack = 100<br />$swstack = 100<br />$framesize = 40<br />$baud = 57600<br />Config Serialin = Buffered , Size = 250<br />Config Serialout = Buffered , Size = 250<br />Config Pind.2 = Output<br />Config Pind.3 = Output<br />Reset Portd.2<br />Reset Portd.3<br />Enable Interrupts<br /><br />'w programie wykorzystałem  część wzorów podanych na stronie http://cybermoon.pl/wiedza/algorithms/wschody_slonca.html<br />'inne zmodyfikowałem lub przekształciłem<br />' wyniki są z dokładnością do jednej dwóch minut<br />'czas wykonywania samych obliczeń przy kwarcu 16 MHz to około 3,5milisekundy<br />'wynik jest podany w czasie UTC dla Polski należy doliczyć dla czasu zimowego 1 godzinę a dla letniego 2 godziny<br /><br />'*******DANE WEJŚCIOWE ROK MIESIĄC DZIEŃ SZEROKOŚĆ I DŁUGOŚĆ GEOGRAFICZNA<br />'Zmienna Req w zależności jaki wschód i zachód liczymy (połozenie słońca pod horyzontem)<br />'=-0.833 oficjalny<br />'=-6 cywilny<br />'=-12 żeglarski<br />'=-18 astronomiczny<br />Dim Req As Single : Req = -0.833<br />Dim Rok As Word : Rok = 2019<br />Dim Miesiac As Byte : Miesiac = 1<br />Dim Dzien As Byte : Dzien = 2<br />Dim Szerokosc As Single : Szerokosc = 50.069495<br />Dim Dlugosc As Single : Dlugosc = 20.480322<br /><br />'****ZMIENNE POMOCNICZE<br />Dim J As Single : Dim J1 As Single : Dim J2 As Single<br />Dim Cent As Single<br />Dim L As Single : Dim L1 As Single<br />Dim G As Single : Dim G1 As Single<br />Dim O As Single<br />Dim F As Single : Dim F1 As Single : Dim F2 As Single<br />Dim E As Single : Dim E1 As Single : Dim E2 As Single<br />Dim A As Single : Dim A1 As Single : Dim A2 As Single<br />Dim C As Single : Dim C1 As Single : Dim C2 As Single<br />Dim C3 As Single : Dim C4 As Single : Dim C5 As Single<br />Dim C6 As Single : Dim C7 As Single : Dim C8 As Single<br />Dim Wsch As Single : Dim Wsch1 As Single : Dim Wsch2 As Single<br />Dim Godzina As Single : Dim Minuta As Single<br />Dim Zach As Single : Dim Zach1 As Single : Dim Zach2 As Single<br />Dim Godzinazach As Single : Dim Minutazach As Single<br />Dim Gzach As Byte       'GODZINA ZACHODU<br />Dim Mzach As Byte       'MINUTA ZACHODU<br />Dim Gwsch As Byte       'GODZINA WSCHODU<br />Dim Mwsch As Byte       'MINUTA WSCHODU<br /><br /><br />         Do<br /><br />         J1 = Miesiac + 9 : J1 = J1 / 12 : J1 = Int(j1) : J1 = J1 + Rok<br />         J1 = J1 / 4 : J1 = J1 * 7 : J1 = Int(j1)<br />         J2 = 275 * Miesiac : J2 = J2 / 9 : J2 = Int(j2)<br />         J = 367 * Rok : J = J - J1 : J = J + J2<br />         J = J + Dzien : J = J - 730531.5<br />         Cent = J / 36525<br />         L = 628.331969753 * Cent : L = L + 4.894950420 : L1 = L / 6.283185307<br />         L1 = Int(l1) : L1 = L1 * 6.28318530 : L = L - L1<br />         G = 628.30 * Cent : G = G + 6.2400408 : G1 = G / 6.283185307<br />         G1 = Int(g1) : G1 = G1 * 6.283185307 : G = G - G1<br />         O = 0.0002269 * Cent : O = 0.409093 - O<br />         F1 = 2 * G : F1 = Sin(f1) : F1 = F1 * 0.00034907<br />         F2 = Sin(g) : F2 = F2 * 0.033423 : F = F1 + F2<br />         E2 = L + F : E2 = E2 * 2 : E2 = Sin(e2) : E2 = E2 * 0.0430398<br />         E1 = L + F : E1 = E1 * 4 : E1 = Sin(e1) : E1 = E1 * 0.00092502<br />         E = E2 - E1 : E = E - F<br />         A1 = L + F : A1 = Sin(a1) : A = Sin(o)<br />         A = A * A1 : A = Asin(a)<br />         C1 = 0.017453293 * Req : C1 = Sin(c1)<br />         C2 = 0.017453293 * Szerokosc : C2 = Sin(c2) : C3 = Sin(a)<br />         C4 = 0.0174553293 * Szerokosc : C4 = Cos(c4) : C5 = Cos(a)<br />         C6 = C2 * C3 : C7 = C1 - C6 : C8 = C4 * C5 : C = C7 / C8<br />         Wsch1 = Acos(c) : Wsch2 = Dlugosc * 0.0174453293 : Wsch2 = Wsch2 + E<br />         Wsch2 = Wsch2 + Wsch1 : Wsch = 3.141592653 - Wsch2<br />         Wsch = Wsch * 57.2957795 : Wsch = Wsch / 15<br />         Godzina = Int(wsch) : Gwsch = Godzina : Minuta = Wsch - Gwsch<br />         Minuta = Minuta * 100 : Minuta = Int(minuta) : Minuta = Minuta * 6<br />         Minuta = Minuta / 10 : Mwsch = Minuta<br />         Zach1 = Acos(c) : Zach1 = -1 * Zach1 : Zach2 = Dlugosc * 0.0174453293<br />         Zach2 = Zach2 + E : Zach2 = Zach2 + Zach1 : Zach = 3.141592653 - Zach2<br />         Zach = Zach * 57.2957795 : Zach = Zach / 15<br />         Godzinazach = Int(zach) : Gzach = Godzinazach : Minutazach = Zach - Gzach<br />         Minutazach = Minutazach * 100 : Minutazach = Int(minutazach)<br />         Minutazach = Minutazach * 6 : Minutazach = Minutazach / 10 : Mzach = Minutazach<br /><br /><br />            Print &quot;Rok--------- &quot; ; Rok<br />            Print &quot;Miesiac----- &quot; ; Miesiac<br />            Print &quot;Dzien------- &quot; ; Dzien<br />            Print &quot;dlugosc----- &quot; ; Dlugosc<br />            Print &quot;szerokosc--- &quot; ; Szerokosc<br />            Print &quot;Wsch-------- &quot; ; Gwsch ; &quot;:&quot; ; Mwsch<br />            Print &quot;zach-------- &quot; ; Gzach ; &quot;:&quot; ; Mzach<br />            Print &quot; &quot;<br /><br />            Wait 1<br /><br />Loop[/syntax]<br /><br />Może komuś się przyda w jakiejś stacji meteo, może ktoś to bardziej zoptymalizuje.<br />Oczywiście obliczenia nie przewidują nocy i dnia polarnego (należałoby sprawdzać najpierw szerokość geograficzną i wtedy po wystąpieniu błędu sprawdzić czy to jest noc czy dzień polarny)<br />Dla szerokości geograficznej południowej i długości zachodniej dane wprowadzamy w postaci liczb ujemnych.<br />Ogólnie wyniki generowane dla miejscowości w Polsce są przyzwoite, przynajmniej dla mnie.<br />Zachęcam do sprawdzania a wszystkie ewentualne poprawki mile widziane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6795">mrek33</a> — 2 sty 2019, o 15:35</p><hr />
]]></content>
</entry>
</feed>