<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[RemoteXY community — отключается Wi-Fi на esp8266]]></title>
	<link rel="self" href="https://forum.remotexy.com/extern.php?action=feed&amp;tid=1390&amp;type=atom" />
	<updated>2021-09-23T10:38:30Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.remotexy.com/viewtopic.php?id=1390</id>
		<entry>
			<title type="html"><![CDATA[Re: отключается Wi-Fi на esp8266]]></title>
			<link rel="alternate" href="https://forum.remotexy.com/viewtopic.php?pid=4267#p4267" />
			<content type="html"><![CDATA[<p>Processing ws2812 functions can take time.</p><p>If some function takes too long to perform in the </p><div class="codebox"><pre><code>void loop()</code></pre></div><p> causing a delay in-between calling the </p><div class="codebox"><pre><code>RemoteXY_Handler()</code></pre></div><p> then the connection will drop.&nbsp; </p><p>I do not know the timeout period, but experimenting with making quicker functions and/or adding extra handler calls during long functions may be needed.</p>]]></content>
			<author>
				<name><![CDATA[Gunner]]></name>
				<uri>https://forum.remotexy.com/profile.php?id=1840</uri>
			</author>
			<updated>2021-09-23T10:38:30Z</updated>
			<id>https://forum.remotexy.com/viewtopic.php?pid=4267#p4267</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[отключается Wi-Fi на esp8266]]></title>
			<link rel="alternate" href="https://forum.remotexy.com/viewtopic.php?pid=4266#p4266" />
			<content type="html"><![CDATA[<p>добрый день, хочу собрать спортивное табло использую nodemcu v2, и светодиодные матрицы на ws2812.<br />в процессе работы может произвольно отключиться Wi-Fi, устройство пропадает из сети до перезагрузки. <br />замечено что чаще это происходит сразу после ввода данных в поле ввода. контроллер принимает эти данные, но изменившиеся значения на телефон не возвращаются, соответственно wi-fi отключается где-то после приёма данных, возможно в момент отправки данных на дисплей из ws2812, либо при попытке отправить новые данные обратно на телефон. при этом программа продолжает выполняться, по прошествии нескольких минут nodemcu перезагружается.<br />можете подсказать где я не прав, и что с этим делать?</p><div class="codebox"><pre><code>#define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT 
#include &lt;ESP8266WiFi.h&gt;

#include &lt;RemoteXY.h&gt;

// настройки соединения 
#define REMOTEXY_WIFI_SSID &quot;RemoteXY&quot;
#define REMOTEXY_WIFI_PASSWORD &quot;12345678&quot;
#define REMOTEXY_SERVER_PORT 6377


// конфигурация интерфейса  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,70,0,0,0,68,0,13,24,2,
  7,37,10,4,80,10,2,19,58,8,
  2,26,2,65,2,1,28,18,42,15,
  10,31,42,11,134,26,31,31,83,84,
  65,82,84,0,83,84,79,80,0,7,
  20,10,35,20,19,4,47,20,17,2,
  26,2,7,20,63,35,20,19,36,48,
  20,16,2,26,2 };
  
// структура определяет все переменные и события вашего интерфейса управления 
struct {

    // input variables
  char name_1[65];  // =строка UTF8 оканчивающаяся нулем  
  uint8_t switch_1; // =1 если переключатель включен и =0 если отключен 
  int16_t play_1;  // 32767.. +32767 
  int16_t play_2;  // 32767.. +32767 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

// настройка табло

#include &lt;Adafruit_GFX.h&gt;
#include &lt;Adafruit_NeoMatrix.h&gt;
#include &lt;Adafruit_NeoPixel.h&gt;

#include  &lt;Fonts/TomThumb.h&gt;  

#ifndef PSTR
 #define PSTR // Make Arduino Due happy
#endif

 // назначаем пины 
#define PIN1 5               
#define PIN2 12
#define PIN3 4
#define PIN4 14

Adafruit_NeoMatrix matrix_1 = Adafruit_NeoMatrix(96, 8, PIN1, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ400); //строка названия команд
Adafruit_NeoMatrix matrix_2 = Adafruit_NeoMatrix(36, 8, PIN2, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ400); //строка таймера
Adafruit_NeoMatrix matrix_3 = Adafruit_NeoMatrix(16, 16, PIN3, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ400); //счёт1
Adafruit_NeoMatrix matrix_4 = Adafruit_NeoMatrix(16, 16, PIN4, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ400); //счёт2

const uint16_t colors[] = {
 matrix_1.Color(255, 0, 0), matrix_1.Color(255, 125, 0), matrix_1.Color(255, 255, 0), matrix_1.Color(125, 255, 0), matrix_1.Color(0, 255, 0), matrix_1.Color(0, 255, 125), matrix_1.Color(0, 255, 255), matrix_1.Color(0, 125, 255), matrix_1.Color(0, 0, 255), matrix_1.Color(125, 0, 255), matrix_1.Color(255, 0, 255), matrix_1.Color(255, 0, 125),
 matrix_2.Color(255, 0, 0), matrix_2.Color(255, 125, 0), matrix_2.Color(255, 255, 0), matrix_2.Color(125, 255, 0), matrix_2.Color(0, 255, 0), matrix_2.Color(0, 255, 125), matrix_2.Color(0, 255, 255), matrix_2.Color(0, 125, 255), matrix_2.Color(0, 0, 255), matrix_2.Color(125, 0, 255), matrix_2.Color(255, 0, 255), matrix_2.Color(255, 0, 125),
 matrix_3.Color(255, 0, 0), matrix_3.Color(255, 125, 0), matrix_3.Color(255, 255, 0), matrix_3.Color(125, 255, 0), matrix_3.Color(0, 255, 0), matrix_3.Color(0, 255, 125), matrix_3.Color(0, 255, 255), matrix_3.Color(0, 125, 255), matrix_3.Color(0, 0, 255), matrix_3.Color(125, 0, 255), matrix_3.Color(255, 0, 255), matrix_3.Color(255, 0, 125),
 matrix_4.Color(255, 0, 0), matrix_4.Color(255, 125, 0), matrix_4.Color(255, 255, 0), matrix_4.Color(125, 255, 0), matrix_4.Color(0, 255, 0), matrix_4.Color(0, 255, 125), matrix_4.Color(0, 255, 255), matrix_4.Color(0, 125, 255), matrix_4.Color(0, 0, 255), matrix_4.Color(125, 0, 255), matrix_4.Color(255, 0, 255), matrix_4.Color(255, 0, 125),
} ;

  char name1[65];  // контрольное значение строки - команды 
  int16_t play_1 = 0 ;  // 32767.. +32767 
  int16_t play_2 = 0;  // 32767.. +32767 
  int16_t PO = 3 ;             // текущий переуд
  int16_t Period = 3;     // колличество переудов
  uint32_t myTimer1 = 0;  //временная переменная таймера
  int GT = 20 ;           // время периода
  int GTs = 0 ;           // отсчёт секунд игры
  int GTm = 20;           // отсчёт минут игры
  int dim = 50;          // яркость экрана
  int col = 1;           // цвет
  

void setup() 
{
  RemoteXY_Init (); 

  // TODO you setup code
  matrix_1.begin();                  
  matrix_1.cp437(true);
  matrix_1.setTextWrap(0);
  matrix_1.setTextColor(colors[col]);
  matrix_1.show();
  matrix_2.begin();
  matrix_2.setTextWrap(0);
  matrix_2.setTextColor(colors[col]);
  matrix_2.show();
  matrix_3.begin();
  matrix_3.setTextWrap(0);
  matrix_3.setTextSize(2);
  matrix_3.setFont(&amp; TomThumb);
  matrix_3.setTextColor(colors[col]);
  matrix_3.show();
  matrix_4.begin();
  matrix_4.setTextWrap(0);
  matrix_4.setFont(&amp; TomThumb);
  matrix_4.setTextSize(2);
  matrix_4.setTextColor(colors[col]);
  matrix_4.show();
  rest();
}

void loop() 
{ 
  RemoteXY_Handler ();
  
   if (strcmp (RemoteXY.name_1, name1)!= 0) { strncpy( name1, RemoteXY.name_1,65); disp1();} //при изменении строки названия, записываем в память и отправляем на табло
   if (RemoteXY.play_1 != play_1 &amp;&amp; RemoteXY.play_1 &lt;100){  play_1 = RemoteXY.play_1; disp3();}     //при изменении счёта, записываем новый в память и  отправляем на табло
   if (RemoteXY.play_2 != play_2 &amp;&amp; RemoteXY.play_2 &lt;100){  play_2 = RemoteXY.play_2; disp4();}     //при изменении счёта, записываем новый в память и  отправляем на табло
   if (RemoteXY.switch_1 == 1 &amp;&amp; PO &gt; 0 ) { timer();}     // игра
   if (RemoteXY.switch_1 == 1 &amp;&amp; PO == 0 ) { RemoteXY.switch_1 = 0; PO = Period ; RemoteXY.play_1 = 0 ; RemoteXY.play_2 = 0 ; } // при попытке запуска нулевого периода обнуляется счёт и период, но игра не начинается
   if (RemoteXY.play_1 &gt; 1000 &amp;&amp; RemoteXY.play_1 &lt;= 1255) {dim =  RemoteXY.play_1 - 1000; dimm();}  // настройка яркости
   if (RemoteXY.play_1 &gt; 2000 &amp;&amp; RemoteXY.play_1 &lt;= 2012) {col =  RemoteXY.play_1 - 2000; dimm();}  // выбор цвета
   if (RemoteXY.switch_1 == 0 &amp;&amp; RemoteXY.play_1 &gt; 100  &amp;&amp; RemoteXY.play_1 &lt;= 109 ) {Period = RemoteXY.play_1 - 100; rest();}  // установка количества периодов
   if (RemoteXY.switch_1 == 0 &amp;&amp; RemoteXY.play_2 &gt; 100  &amp;&amp; RemoteXY.play_2 &lt;= 160 ) {GT = RemoteXY.play_2 - 100; rest();} // установка времени периода
   if (RemoteXY.switch_1 == 1 &amp;&amp; RemoteXY.play_1 &gt; 200  &amp;&amp; RemoteXY.play_1 &lt;= 109 ) {PO = RemoteXY.play_1 - 100;  disp2(); RemoteXY.play_1=play_1;}  // корректировка текущего периода
   if (RemoteXY.switch_1 == 1 &amp;&amp; RemoteXY.play_2 &gt; 200  &amp;&amp; RemoteXY.play_2 &lt;= 160 ) {GTm = RemoteXY.play_2 - 100; disp2(); RemoteXY.play_2=play_2;} // корректировка текущего времени


}
void rest(){
  play_1 = 0 ;  // обнуляем счёт
  play_2 = 0 ;  // обнуляем счёт 
  PO = Period ;       // обнуляем таймер игры 
  GTs = 0 ;           // секунды
  GTm = GT;           // минуты
  dimm();           
}

void dimm(){
  matrix_1.setTextColor(colors[col]);
  matrix_2.setTextColor(colors[col]);
  matrix_3.setTextColor(colors[col]);
  matrix_4.setTextColor(colors[col]);
disp1();
disp2();
disp3();
disp4();
RemoteXY.play_1=play_1;
RemoteXY.play_2=play_2;
}
void timer() 
{
  if (millis() - myTimer1 &gt;= 1000) {   // ищем разницу ( 1 с)   //каждую секунду обновляем переменные
      myTimer1 = millis();               // сброс таймера
      GTs--;                            // убавляем секунду
      if ( GTs &lt; 0 ){                  // по прошествии секунды вычитаем минуту
        GTs = 59;
        GTm--;                           // вычитаем игровую минуту
         if ( GTm &lt; 0 ){                 // по окончании времени периода
         GTm = GT ;                 // обнуляем время
         GTs = 0;
         PO--;                           // вычетаем период
         RemoteXY.switch_1 = 0;              // ставим игру на паузу, отправляем на телефон
        } 
      }
   disp2();
   }
}

void disp1(){
  matrix_1.setBrightness(dim);
  matrix_1.fillScreen(0);
  matrix_1.setCursor(0, 0);
  matrix_1.print(utf8rus(name1));
  matrix_1.show();
  Serial.println(&quot;disp1&quot;);
}


void disp2(){
  matrix_2.setBrightness(dim);
  matrix_2.fillScreen(0);
  matrix_2.setCursor(0, 0);
  matrix_2.print(PO);
  matrix_2.setCursor(9, 0);
  matrix_2.print(GTm/10);
  matrix_2.setCursor(14, 0);
  matrix_2.print(GTm%10);
  matrix_2.setCursor(22, 0);
  matrix_2.print(GTs/10);
  matrix_2.setCursor(27, 0);
  matrix_2.print(GTs%10);
  matrix_2.drawLine(6, 7, 6, 0, colors[col]);
  matrix_2.drawPixel(20, 2, colors[col]);
  matrix_2.drawPixel(20, 5, colors[col]);
  matrix_2.show();


}
void disp3(){
  matrix_3.setBrightness(dim);
  matrix_3.fillScreen(0);
  matrix_3.setCursor(0, 10);
  matrix_3.print(play_1);
  matrix_3.show();

}

void disp4(){
  matrix_4.setBrightness(dim);
  matrix_4.fillScreen(0);
  matrix_4.setCursor(0, 10);
  matrix_4.print(play_2);
  matrix_4.show();

}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[lenarik-86]]></name>
				<uri>https://forum.remotexy.com/profile.php?id=1940</uri>
			</author>
			<updated>2021-09-22T21:51:27Z</updated>
			<id>https://forum.remotexy.com/viewtopic.php?pid=4266#p4266</id>
		</entry>
</feed>
