<?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=4&amp;t=10214&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-01-15T16:13:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10214&amp;mode</id>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-01-15T16:13:56+01:00</updated>
<published>2015-01-15T16:13:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114222#p114222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114222#p114222"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114222#p114222"><![CDATA[
Cieszę się , że mogłem pomóc, a jeszcze bardziej z tego, że zaczynam coraz lepiej rozumieć to programowanie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> oczywiscie dzięki Mirkowi i tym wszystkim którzy tutaj pomagają rozwikłać różne problemy. Więc ja również dziękuję bo sporo się tutaj nauczyłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 15 sty 2015, o 16:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacky_cy]]></name></author>
<updated>2015-01-15T15:19:36+01:00</updated>
<published>2015-01-15T15:19:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114218#p114218</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114218#p114218"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114218#p114218"><![CDATA[
Pomysł janusza pozamiatał... <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> trochę drobnej kosmetyki i wszystko działa tak jak chciałem !<br /><br />Więc na przyszłość jakby ktoś potrzebował:<br /><br />[syntax=c]//funkcja sprawdzajaca czas wlaczenia<br />uint8_t on(uint8_t h_on, uint8_t m_on, uint8_t h_off, uint8_t m_off)<br />{<br />if((h_on == h_off) &amp;&amp; (m_on == m_off)) return 0;<br />else<br />{<br />    if( (h_on &lt;= h_off) &amp;&amp; (m_on &lt; m_off) )<br />    {<br />    if( ((rtc_time_buffer&#91;0&#93; &gt;= h_on) &amp;&amp; (rtc_time_buffer&#91;1&#93; &gt;= m_on)) &amp;&amp; ((rtc_time_buffer&#91;0&#93; &lt;= h_off) &amp;&amp; (rtc_time_buffer&#91;1&#93; &lt; m_off)) ) return 1;<br />        else  return 0;<br />    }<br />    else<br />    {<br />    if( ((rtc_time_buffer&#91;0&#93; &gt;= h_on) &amp;&amp; (rtc_time_buffer&#91;1&#93; &gt;= m_on)) || ((rtc_time_buffer&#91;0&#93; &lt;= h_off) &amp;&amp; (rtc_time_buffer&#91;1&#93; &lt; m_off)) ) return 1;<br />        else  return 0;<br />    }<br />}<br />}[/syntax]<br />gdzie rtc_time_buffer[0] to godzina, a rtc_time_buffer[1] minuta z PCFa. <br />i dalej:<br />[syntax=c]if(on(hon_wentylator, mon_wentylator, hoff_wentylator, moff_wentylator)) OCR2 = (obroty * 2.5); else { OCR2 = 0; } //warunek sprawdzajacy wentylator[/syntax]<br /><br />Dzięki raz jeszcze kolego !<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4547">jacky_cy</a> — 15 sty 2015, o 15:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-01-15T09:27:14+01:00</updated>
<published>2015-01-15T09:27:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114205#p114205</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114205#p114205"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114205#p114205"><![CDATA[
No nie, z tą gigantyczną ilością warunków to Kolega mokrowski raczej mocno przesadził. Według mnie wystarczy zaledwie kilka. Po pierwsze trzeba zdecydować czy dopuszczamy ustawienie tego samego czasu włączenia i wyłączenia urządzenia. Jeśli nie to pierwszy warunek odpada. Jeśli tak to trzeba zdecydować czy urządzenie ma być wtedy całą dobę wyłączone czy załączone. Potem należy sprawdzić czy czas załączenia jest mniejszy od czasu wyłączenia - wtedy mamy ustawianie przedziałów czasowych bez przejścia przez północ. Jeśli czas załączenia jest większy od czasu wyłączenia to mamy sytuację gdy przedział czasowy obejmuje przejście przez północ. I to wszystko. Dla większej jasności przykładowy kod.<br />Przyjmuje następujące oznaczenia:<br />t_on - czas załączenia<br />t_off - czas wyłączenia<br />t_rtc - bieżący czas z zegara RTC<br />ON - urządzenie włączone (czyli gdzieś tam będzie zdefiniowane makro na wysterowanie odpowiedniego pinu portu mikrokontrolera)<br />OFF - urządzenie wyłączone (podobnie jak wyżej tylko wyłączenie)<br />Oczywiście to kod uproszczony bo naprawdę trzeba porównywać godziny i minuty albo zrobić jakąś zmienną, która będzie zawierała jedno i drugie. Ale tu chodzi mi o pokazanie samego porównania.<br /><br /> [syntax=c]// najpierw sprawdzam czy przypadkiem czas wyłączenia nie jest równy czasowi włączenia<br />if(t_on == t_off) OFF; // powiedzmy , że wtedy urządzenie ma być wyłączone<br />else<br />{<br />    if(t_on &lt; t_off) // teraz sprawdzam czy przedział czasowy włączenia urządzenia przechodzi przez północ<br />       {<br />           // sprawdzam warunek włączenia gdy nie ma przejścia przez północ<br />           if((t_rtc &gt;= t_on) &amp;&amp; (t_rtc &lt; t_off)) ON;<br />           else<br />                 OFF;<br />       }<br />       else<br />       {<br />           // sprawdzam warunek włączenia gdy przejście przez północ<br />           if((t_rtc &gt;= t_on) || (t_rtc &lt; t_off) ON;<br />           else<br />                 OFF;<br />        }<br />}[/syntax]<br /><br />Druga metoda była by taka, żeby programowo zabronić ustawiania czasu wyłączenia &lt; od czas włączenia i wtedy jest tylko jeden warunek do sprawdzenia. A ustawienie przedziału czasowego włączenia urządzenia przechodzącego przez północ musiało by być rozbite na dwa przedziały - na przykład dla czasu od 23:00 do 5:00  :<br />23:00 - ON<br />23:59 - OFF<br />0:00 - ON<br />5:00 - OFF<br /><br />I to wszystko z tej gigantycznej ilości if-ów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 15 sty 2015, o 09:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-01-14T21:02:43+01:00</updated>
<published>2015-01-14T21:02:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114155#p114155</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114155#p114155"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114155#p114155"><![CDATA[
A dlaczego ma się wyłączyć o 0:00? Warunek włączenia powinien być taki: <br />jeśli godzina większa od 21 lub mniejsza od 5 włącz urządzenie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 14 sty 2015, o 21:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacky_cy]]></name></author>
<updated>2015-01-14T20:32:42+01:00</updated>
<published>2015-01-14T20:32:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114147#p114147</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114147#p114147"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114147#p114147"><![CDATA[
Przysiądę nad tym i coś spróbuję stworzyć....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4547">jacky_cy</a> — 14 sty 2015, o 20:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2015-01-14T18:52:55+01:00</updated>
<published>2015-01-14T18:52:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114132#p114132</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114132#p114132"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114132#p114132"><![CDATA[
A próbowałeś zamieniać czas na liczbę 16bit postaci h*60+m gdzie h-godzina, m-minuta? Wtedy łatwiej napisać warunek sprawdzający czy dana godzina już nastapiła. Dodatkowo możesz gdzieś przechowywać datę żeby wiedzieć czy nastąpiła zmiana czasu i zliczanie od zera<br /><br />W każdym razie ważnym jest żeby zmienną h mnożyć przez co najmniej 60 aby liczba dla danego, konkretnego czasu była unikatowa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 14 sty 2015, o 18:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matekogon]]></name></author>
<updated>2015-01-14T18:47:50+01:00</updated>
<published>2015-01-14T18:47:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114130#p114130</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114130#p114130"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114130#p114130"><![CDATA[
Kolego jacky w moim rozwiązaniu jest uwzględniony problem przejścia przez godzinę 00:00   właśnie jest to przypadek kiedy godzina  włączenie jest większa od wyłączenia  Jeśli będziesz miał problem z analizą pisz to ci wytłumaczę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1380">matekogon</a> — 14 sty 2015, o 18:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacky_cy]]></name></author>
<updated>2015-01-14T18:17:53+01:00</updated>
<published>2015-01-14T18:17:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114126#p114126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114126#p114126"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114126#p114126"><![CDATA[
<div class="quotetitle">janusz17 napisał(a):</div><div class="quotecontent"><br />czas i sprawdza czy urządzenie ma być włączone czy wyłączone.<br /></div> No właśnie i tu jest problem, że jak zmienne godzina_włączenia i minuta_włączenia przyrównasz do buforów z rtc to sprawdzi się to tylko w przypadku włączonego urządzenia. Jak dasz większe równe to owszem włączy się ale problem wystąpi gdy jest np. 21 urządzenie włączone o 20, ale wyłączone ma być np. o 5 a wyłączy się już o 00:00. Kolego <strong>matekogon</strong> dzięki.. przejrzę, coś postaram się naskrobać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4547">jacky_cy</a> — 14 sty 2015, o 18:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matekogon]]></name></author>
<updated>2015-01-14T17:54:08+01:00</updated>
<published>2015-01-14T17:54:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114124#p114124</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114124#p114124"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114124#p114124"><![CDATA[
Kolego jedyne rozwiązanie przynajmniej mi sie tak wydaje i działa w moim sterowniku od lat to zastosowanie przedziałów czasowych jesli znasz trochę bascom to ci pokazuje mój kod z wyjasnieniami natomiast jeśli nie znasz bascoma to po komentarzach w kodzie powinieneś zrozumieć i napiszesz sam kod w C <br />[syntax=basic4gl]For Poo = 1 To 17 Step 1                                 'sprawdzanie czasów włączenia urządzenia wyłączenia<br />      If Gon(poo) &lt; Goff(poo) Then                     'sprawdzam czy czas włączenia jest mnniejszy od wyłączenia<br />'Tak to wygląda graficznie jeśli chcesz coś włączyć o 8:00 i wyłączyć o 20:00<br />'doba w minutach wygląda na wykresie tak<br />'0-------------------------&gt;1440minut<br /> <br />'0--------------/----------------------------/--------&gt;1440<br /> '             8:00 ON                         20:00 OFF<br /> <br /> <br />'przelicz_czas to czas z rtc przeliczony na minuty np 19:30 to  1170minut to 'samo jest robione z czasem Gon o Goff<br />         If Przel_czas &gt;= Gon(poo) And Przel_czas =&lt; Goff(poo) Then 'jeśli jest w 'tym przedziale to załącz urządzenie<br /> <br /> ' 0--------------/xxxxxxxxxxxxxxxxxxxx/--------&gt;1440<br /> '                 8:00 ON                    20:00 OFF        <br />               Gosub Urzadzeniaon<br /> <br />         Else  'jeśli nie ma w tym przedziale to wyłącz <br /> <br />               Gosub Urzadzeniaoff<br /> <br />         End If<br />      Else 'jeśli godzina on jest wieksza od off to wykonuje to. Tutaj powstają dwa 'przedziały  <br /> <br />         If Przel_czas &gt;= 0 And Przel_czas =&lt; Goff(poo) Then<br />           Flaga_g1 = 1<br />'         0xxxxxxx/------------------------/----------&gt;1440<br />'                  8:00 OFF                   20:00 ON<br />         End If<br />         If Przel_czas &gt;= Gon(poo) And Przel_czas =&lt; 1440 Then<br />           Flaga_g2 = 1<br />'         0--------/------------------------/xxxxxxxx&gt;1440<br />'                  8:00 OFF                  20:00  ON<br />         End If<br />         If Flaga_g1 = 1 Or Flaga_g2 = 1 Then<br />            Flaga_g1 = 0<br />            Flaga_g2 = 0<br /> <br />               Gosub Urzadzeniaon<br /> <br />         Else<br /> <br />               Gosub Urzadzeniaoff<br /> <br />         End If<br />      End If<br />   Next Poo[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1380">matekogon</a> — 14 sty 2015, o 17:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-01-14T17:47:55+01:00</updated>
<published>2015-01-14T17:47:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114122#p114122</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114122#p114122"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114122#p114122"><![CDATA[
No ale przecież czas pobierasz z RTC, który zapewne masz podtrzymywany bateryjnie. Po włączeniu sterownika pobiera on aktualny czas i sprawdza czy urządzenie ma być włączone czy wyłączone. Nie widzę tu jakiegoś problemu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 14 sty 2015, o 17:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacky_cy]]></name></author>
<updated>2015-01-14T16:42:20+01:00</updated>
<published>2015-01-14T16:42:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114117#p114117</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114117#p114117"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114117#p114117"><![CDATA[
Tak dokładnie,<br /><br />Załóżmy, że jest godzina włączenia urządzenia. Urządzenie się włącza, a następnie sterownik ma małą przerwę w zasilaniu. Po włączeniu sterownika na pin przykładowo PB2 nie zostanie wystawiony stan wysoki (nie załączy przekaźnika), musiał by czekać do następnej doby przykładowo czas włączenia 7:30 warunek włączenia godzina==7 &amp;&amp; minuta==30.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4547">jacky_cy</a> — 14 sty 2015, o 16:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-01-14T16:34:11+01:00</updated>
<published>2015-01-14T16:34:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114116#p114116</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114116#p114116"/>
<title type="html"><![CDATA[Re: Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114116#p114116"><![CDATA[
Nie bardzo rozumiem co masz na mysli pisząc<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Jednak takie rozwiązanie ma wieeelki minus czyli urządzenie musi być non stop włączone żeby natrafić akurat na tą godzinę i minutę.<br /></div><br />Chodzi pewnie o sterownik urządzenia?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 14 sty 2015, o 16:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacky_cy]]></name></author>
<updated>2015-01-14T16:12:28+01:00</updated>
<published>2015-01-14T16:12:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114109#p114109</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114109#p114109"/>
<title type="html"><![CDATA[Czasowe włączanie / czasowe wyłączanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10214&amp;p=114109#p114109"><![CDATA[
Bardzo proszę o pomoc w sprawie czasowego włączania / wyłączania danych urządzeń. Orłem w programowaniu nie jestem i w dodatku świeżakiem więc z góry proszę o wyrozumiałość. Więc póki co rozwiązałem to w tenże sposób:<br />[syntax=c]uint8_t on(uint8_t h_on, uint8_t m_on)<br />{<br />if((rtc_time_buffer&#91;0&#93;==h_on)&amp;&amp;(rtc_time_buffer&#91;1&#93;==m_on)) return 1;<br /><br />return 0;<br />}<br />uint8_t off(uint8_t h_off, uint8_t m_off)<br />{<br />if((rtc_time_buffer&#91;0&#93;==h_off)&amp;&amp;(rtc_time_buffer&#91;1&#93;==m_off)) return 1;<br /><br />return 0;<br />}[/syntax]<br />i dalej gdzieś sobie w programie piszę coś takiego. [syntax=c]if(on(hon_w, mon_w)) ogrzewanie_on;<br />if(off(hoff_w, moff_w)) ogrzewanie_off;[/syntax]<br />Jednak takie rozwiązanie ma wieeelki minus czyli urządzenie musi być non stop włączone żeby natrafić akurat na tą godzinę i minutę. Przy warunku 'większy równy' powstaje problem z przejściem przez godzinę 00:00 itp. itd.<br /><br />Czy ktoś z Was ma na to jakiś ciekawy patent lub zechce mi pomóc w stworzeniu czegoś bardziej eleganckiego ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4547">jacky_cy</a> — 14 sty 2015, o 16:12</p><hr />
]]></content>
</entry>
</feed>