<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[RemoteXY community — Проблема операций с системным временем]]></title>
		<link>https://forum.remotexy.com/viewtopic.php?id=106</link>
		<atom:link href="https://forum.remotexy.com/extern.php?action=feed&amp;tid=106&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[The most recent posts in Проблема операций с системным временем.]]></description>
		<lastBuildDate>Wed, 15 Feb 2017 18:13:26 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Проблема операций с системным временем]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=349#p349</link>
			<description><![CDATA[<div class="quotebox"><cite>mefi73 wrote:</cite><blockquote><p>вчера делал проект с применением библиотеки, функции в которой имеет задержку. выяснил что если задержка более 0,25 секунды, то связь обрывается, в итоге поставил задержку в 0,2 секунды, но даже так команда от смартфона до контроллера идет секунд 5.<br />такой вопрос, обработчик&nbsp; &nbsp;RemoteXY_Handler ();&nbsp; находится в главном цикле, можно ли его продублировать в других циклах при необходимости? а то приходится всё делать в главном цикле избегая любых других циклов</p></blockquote></div><p>RemoteXY_Handler () можно вызывать несколько раз в цикле loop.</p>]]></description>
			<author><![CDATA[null@example.com (remotexy)]]></author>
			<pubDate>Wed, 15 Feb 2017 18:13:26 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=349#p349</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проблема операций с системным временем]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=348#p348</link>
			<description><![CDATA[<div class="quotebox"><cite>Vasiliy wrote:</cite><blockquote><p>Используется не задеожка а счетчик таймера, задержек в таком варианте нет</p></blockquote></div><p>Да. Подход верный. Задержек в цикле loop нет. Хороший пример использования таймера.</p><div class="codebox"><pre><code>  if (RemoteXY.switch_1!=digitalRead(PIN_SWITCH_1)) { //Проверяем, прошла ли команда на включение со смарта PIN_SWITCH_1
    digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH);
    previousMillis_1 = millis() + RequiredDelay; //Прибавляем к текущему счетчику необходимую задержку
    if (previousMillis_1 &lt;= millis()) { //Ждем когда задержка пройдет
      digitalWrite(PIN_SWITCH_11, (RemoteXY.switch_1==0)?LOW:HIGH);
    }
  }</code></pre></div><p>Но у кода есть некоторые ошибки, не связанные с RemoteXY. Выполнять поставленную задачу к сожалению не будет.</p>]]></description>
			<author><![CDATA[null@example.com (remotexy)]]></author>
			<pubDate>Wed, 15 Feb 2017 18:11:46 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=348#p348</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проблема операций с системным временем]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=344#p344</link>
			<description><![CDATA[<p>Используется не задеожка а счетчик таймера, задержек в таком варианте нет</p>]]></description>
			<author><![CDATA[null@example.com (Vasiliy)]]></author>
			<pubDate>Mon, 13 Feb 2017 16:35:40 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=344#p344</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проблема операций с системным временем]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=342#p342</link>
			<description><![CDATA[<p>вчера делал проект с применением библиотеки, функции в которой имеет задержку. выяснил что если задержка более 0,25 секунды, то связь обрывается, в итоге поставил задержку в 0,2 секунды, но даже так команда от смартфона до контроллера идет секунд 5.<br />такой вопрос, обработчик&nbsp; &nbsp;RemoteXY_Handler ();&nbsp; находится в главном цикле, можно ли его продублировать в других циклах при необходимости? а то приходится всё делать в главном цикле избегая любых других циклов</p>]]></description>
			<author><![CDATA[null@example.com (mefi73)]]></author>
			<pubDate>Mon, 13 Feb 2017 13:07:37 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=342#p342</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проблема операций с системным временем]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=340#p340</link>
			<description><![CDATA[<p>В коде необходимо избегать каких либо задержек. Это неверный стиль программирования. <br />1. Пока у вас выполняется задержка, что то может случиться и это не будет отработано контроллером. <br />2. RemotrXY не будет своевременно отрабатывать события связи, как итог - связи не будет или будет паршивая.</p><p>Время необходимо проверять в каждом цикле loop.</p>]]></description>
			<author><![CDATA[null@example.com (remotexy)]]></author>
			<pubDate>Mon, 13 Feb 2017 07:45:24 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=340#p340</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проблема операций с системным временем]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=339#p339</link>
			<description><![CDATA[<p>Да, в таком варианте выключаться нагрузка не будет <img src="https://forum.remotexy.com/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>Чтобы выключалась надо проверять текущее состояние PIN_SWITCH_1,2,3,4 и отрабатывать изменения<br />Например так:</p><p>&nbsp; if (RemoteXY.switch_1!=digitalRead(PIN_SWITCH_1)) { //Проверяем, прошла ли команда на включение со смарта PIN_SWITCH_1<br />&nbsp; &nbsp; digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH);<br />&nbsp; &nbsp; previousMillis_1 = millis() + RequiredDelay; //Прибавляем к текущему счетчику необходимую задержку<br />&nbsp; &nbsp; if (previousMillis_1 &lt;= millis()) { //Ждем когда задержка пройдет<br />&nbsp; &nbsp; &nbsp; digitalWrite(PIN_SWITCH_11, (RemoteXY.switch_1==0)?LOW:HIGH);<br />&nbsp; &nbsp; }<br />&nbsp; }</p>]]></description>
			<author><![CDATA[null@example.com (Vasiliy)]]></author>
			<pubDate>Mon, 13 Feb 2017 07:41:18 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=339#p339</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проблема операций с системным временем]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=338#p338</link>
			<description><![CDATA[<p>По моему у вас логика построена совсем не так, как задумано.</p><p>Както так должно быть:</p><p>void setup() <br />{<br />&nbsp; RemoteXY_Init (); <br />&nbsp; Serial.begin(9600);<br />&nbsp; pinMode (PIN_SWITCH_1, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_2, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_3, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_4, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_11, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_21, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_31, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_41, OUTPUT);</p><p>&nbsp; // TODO you setup code<br />&nbsp; previousMillis_1 = millis();<br />&nbsp; previousMillis_2 = millis();<br />&nbsp; previousMillis_3 = millis();<br />&nbsp; previousMillis_4 = millis();<br />}</p><p>void loop() <br />{ <br />&nbsp; RemoteXY_Handler ();<br />&nbsp; <br />&nbsp; digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH);<br />&nbsp; digitalWrite(PIN_SWITCH_2, (RemoteXY.switch_2==0)?LOW:HIGH);<br />&nbsp; digitalWrite(PIN_SWITCH_3, (RemoteXY.switch_3==0)?LOW:HIGH);<br />&nbsp; digitalWrite(PIN_SWITCH_4, (RemoteXY.switch_4==0)?LOW:HIGH);</p><p>&nbsp; if (RemoteXY.switch_1==1) { //Проверяем, прошла ли команда на включение со смарта PIN_SWITCH_1<br />&nbsp; &nbsp; previousMillis_1 = millis() + RequiredDelay; //Прибавляем к текущему счетчику необходимую задержку<br />&nbsp; &nbsp; if (previousMillis_1 &lt;= millis()) { //Ждем когда задержка пройдет<br />&nbsp; &nbsp; &nbsp; digitalWrite(PIN_SWITCH_11, (RemoteXY.switch_1==0)?LOW:HIGH);<br />&nbsp; &nbsp; }<br />&nbsp; }</p><p>&nbsp; if (RemoteXY.switch_2==1) { //Проверяем, прошла ли команда на включение со смарта PIN_SWITCH_2<br />&nbsp; &nbsp; previousMillis_2 = millis() + RequiredDelay; //Прибавляем к текущему счетчику необходимую задержку<br />&nbsp; &nbsp; if (previousMillis_2 &lt;= millis()) { //Ждем когда задержка пройдет<br />&nbsp; &nbsp; &nbsp; digitalWrite(PIN_SWITCH_21, (RemoteXY.switch_2==0)?LOW:HIGH);<br />&nbsp; &nbsp; }<br />&nbsp; }</p><p>&nbsp; if (RemoteXY.switch_3==1) { //Проверяем, прошла ли команда на включение со смарта PIN_SWITCH_3<br />&nbsp; &nbsp; previousMillis_3 = millis() + RequiredDelay; //Прибавляем к текущему счетчику необходимую задержку<br />&nbsp; &nbsp; if (previousMillis_3 &lt;= millis()) { //Ждем когда задержка пройдет<br />&nbsp; &nbsp; &nbsp; digitalWrite(PIN_SWITCH_31, (RemoteXY.switch_3==0)?LOW:HIGH);<br />&nbsp; &nbsp; }<br />&nbsp; }</p><p>&nbsp; if (RemoteXY.switch_4==1) { //Проверяем, прошла ли команда на включение со смарта PIN_SWITCH_4<br />&nbsp; &nbsp; previousMillis_4 = millis() + RequiredDelay; //Прибавляем к текущему счетчику необходимую задержку<br />&nbsp; &nbsp; if (previousMillis_4 &lt;= millis()) { //Ждем когда задержка пройдет<br />&nbsp; &nbsp; &nbsp; digitalWrite(PIN_SWITCH_41, (RemoteXY.switch_4==0)?LOW:HIGH);<br />&nbsp; &nbsp; }<br />&nbsp; }<br />}</p><p>Както так<br />В данном коде задержка на включение обрабатывается для каждого PIN_SWITCH отдельно<br />Возможно все упростить, оставить только один PIN_SWITCH команды со смарта и обрабатывать все вместе<br />Я не знаю деталей задачи</p>]]></description>
			<author><![CDATA[null@example.com (Vasiliy)]]></author>
			<pubDate>Mon, 13 Feb 2017 07:36:00 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=338#p338</guid>
		</item>
		<item>
			<title><![CDATA[Проблема операций с системным временем]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=333#p333</link>
			<description><![CDATA[<p>Добрый день!<br />конфиг - wemos D1, esp8266, программа включения 4-х нагрузок(светодиоды, много)<br />-=суть извращения - при включении светодиодов (24шт х 3w) первые 0,00021 сек ток составляет примерно 1500А. контакты обгорают, нужно ограничить пусковой ток - вначале включаем последовательно сначала лампу накаливания, за полсекунды конденсаторы светодиодов заряжаются, а затем включаем 220 напрямую к LED. Искры нет)) профит!<br />Задача - замыкать предварительную цепь(D9, D8, D7, D6) сразу по команде со смарта,&nbsp; основная цепь (D5,D4,D3,D2) включается через полсекунды (RequiredDelay).<br />===КОД===</p> <br /><br /><p>#define REMOTEXY_MODE__ESP8266WIFI_LIB<br />#include &lt;ESP8266WiFi.h&gt;<br />#include &lt;RemoteXY.h&gt;</p><p>// настройки соединения <br />#define REMOTEXY_WIFI_SSID &quot;CapsMan&quot;<br />#define REMOTEXY_WIFI_PASSWORD &quot;321321321&quot;<br />#define REMOTEXY_SERVER_PORT 6377<br />long previousMillis = 0;&nbsp; //по идее время нажатия кнопки на смарте<br />long RequiredDelay = 5000;&nbsp; // по идее время задержки между основной и предварительной цепью</p><p>// конфигурация интерфейса&nbsp; <br />#pragma pack(push, 1)<br />uint8_t RemoteXY_CONF[] =<br />&nbsp; { 4,0,59,0,6,5,1,2,0,8<br />&nbsp; ,8,22,11,2,79,78,0,79,70,70<br />&nbsp; ,0,2,0,8,21,22,11,2,79,78<br />&nbsp; ,0,79,70,70,0,2,0,8,34,22<br />&nbsp; ,11,2,79,78,0,79,70,70,0,2<br />&nbsp; ,0,8,47,22,11,2,79,78,0,79<br />&nbsp; ,70,70,0 };<br />&nbsp; <br />// структура определяет все переменные вашего интерфейса управления <br />struct {</p><p>&nbsp; &nbsp; // input variable<br />&nbsp; uint8_t switch_1; // =1 если переключатель включен и =0 если отключен <br />&nbsp; uint8_t switch_2; // =1 если переключатель включен и =0 если отключен <br />&nbsp; uint8_t switch_3; // =1 если переключатель включен и =0 если отключен <br />&nbsp; uint8_t switch_4; // =1 если переключатель включен и =0 если отключен </p><p>&nbsp; &nbsp; // other variable<br />&nbsp; uint8_t connect_flag;&nbsp; // =1 if wire connected, else =0 </p><p>&nbsp; // New variables<br /> } RemoteXY;<br />#pragma pack(pop)</p><p>/////////////////////////////////////////////<br />//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;END RemoteXY include&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //<br />/////////////////////////////////////////////</p><p>#define PIN_SWITCH_1 D9&nbsp; // ПРЕДВАРИТЕЛЬНЫЙ ЗАМЫКАТЕЛЬ ПЕРВОЙ ЦЕПИ<br />#define PIN_SWITCH_2 D8&nbsp; // ПРЕДВАРИТЕЛЬНЫЙ ЗАМЫКАТЕЛЬ ВТОРОЙ ЦЕПИ<br />#define PIN_SWITCH_3 D7<br />#define PIN_SWITCH_4 D6<br />#define PIN_SWITCH_11 D5&nbsp; // ОСНОВНОЙ ЗАМЫКАТЕЛЬ ПЕРВОЙ ЦЕПИ<br />#define PIN_SWITCH_21 D4&nbsp; // ОСНОВНОЙ ЗАМЫКАТЕЛЬ ВТОРОЙ ЦЕПИ<br />#define PIN_SWITCH_31 D3<br />#define PIN_SWITCH_41 D2</p><br /><p>void setup() <br />{<br />&nbsp; RemoteXY_Init (); <br />&nbsp; Serial.begin(9600);<br />&nbsp; pinMode (PIN_SWITCH_1, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_2, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_3, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_4, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_11, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_21, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_31, OUTPUT);<br />&nbsp; pinMode (PIN_SWITCH_41, OUTPUT);</p><p>&nbsp; // TODO you setup code<br />&nbsp; <br />}</p><p>void loop() <br />{ <br />&nbsp; RemoteXY_Handler ();</p><p>&nbsp; previousMillis = millis();<br />&nbsp; <br />&nbsp; digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH);<br />&nbsp; digitalWrite(PIN_SWITCH_2, (RemoteXY.switch_2==0)?LOW:HIGH);<br />&nbsp; digitalWrite(PIN_SWITCH_3, (RemoteXY.switch_3==0)?LOW:HIGH);<br />&nbsp; digitalWrite(PIN_SWITCH_4, (RemoteXY.switch_4==0)?LOW:HIGH);</p><p>&nbsp; while(previousMillis + RequiredDelay &gt;= millis()) <br />&nbsp; {<br />&nbsp; }</p><p>&nbsp; Serial.print(previousMillis); Serial.print(&quot;&nbsp; &quot;),<br />&nbsp; Serial.println(millis());</p><p>&nbsp; digitalWrite(PIN_SWITCH_11, (RemoteXY.switch_1==0)?LOW:HIGH);<br />&nbsp; digitalWrite(PIN_SWITCH_21, (RemoteXY.switch_2==0)?LOW:HIGH);<br />&nbsp; digitalWrite(PIN_SWITCH_31, (RemoteXY.switch_3==0)?LOW:HIGH);<br />&nbsp; digitalWrite(PIN_SWITCH_41, (RemoteXY.switch_4==0)?LOW:HIGH);</p><p>}</p><p>===конец кода====<br />===на мониторинге порта вылетает :</p><p>Soft WDT reset</p><p>ctx: cont <br />sp: 3ffef2e0 end: 3ffef4e0 offset: 01b0</p><p>&gt;&gt;&gt;stack&gt;&gt;&gt;<br />3ffef490:&nbsp; 0000001d 3fff066c 3fff031c 3ffee4ac&nbsp; <br />3ffef4a0:&nbsp; 3fffdad0 00000000 3ffee380 40201fc8&nbsp; <br />3ffef4b0:&nbsp; feefeffe feefeffe feefeffe 3ffee4ac&nbsp; <br />3ffef4c0:&nbsp; 3fffdad0 00000000 3ffee4a4 40203710&nbsp; <br />3ffef4d0:&nbsp; feefeffe feefeffe 3ffee4c0 40100718&nbsp; <br />&lt;&lt;&lt;stack&lt;&lt;&lt;<br />?€И?)Ќю</p><p>Это происходит из-за цикла while<br />Евгений, или кто ещё из знатоков, помогите нубу))))</p>]]></description>
			<author><![CDATA[null@example.com (zelenburg)]]></author>
			<pubDate>Sun, 12 Feb 2017 17:40:32 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=333#p333</guid>
		</item>
	</channel>
</rss>
