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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-02-04T09:19:40+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=5787&amp;mode</id>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-02-04T09:19:40+01:00</updated>
<published>2014-02-04T09:19:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=68347#p68347</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=68347#p68347"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=68347#p68347"><![CDATA[
I jeszcze jedno: jeśli urządzenie ma pracować cały czas to trzeba pamiętać, że po ok. 49 dniach licznik millis() się przekręca i jakoś to uwzględnić w programie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 4 lut 2014, o 09:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maglo18]]></name></author>
<updated>2014-02-02T14:43:01+01:00</updated>
<published>2014-02-02T14:43:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=68040#p68040</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=68040#p68040"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=68040#p68040"><![CDATA[
Dodałem jako zmienne globalne<br />[syntax=c]int czas_mieszania = 60000;<br />int przerwa_mieszania = 12000;<br />long int tlapsebegin;<br />int state = 0;[/syntax]<br />a program wygląda tak<br />[syntax=c]void przerwa(){<br />if (state &lt; 1){<br />if(millis()-tlapsebegin &gt;= przerwa_mieszania) {<br />tlapsebegin=millis();<br />digitalWrite(relay,LOW);<br />state = 1;<br />Serial.println(&quot;przerwa mieszam wode&quot;);<br />}<br />}<br />else if (millis()-tlapsebegin &gt;= czas_mieszania) {<br />tlapsebegin = millis();<br />digitalWrite(relay,HIGH);<br />state = 0;<br />Serial.println(&quot;mieszam wode&quot;);<br />}<br />}[/syntax]<br />Wygląda na to że działa tylko chciałbym się upewnić że moje rozwiązanie nie zawiera błędów logicznych na przyszłość.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1993">maglo18</a> — 2 lut 2014, o 14:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-02-02T12:11:37+01:00</updated>
<published>2014-02-02T12:11:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=68014#p68014</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=68014#p68014"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=68014#p68014"><![CDATA[
Zmienna tlapsebegin musi zachowywać wartość między wywoływaniami funkcji przerwa(). W tej chwili, jako zmienna automatyczna jest przy każdym wywołaniu funkcji tworzona, z przypadkową wartością i niszczona przy wyjściu. Nic dziwnego więc że nie działa. Zmienna musi być albo statyczna albo globalna. To jedno. <br />Drugie, że jak już zdefiniujesz własciwą zmienną to w obecnej postaci i tak nie zadziala. Sprawdzasz oba warunki jednocześnie, zauważ, że warunek sprawdzający krótszy interwał nigdy nie pozwoli na spełnienie drugiego warunku. Trzeba sprawdzać raz jeden raz drugi warunek. Urządzenie działa w dwóch stanach: &quot;mieszanie wody&quot;, &quot;przerwa w mieszaniu&quot;. Kiedy urządzenie jest w stanie &quot;mieszanie wody&quot; trzeba sprawdzać czy upłynęło 5 minut. Kiedy upłynie zapisuje się nową wartość tlapsebegin i zaczyna sprawdzać czy upłynęło 10 minut. I tak w kółko.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 2 lut 2014, o 12:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maglo18]]></name></author>
<updated>2014-02-01T23:42:44+01:00</updated>
<published>2014-02-01T23:42:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67969#p67969</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67969#p67969"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67969#p67969"><![CDATA[
Czytałem kilka razy i nie za bardzo chyba zrozumiałem. Poniżej to co wywnioskowałem i oczywiście nie działa.<br />Chciałbym aby mieszał wodę 5 min a przerwy było 10 min.<br />[syntax=c]void przerwa(){<br />long int tlapsebegin;<br />if(millis()-tlapsebegin &gt;= TLAPSE1) {<br />tlapsebegin=millis();<br />digitalWrite(relay,HIGH);<br />Serial.println(&quot;mieszam wode&quot;);<br />}<br />if (millis()-tlapsebegin &gt;= TLAPSE2) {<br />tlapsebegin = millis();<br />digitalWrite(relay,LOW);<br />Serial.println(&quot;przerwa mieszam wode&quot;);<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1993">maglo18</a> — 1 lut 2014, o 23:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-02-01T23:05:51+01:00</updated>
<published>2014-02-01T23:05:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67964#p67964</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67964#p67964"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67964#p67964"><![CDATA[
Definiujesz zmienną, dajmy na to<br /><br />[syntax=c]long int tlapsebegin[/syntax], w której będziesz zapamiętywać moment od którego trzeba zacząć odmierzać czas i stałe czasowe (np. 8 minut)<br /><br /> [syntax=c]#define TLAPSE1  8 * 60 * 1000[/syntax] i np. 10 minut <br /><br />[syntax=c]#define TLAPSE2 10*60*1000[/syntax]. W punkcie czasowym zero zapisujesz timestamp <br /><br />[syntax=c]tlapsebegin = millis();[/syntax]Przy każdym obrocie pętli głównej sprawdzasz czy upłynął wymagany okres czasu<br /><br /> [syntax=c]millis()-tlapsebegin &gt;= TLAPSE1[/syntax]jeśli tak to robisz co trzeba zrobić i<br /><br />[syntax=c]tlapsebegin=millis()[/syntax]i znów w pętli głównej sprawdzasz czy upłynął, tym razem drugi ocinek czasu<br /><br />[syntax=c]millis()-tlapsebegin&gt;=TLAPSE2[/syntax]jeśli upłynął to robisz co innego i wpisujesz nową wartość tlapsebegin. I tak w kółko.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 1 lut 2014, o 23:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maglo18]]></name></author>
<updated>2014-02-01T22:45:03+01:00</updated>
<published>2014-02-01T22:45:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67958#p67958</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67958#p67958"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67958#p67958"><![CDATA[
To może mała podpowiedź jak się za to zabrać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1993">maglo18</a> — 1 lut 2014, o 22:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2014-02-01T22:42:58+01:00</updated>
<published>2014-02-01T22:42:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67955#p67955</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67955#p67955"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67955#p67955"><![CDATA[
delay zawsze blokuje ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 1 lut 2014, o 22:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maglo18]]></name></author>
<updated>2014-02-01T22:37:31+01:00</updated>
<published>2014-02-01T22:37:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67954#p67954</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67954#p67954"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67954#p67954"><![CDATA[
Tyle to wiem ale moje czasy to  kilka minut. Dopiero zaczynam ale wydaje mi się że jak da długi delay to w tym czasie blokuje się cały kod?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1993">maglo18</a> — 1 lut 2014, o 22:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2014-02-01T22:31:50+01:00</updated>
<published>2014-02-01T22:31:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67951#p67951</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67951#p67951"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67951#p67951"><![CDATA[
daj sobie delay(200); dla jednego , a dla innego delay(500);   co za różnica<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 1 lut 2014, o 22:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majjki]]></name></author>
<updated>2014-02-01T21:59:03+01:00</updated>
<published>2014-02-01T21:59:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67937#p67937</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67937#p67937"/>
<title type="html"><![CDATA[Re: Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67937#p67937"><![CDATA[
delay(1000);<br /><br />Wartość w nawiasie w milisekundach.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1197">majjki</a> — 1 lut 2014, o 21:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maglo18]]></name></author>
<updated>2014-02-01T21:29:13+01:00</updated>
<published>2014-02-01T21:29:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67928#p67928</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67928#p67928"/>
<title type="html"><![CDATA[Różne czasy dla zmiany stanu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5787&amp;p=67928#p67928"><![CDATA[
Nie mogę sobie poradzić z załączeniem pinu na stan wysoki na czas1 i wyłączaniem go na czas2. Korzystam z funkcji milis() z forum ale ona włącza i wyłącza stan na ten sam czas a ja potrzebuje dwa rożne czasy. Nawet nie wiem po jakiej frazie mam szukać mojego rozwiązania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1993">maglo18</a> — 1 lut 2014, o 21:29</p><hr />
]]></content>
</entry>
</feed>