<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; ESP8266+WS2811 = часы]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=245&amp;type=atom" />
	<updated>2023-03-27T18:33:19Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=245</id>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7637#p7637" />
			<content type="html"><![CDATA[<p>Приветствую форум! Подскажите пожалуйста, как изменить количество знаков и немного поправить код чтобы остались традиционные четыре цифры с двоеточием, ну и&nbsp; может еще отдельный пятый знак для температуры + и - . Сам не особо силен в программировании</p>]]></content>
			<author>
				<name><![CDATA[MACARENA]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1990</uri>
			</author>
			<updated>2023-03-27T18:33:19Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7637#p7637</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7452#p7452" />
			<content type="html"><![CDATA[<p>датчик BME280</p><p>Подключение BME280 к ESP8266:<br />3V — VIN<br />G — GND<br />D1 — SCL<br />D2 — SDA</p><p>LED&nbsp; WS2812 </p><p>ОТРИЦАТЕЛЬНУЮ&nbsp; ТЕМПЕРАТУРУ&nbsp; - ДОРАБОТАЛИ - СПАСИБО&nbsp; liman324</p><br /><br /><div class="codebox"><pre><code>#include &lt;ESP8266WiFi.h&gt; 
#include &lt;WiFiUdp.h&gt; 
#include &lt;Wire.h&gt; 
#include &lt;WiFiClient.h&gt;
#include &lt;ESP8266WebServer.h&gt;
#include &lt;Adafruit_NeoPixel.h&gt;
#include &lt;EEPROM.h&gt;
#include &lt;Adafruit_Sensor.h&gt;  // [url]https://github.com/adafruit/Adafruit_Sensor[/url]
#include &lt;Adafruit_BME280.h&gt;  // [url]https://github.com/adafruit/Adafruit_BME280_Library[/url]
#ifndef APSSID
#define APSSID &quot;ESPap&quot;         // прописываем свою точку wifi - заливаем скетч 
#define APPSK  &quot;12345678&quot;   //  ждем подключения к wifi - заходим в роутер и смотрим IP и заходим по IP
#endif
const char *ssid = APSSID;
const char *password = APPSK;
 ESP8266WebServer server(80);
 WiFiUDP ntpUDP;
 
 Adafruit_NeoPixel strip = Adafruit_NeoPixel(128, D6, NEO_GRB + NEO_KHZ800);//  трек, D6  
 NTPClient timeClient(ntpUDP, &quot;pool.ntp.org&quot;, 0,3600123);
 
 Adafruit_BME280 bme;
 String date_time,date;
 unsigned long times,times1;
 int ss,mm,hh,dd,mon,yer;
 int hear10,hear0,min10,min0,sec10,sec0;
 int hhh,ss_old;
 int brignes,utc;
 int r,g,b,cv,cv1,h1,h2,h3,h4,m1,m2,m3,m4;
 float br,br1,br2,br3,br4;
 byte len_ssid, len_pass;
 int d_start,d_end,p_start,p_end,h_start,h_end,t_start,t_end;
 int p_280,h_280,t_280;

 
 
void setup(){
  Serial.begin(9600);
  Wire.begin();
  delay(1000);timeClient.begin();
  if (!bme.begin(0x76)) {Serial.println(&quot;Could not find a valid BME280!&quot;); while (1);}
  EEPROM.begin(512);
  len_ssid = EEPROM.read(96);
  len_pass = EEPROM.read(97);
 if(len_pass &gt; 64) len_pass = 0;

  brignes = EEPROM.read(200);
  utc = EEPROM.read(201);
  cv = EEPROM.read(202);
  cv1 = EEPROM.read(203);
  h1 = EEPROM.read(204);m1 = EEPROM.read(205);br1 = EEPROM.read(206);
  h2 = EEPROM.read(207);m2 = EEPROM.read(208);br2 = EEPROM.read(209);
  h3 = EEPROM.read(210);m3 = EEPROM.read(211);br3 = EEPROM.read(212);
  h4 = EEPROM.read(213);m4 = EEPROM.read(214);br4 = EEPROM.read(215);
  d_start = EEPROM.read(216);d_end = EEPROM.read(217);
  p_start = EEPROM.read(218);p_end = EEPROM.read(219);
  h_start = EEPROM.read(220);h_end = EEPROM.read(221);
  t_start = EEPROM.read(222);t_end = EEPROM.read(223);

  if(brignes&lt;10||brignes&gt;255){brignes=10;}
  timeClient.setTimeOffset(utc*1800);
  
  //pinMode(2, OUTPUT);
  pinMode(5,INPUT_PULLUP);// D1

 /// точка доступа
  if(digitalRead(5)==LOW){
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print(&quot;AP IP address: &quot;);
  Serial.println(myIP);
  server.on(&quot;/&quot;, handleRoot);
  server.on(&quot;/ok&quot;, handleOk);
  server.begin();
  Serial.println(&quot;HTTP server started&quot;);  
  }
  else{
        // Режим STATION
      WiFi.mode( WIFI_STA);
      unsigned char* buf_ssid = new unsigned char[32];
      unsigned char* buf_pass = new unsigned char[64];
      for(byte i = 0; i &lt; len_ssid; i++) buf_ssid[i] = char(EEPROM.read(i));
      buf_ssid[len_ssid] = &#039;\x0&#039;;
      const char *ssid  = (const char*)buf_ssid;
      for(byte i = 0; i &lt; len_pass; i++) buf_pass[i] = char(EEPROM.read(i + 32));
      const char *pass  = (const char*)buf_pass;
      buf_pass[len_pass] = &#039;\x0&#039;;
      delay(2000);
      Serial.print(&quot;SSID: &quot;);
      Serial.print(ssid);
      Serial.print(&quot;   &quot;);
      Serial.print(&quot;Password: &quot;);
      Serial.println(pass);
       
     WiFi.begin(ssid, pass);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED){delay (500);Serial.print (&quot;.&quot;);}
      Serial.println();
      Serial.print(&quot;Connected to &quot;);
      Serial.println(ssid);
      Serial.print(&quot;IP address: &quot;);
      Serial.println(WiFi.localIP());
      server.on(&quot;/&quot;, web);
      server.on(&quot;/reset&quot;, web0);
      server.begin();
      Serial.println(brignes);
      Serial.println(utc);
      Serial.println(cv);
      Serial.println(cv1);
    }
  strip.begin();
}

bool minus;
void loop(){
  server.handleClient();

  if(digitalRead(5)==HIGH){
  //// Time //////////////////////////////////////////
  if(millis()-times&gt;=1000){times=millis();
   while(!timeClient.update()){timeClient.forceUpdate();}
   hh = timeClient.getHours();
   mm = timeClient.getMinutes();
   ss = timeClient.getSeconds();
  date_time = timeClient.getFormattedDate();
  int index_date = date_time.indexOf(&quot;T&quot;);
  date = date_time.substring(0, index_date);
  char charBufVar[11];date.toCharArray(charBufVar, 11);
   dd = int(charBufVar[0]-&#039;0&#039;)*10+int(charBufVar[1]-&#039;0&#039;);
   mon = int(charBufVar[3]-&#039;0&#039;)*10+int(charBufVar[4]-&#039;0&#039;);
   yer = int(charBufVar[8]-&#039;0&#039;)*10+int(charBufVar[9]-&#039;0&#039;);

   t_280 = int(bme.readTemperature()*10); 
   p_280 = int(bme.readPressure() / 100.0F * 7.5);                                      
   h_280 = int(bme.readHumidity()*10); 
  
if(t_280&lt;0){t_280 = abs(t_280);minus=1;}else{minus=0;}
  }
  Serial.print(hh/10);Serial.print(hh%10);Serial.print(&quot;:&quot;);Serial.print(mm/10);Serial.print(mm%10);Serial.print(&quot;:&quot;);Serial.print(ss/10);Serial.println(ss%10);
  Serial.println(br);
  Serial.println(int(r*br/100.00));

  
  //// ws2812 /////////////////////////////////////////

 if(ss&gt;d_start&amp;&amp;ss&lt;d_end){hear10=dd/10;hear0=dd%10;min10=mon/10;min0=mon%10;sec10=yer/10;sec0=yer%10;hhh=1;}
 else if(ss&gt;p_start&amp;&amp;ss&lt;p_end){hear10=12;hear0=p_280/1000%10;min10=p_280/100%10;min0=p_280/10%10;sec10=p_280%10;sec0=10;hhh=2;}
 else if(ss&gt;h_start&amp;&amp;ss&lt;h_end){hear10=13;hear0=17;min10=h_280/100%10;min0=h_280/10%10;sec10=h_280%10;sec0=10;hhh=2;}

  else if(ss&gt;t_start&amp;&amp;ss&lt;t_end){hear10=14;if(minus==1){hear0=16;}else{hear0=10;}min10=t_280/100%10;min0=t_280/10%10;sec10=t_280%10;sec0=14;hhh=2;}
  else{hear10=hh/10;hear0=hh%10;min10=mm/10;min0=mm%10;sec10=ss/10;sec0=ss%10;hhh=0;}



  
 switch(hear10){   
    case 0: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);ws(14,1);ws(15,1);ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,0);break;
    case 1: ws(0,0);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);ws(14,0);ws(15,0);ws(16,0);ws(17,0);ws(18,0);ws(19,0);ws(20,0);break;
    case 2: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,0);ws(7,0);ws(8,0);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);ws(14,1);ws(15,0);ws(16,0);ws(17,0);ws(18,1);ws(19,1);ws(20,1);break;
    case 3: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,0);ws(13,0);ws(14,0);ws(15,0);ws(16,0);ws(17,0);ws(18,1);ws(19,1);ws(20,1);break;
    case 4: ws(0,0);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);ws(14,0);ws(15,1);ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);break;
    case 5: ws(0,1);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,1);ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,0);ws(13,0);ws(14,0);ws(15,1);ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);break;
    case 6: ws(0,1);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,1);ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);ws(14,1);ws(15,1);ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);break;
    case 7: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);ws(14,0);ws(15,0);ws(16,0);ws(17,0);ws(18,0);ws(19,0);ws(20,0);break;
    case 8: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);ws(14,1);ws(15,1);ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);break;
    case 9: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,0);ws(13,0);ws(14,0);ws(15,1);ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);break;
   case 10: ws(0,0);ws(1,0);ws(2,0);ws(3,0);ws(4,0);ws(5,0);ws(6,0);ws(7,0);ws(8,0);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);ws(14,0);ws(15,0);ws(16,0);ws(17,0);ws(18,0);ws(19,0);ws(20,0);break;// &quot; &quot;
   case 11: ws(0,0);ws(1,0);ws(2,0);ws(3,0);ws(4,0);ws(5,0);ws(6,0);ws(7,0);ws(8,0);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);ws(14,1);ws(15,1);ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);break;// &quot;t&quot;
   case 12: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,0);ws(7,0);ws(8,0);ws(9,0);ws(10,0);ws(11,0);ws(12,1);ws(13,1);ws(14,1);ws(15,1);ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);break;// &quot;P&quot;
   case 13: ws(0,0);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);ws(14,1);ws(15,0);ws(16,0);ws(17,0);ws(18,1);ws(19,1);ws(20,1);break;// &quot;H&quot;
   case 14: ws(0,1);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);ws(7,0);ws(8,0);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);ws(14,1);ws(15,1);ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,0);break;// &quot;C&quot;
   case 15: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,0);ws(7,0);ws(8,0);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);ws(14,0);ws(15,1);ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);break;// градус
 }

    
   switch(hear0){   
    case 0: ws(21,1);ws(22,1);ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);ws(30,1);ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);ws(38,1);ws(39,0);ws(40,0);ws(41,0);break;
    case 1: ws(21,0);ws(22,0);ws(23,0);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);ws(30,0);ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);ws(38,0);ws(39,0);ws(40,0);ws(41,0);break;
    case 2: ws(21,1);ws(22,1);ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,0);ws(29,0);ws(30,1);ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,0);ws(37,0);ws(38,0);ws(39,1);ws(40,1);ws(41,1);break;
    case 3: ws(21,1);ws(22,1);ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);ws(30,1);ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);ws(38,0);ws(39,1);ws(40,1);ws(41,1);break;
    case 4: ws(21,0);ws(22,0);ws(23,0);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);ws(30,0);ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;
    case 5: ws(21,1);ws(22,1);ws(23,1);ws(24,0);ws(25,0);ws(26,0);ws(27,1);ws(28,1);ws(29,1);ws(30,1);ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,0);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;
    case 6: ws(21,1);ws(22,1);ws(23,1);ws(24,0);ws(25,0);ws(26,0);ws(27,1);ws(28,1);ws(29,1);ws(30,1);ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;
    case 7: ws(21,1);ws(22,1);ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);ws(30,0);ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);ws(38,0);ws(39,0);ws(40,0);ws(41,0);break;
    case 8: ws(21,1);ws(22,1);ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);ws(30,1);ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;
    case 9: ws(21,1);ws(22,1);ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);ws(30,1);ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,0);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;
   case 10: ws(21,0);ws(22,0);ws(23,0);ws(24,0);ws(25,0);ws(26,0);ws(27,0);ws(28,0);ws(29,0);ws(30,0);ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);ws(38,0);ws(39,0);ws(40,0);ws(41,0);break;// &quot; &quot;
   case 11: ws(21,0);ws(22,0);ws(23,0);ws(24,0);ws(25,0);ws(26,0);ws(27,0);ws(28,0);ws(29,0);ws(30,1);ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;// &quot;t&quot;
   case 12: ws(21,1);ws(22,1);ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,0);ws(29,0);ws(30,0);ws(31,0);ws(32,0);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;// &quot;P&quot;
   case 13: ws(21,0);ws(22,0);ws(23,0);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);ws(30,0);ws(31,0);ws(32,0);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;// &quot;H&quot;
   case 14: ws(21,1);ws(22,1);ws(23,1);ws(24,0);ws(25,0);ws(26,0);ws(27,0);ws(28,0);ws(29,0);ws(30,1);ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;// &quot;C&quot;
   case 15: ws(21,1);ws(22,1);ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,0);ws(29,0);ws(30,0);ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;// градус
   case 16: ws(21,0);ws(22,0);ws(23,0);ws(24,0);ws(25,0);ws(26,0);ws(27,0);ws(28,0);ws(29,0);ws(30,0);ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);ws(38,0);ws(39,1);ws(40,1);ws(41,1);break;//  минус
   case 17: ws(21,1);ws(22,1);ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,0);ws(29,0);ws(30,0);ws(31,0);ws(32,0);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);ws(38,1);ws(39,1);ws(40,1);ws(41,1);break;// &quot;%&quot;
    
    }
 
/// двоеточие и запятая
   if(hhh==0){
   if(ss!=ss_old){times1=millis();}  
   if(millis()-times1&lt;500){ws1(42,1);ws1(43,1);ws1(86,1); digitalWrite(2, HIGH);}
                      else{ws1(42,0);ws1(43,0);ws1(86,0); digitalWrite(2, LOW);}
   ss_old=ss;}
 
   if(hhh==1){ws1(42,1);ws1(86,1); digitalWrite(2, LOW);}

    switch(min10){   
    case 0: ws(44,1);ws(45,1);ws(46,1);ws(47,1);ws(48,1);ws(49,1);ws(50,1);ws(51,1);ws(52,1);ws(53,1);ws(54,1);ws(55,1);ws(56,1);ws(57,1);ws(58,1);ws(59,1);ws(60,1);ws(61,1);ws(62,0);ws(63,0);ws(64,0);break;
    case 1: ws(44,0);ws(45,0);ws(46,0);ws(47,1);ws(48,1);ws(49,1);ws(50,1);ws(51,1);ws(52,1);ws(53,0);ws(54,0);ws(55,0);ws(56,0);ws(57,0);ws(58,0);ws(59,0);ws(60,0);ws(61,0);ws(62,0);ws(63,0);ws(64,0);break;
    case 2: ws(44,1);ws(45,1);ws(46,1);ws(47,1);ws(48,1);ws(49,1);ws(50,0);ws(51,0);ws(52,0);ws(53,1);ws(54,1);ws(55,1);ws(56,1);ws(57,1);ws(58,1);ws(59,0);ws(60,0);ws(61,0);ws(62,1);ws(63,1);ws(64,1);break;
    case 3: ws(44,1);ws(45,1);ws(46,1);ws(47,1);ws(48,1);ws(49,1);ws(50,1);ws(51,1);ws(52,1);ws(53,1);ws(54,1);ws(55,1);ws(56,0);ws(57,0);ws(58,0);ws(59,0);ws(60,0);ws(61,0);ws(62,1);ws(63,1);ws(64,1);break;
    case 4: ws(44,0);ws(45,0);ws(46,0);ws(47,1);ws(48,1);ws(49,1);ws(50,1);ws(51,1);ws(52,1);ws(53,0);ws(54,0);ws(55,0);ws(56,0);ws(57,0);ws(58,0);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;
    case 5: ws(44,1);ws(45,1);ws(46,1);ws(47,0);ws(48,0);ws(49,0);ws(50,1);ws(51,1);ws(52,1);ws(53,1);ws(54,1);ws(55,1);ws(56,0);ws(57,0);ws(58,0);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;
    case 6: ws(44,1);ws(45,1);ws(46,1);ws(47,0);ws(48,0);ws(49,0);ws(50,1);ws(51,1);ws(52,1);ws(53,1);ws(54,1);ws(55,1);ws(56,1);ws(57,1);ws(58,1);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;
    case 7: ws(44,1);ws(45,1);ws(46,1);ws(47,1);ws(48,1);ws(49,1);ws(50,1);ws(51,1);ws(52,1);ws(53,0);ws(54,0);ws(55,0);ws(56,0);ws(57,0);ws(58,0);ws(59,0);ws(60,0);ws(61,0);ws(62,0);ws(63,0);ws(64,0);break;
    case 8: ws(44,1);ws(45,1);ws(46,1);ws(47,1);ws(48,1);ws(49,1);ws(50,1);ws(51,1);ws(52,1);ws(53,1);ws(54,1);ws(55,1);ws(56,1);ws(57,1);ws(58,1);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;
    case 9: ws(44,1);ws(45,1);ws(46,1);ws(47,1);ws(48,1);ws(49,1);ws(50,1);ws(51,1);ws(52,1);ws(53,1);ws(54,1);ws(55,1);ws(56,0);ws(57,0);ws(58,0);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;
   case 10: ws(44,0);ws(45,0);ws(46,0);ws(47,0);ws(48,0);ws(49,0);ws(50,0);ws(51,0);ws(52,0);ws(53,0);ws(54,0);ws(55,0);ws(56,0);ws(57,0);ws(58,0);ws(59,0);ws(60,0);ws(61,0);ws(62,0);ws(63,0);ws(64,0);break;// &quot; &quot;
   case 11: ws(44,0);ws(45,0);ws(46,0);ws(47,0);ws(48,0);ws(49,0);ws(50,0);ws(51,0);ws(52,0);ws(53,1);ws(54,1);ws(55,1);ws(56,1);ws(57,1);ws(58,1);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;// &quot;t&quot;
   case 12: ws(44,1);ws(45,1);ws(46,1);ws(47,1);ws(48,1);ws(49,1);ws(50,0);ws(51,0);ws(52,0);ws(53,0);ws(54,0);ws(55,0);ws(56,1);ws(57,1);ws(58,1);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;// &quot;P&quot;
   case 13: ws(44,0);ws(45,0);ws(46,0);ws(47,1);ws(48,1);ws(49,1);ws(50,1);ws(51,1);ws(52,1);ws(53,0);ws(54,0);ws(55,0);ws(56,1);ws(57,1);ws(58,1);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;// &quot;H&quot;
   case 14: ws(44,1);ws(45,1);ws(46,1);ws(47,0);ws(48,0);ws(49,0);ws(50,0);ws(51,0);ws(52,0);ws(53,1);ws(54,1);ws(55,1);ws(56,1);ws(57,1);ws(58,1);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;// &quot;C&quot;
   case 15: ws(44,1);ws(45,1);ws(46,1);ws(47,1);ws(48,1);ws(49,1);ws(50,0);ws(51,0);ws(52,0);ws(53,0);ws(54,0);ws(55,0);ws(56,0);ws(57,0);ws(58,0);ws(59,1);ws(60,1);ws(61,1);ws(62,1);ws(63,1);ws(64,1);break;// градус
    }

    
   switch(min0){   
    case 0: ws(65,1);ws(66,1);ws(67,1);ws(68,1);ws(69,1);ws(70,1);ws(71,1);ws(72,1);ws(73,1);ws(74,1);ws(75,1);ws(76,1);ws(77,1);ws(78,1);ws(79,1);ws(80,1);ws(81,1);ws(82,1);ws(83,0);ws(84,0);ws(85,0);break;
    case 1: ws(65,0);ws(66,0);ws(67,0);ws(68,1);ws(69,1);ws(70,1);ws(71,1);ws(72,1);ws(73,1);ws(74,0);ws(75,0);ws(76,0);ws(77,0);ws(78,0);ws(79,0);ws(80,0);ws(81,0);ws(82,0);ws(83,0);ws(84,0);ws(85,0);break;
    case 2: ws(65,1);ws(66,1);ws(67,1);ws(68,1);ws(69,1);ws(70,1);ws(71,0);ws(72,0);ws(73,0);ws(74,1);ws(75,1);ws(76,1);ws(77,1);ws(78,1);ws(79,1);ws(80,0);ws(81,0);ws(82,0);ws(83,1);ws(84,1);ws(85,1);break;
    case 3: ws(65,1);ws(66,1);ws(67,1);ws(68,1);ws(69,1);ws(70,1);ws(71,1);ws(72,1);ws(73,1);ws(74,1);ws(75,1);ws(76,1);ws(77,0);ws(78,0);ws(79,0);ws(80,0);ws(81,0);ws(82,0);ws(83,1);ws(84,1);ws(85,1);break;
    case 4: ws(65,0);ws(66,0);ws(67,0);ws(68,1);ws(69,1);ws(70,1);ws(71,1);ws(72,1);ws(73,1);ws(74,0);ws(75,0);ws(76,0);ws(77,0);ws(78,0);ws(79,0);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;
    case 5: ws(65,1);ws(66,1);ws(67,1);ws(68,0);ws(69,0);ws(70,0);ws(71,1);ws(72,1);ws(73,1);ws(74,1);ws(75,1);ws(76,1);ws(77,0);ws(78,0);ws(79,0);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;
    case 6: ws(65,1);ws(66,1);ws(67,1);ws(68,0);ws(69,0);ws(70,0);ws(71,1);ws(72,1);ws(73,1);ws(74,1);ws(75,1);ws(76,1);ws(77,1);ws(78,1);ws(79,1);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;
    case 7: ws(65,1);ws(66,1);ws(67,1);ws(68,1);ws(69,1);ws(70,1);ws(71,1);ws(72,1);ws(73,1);ws(74,0);ws(75,0);ws(76,0);ws(77,0);ws(78,0);ws(79,0);ws(80,0);ws(81,0);ws(82,0);ws(83,0);ws(84,0);ws(85,0);break;
    case 8: ws(65,1);ws(66,1);ws(67,1);ws(68,1);ws(69,1);ws(70,1);ws(71,1);ws(72,1);ws(73,1);ws(74,1);ws(75,1);ws(76,1);ws(77,1);ws(78,1);ws(79,1);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;
    case 9: ws(65,1);ws(66,1);ws(67,1);ws(68,1);ws(69,1);ws(70,1);ws(71,1);ws(72,1);ws(73,1);ws(74,1);ws(75,1);ws(76,1);ws(77,0);ws(78,0);ws(79,0);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;
   case 10: ws(65,0);ws(66,0);ws(67,0);ws(68,0);ws(69,0);ws(70,0);ws(71,0);ws(72,0);ws(73,0);ws(74,0);ws(75,0);ws(76,0);ws(77,0);ws(78,0);ws(79,0);ws(80,0);ws(81,0);ws(82,0);ws(83,0);ws(84,0);ws(85,0);break;// &quot; &quot;
   case 11: ws(65,0);ws(66,0);ws(67,0);ws(68,0);ws(69,0);ws(70,0);ws(71,0);ws(72,0);ws(73,0);ws(74,1);ws(75,1);ws(76,1);ws(77,1);ws(78,1);ws(79,1);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;// &quot;t&quot;
   case 12: ws(65,1);ws(66,1);ws(67,1);ws(68,1);ws(69,1);ws(70,1);ws(71,0);ws(72,0);ws(73,0);ws(74,0);ws(75,0);ws(76,0);ws(77,1);ws(78,1);ws(79,1);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;// &quot;P&quot;
   case 13: ws(65,0);ws(66,0);ws(67,0);ws(68,1);ws(69,1);ws(70,1);ws(71,1);ws(72,1);ws(73,1);ws(74,0);ws(75,0);ws(76,0);ws(77,1);ws(78,1);ws(79,1);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;// &quot;H&quot;
   case 14: ws(65,1);ws(66,1);ws(67,1);ws(68,0);ws(69,0);ws(70,0);ws(71,0);ws(72,0);ws(73,0);ws(74,1);ws(75,1);ws(76,1);ws(77,1);ws(78,1);ws(79,1);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;// &quot;C&quot;
   case 15: ws(65,1);ws(66,1);ws(67,1);ws(68,1);ws(69,1);ws(70,1);ws(71,0);ws(72,0);ws(73,0);ws(74,0);ws(75,0);ws(76,0);ws(77,0);ws(78,0);ws(79,0);ws(80,1);ws(81,1);ws(82,1);ws(83,1);ws(84,1);ws(85,1);break;// градус
    }

 
 
   switch(sec10){   
    case 0: ws(87,1);ws(88,1);ws(89,1);ws(90,1);ws(91,1);ws(92,1);ws(93,1);ws(94,1);ws(95,1);ws(96,1);ws(97,1);ws(98,1);ws(99,1);ws(100,1);ws(101,1);ws(102,1);ws(103,1);ws(104,1);ws(105,0);ws(106,0);ws(107,0);break;
    case 1: ws(87,0);ws(88,0);ws(89,0);ws(90,1);ws(91,1);ws(92,1);ws(93,1);ws(94,1);ws(95,1);ws(96,0);ws(97,0);ws(98,0);ws(99,0);ws(100,0);ws(101,0);ws(102,0);ws(103,0);ws(104,0);ws(105,0);ws(106,0);ws(107,0);break;
    case 2: ws(87,1);ws(88,1);ws(89,1);ws(90,1);ws(91,1);ws(92,1);ws(93,0);ws(94,0);ws(95,0);ws(96,1);ws(97,1);ws(98,1);ws(99,1);ws(100,1);ws(101,1);ws(102,0);ws(103,0);ws(104,0);ws(105,1);ws(106,1);ws(107,1);break;
    case 3: ws(87,1);ws(88,1);ws(89,1);ws(90,1);ws(91,1);ws(92,1);ws(93,1);ws(94,1);ws(95,1);ws(96,1);ws(97,1);ws(98,1);ws(99,0);ws(100,0);ws(101,0);ws(102,0);ws(103,0);ws(104,0);ws(105,1);ws(106,1);ws(107,1);break;
    case 4: ws(87,0);ws(88,0);ws(89,0);ws(90,1);ws(91,1);ws(92,1);ws(93,1);ws(94,1);ws(95,1);ws(96,0);ws(97,0);ws(98,0);ws(99,0);ws(100,0);ws(101,0);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;
    case 5: ws(87,1);ws(88,1);ws(89,1);ws(90,0);ws(91,0);ws(92,0);ws(93,1);ws(94,1);ws(95,1);ws(96,1);ws(97,1);ws(98,1);ws(99,0);ws(100,0);ws(101,0);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;
    case 6: ws(87,1);ws(88,1);ws(89,1);ws(90,0);ws(91,0);ws(92,0);ws(93,1);ws(94,1);ws(95,1);ws(96,1);ws(97,1);ws(98,1);ws(99,1);ws(100,1);ws(101,1);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;
    case 7: ws(87,1);ws(88,1);ws(89,1);ws(90,1);ws(91,1);ws(92,1);ws(93,1);ws(94,1);ws(95,1);ws(96,0);ws(97,0);ws(98,0);ws(99,0);ws(100,0);ws(101,0);ws(102,0);ws(103,0);ws(104,0);ws(105,0);ws(106,0);ws(107,0);break;
    case 8: ws(87,1);ws(88,1);ws(89,1);ws(90,1);ws(91,1);ws(92,1);ws(93,1);ws(94,1);ws(95,1);ws(96,1);ws(97,1);ws(98,1);ws(99,1);ws(100,1);ws(101,1);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;
    case 9: ws(87,1);ws(88,1);ws(89,1);ws(90,1);ws(91,1);ws(92,1);ws(93,1);ws(94,1);ws(95,1);ws(96,1);ws(97,1);ws(98,1);ws(99,0);ws(100,0);ws(101,0);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;
   case 10: ws(87,0);ws(88,0);ws(89,0);ws(90,0);ws(91,0);ws(92,0);ws(93,0);ws(94,0);ws(95,0);ws(96,0);ws(97,0);ws(98,0);ws(99,0);ws(100,0);ws(101,0);ws(102,0);ws(103,0);ws(104,0);ws(105,0);ws(106,0);ws(107,0);break;// &quot; &quot;
   case 11: ws(87,0);ws(88,0);ws(89,0);ws(90,0);ws(91,0);ws(92,0);ws(93,0);ws(94,0);ws(95,0);ws(96,1);ws(97,1);ws(98,1);ws(99,1);ws(100,1);ws(101,1);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;// &quot;t&quot;
   case 12: ws(87,1);ws(88,1);ws(89,1);ws(90,1);ws(91,1);ws(92,1);ws(93,0);ws(94,0);ws(95,0);ws(96,0);ws(97,0);ws(98,0);ws(99,1);ws(100,1);ws(101,1);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;// &quot;P&quot;
   case 13: ws(87,0);ws(88,0);ws(89,0);ws(90,1);ws(91,1);ws(92,1);ws(93,1);ws(94,1);ws(95,1);ws(96,0);ws(97,0);ws(98,0);ws(99,1);ws(100,1);ws(101,1);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;// &quot;H&quot;
   case 14: ws(87,1);ws(88,1);ws(89,1);ws(90,0);ws(91,0);ws(92,0);ws(93,0);ws(94,0);ws(95,0);ws(96,1);ws(97,1);ws(98,1);ws(99,1);ws(100,1);ws(101,1);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;// &quot;C&quot;
   case 15: ws(87,1);ws(88,1);ws(89,1);ws(90,1);ws(91,1);ws(92,1);ws(93,0);ws(94,0);ws(95,0);ws(96,0);ws(97,0);ws(98,0);ws(99,0);ws(100,0);ws(101,0);ws(102,1);ws(103,1);ws(104,1);ws(105,1);ws(106,1);ws(107,1);break;// градус
    }


   switch(sec0){   
    case 0: ws(108,1);ws(109,1);ws(110,1);ws(111,1);ws(112,1);ws(113,1);ws(114,1);ws(115,1);ws(116,1);ws(117,1);ws(118,1);ws(119,1);ws(120,1);ws(121,1);ws(122,1);ws(123,1);ws(124,1);ws(125,1);ws(126,0);ws(127,0);ws(128,0);break;
    case 1: ws(108,0);ws(109,0);ws(110,0);ws(111,1);ws(112,1);ws(113,1);ws(114,1);ws(115,1);ws(116,1);ws(117,0);ws(118,0);ws(119,0);ws(120,0);ws(121,0);ws(122,0);ws(123,0);ws(124,0);ws(125,0);ws(126,0);ws(127,0);ws(128,0);break;
    case 2: ws(108,1);ws(109,1);ws(110,1);ws(111,1);ws(112,1);ws(113,1);ws(114,0);ws(115,0);ws(116,0);ws(117,1);ws(118,1);ws(119,1);ws(120,1);ws(121,1);ws(122,1);ws(123,0);ws(124,0);ws(125,0);ws(126,1);ws(127,1);ws(128,1);break;
    case 3: ws(108,1);ws(109,1);ws(110,1);ws(111,1);ws(112,1);ws(113,1);ws(114,1);ws(115,1);ws(116,1);ws(117,1);ws(118,1);ws(119,1);ws(120,0);ws(121,0);ws(122,0);ws(123,0);ws(124,0);ws(125,0);ws(126,1);ws(127,1);ws(128,1);break;
    case 4: ws(108,0);ws(109,0);ws(110,0);ws(111,1);ws(112,1);ws(113,1);ws(114,1);ws(115,1);ws(116,1);ws(117,0);ws(118,0);ws(119,0);ws(120,0);ws(121,0);ws(122,0);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;
    case 5: ws(108,1);ws(109,1);ws(110,1);ws(111,0);ws(112,0);ws(113,0);ws(114,1);ws(115,1);ws(116,1);ws(117,1);ws(118,1);ws(119,1);ws(120,0);ws(121,0);ws(122,0);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;
    case 6: ws(108,1);ws(109,1);ws(110,1);ws(111,0);ws(112,0);ws(113,0);ws(114,1);ws(115,1);ws(116,1);ws(117,1);ws(118,1);ws(119,1);ws(120,1);ws(121,1);ws(122,1);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;
    case 7: ws(108,1);ws(109,1);ws(110,1);ws(111,1);ws(112,1);ws(113,1);ws(114,1);ws(115,1);ws(116,1);ws(117,0);ws(118,0);ws(119,0);ws(120,0);ws(121,0);ws(122,0);ws(123,0);ws(124,0);ws(125,0);ws(126,0);ws(127,0);ws(128,0);break;
    case 8: ws(108,1);ws(109,1);ws(110,1);ws(111,1);ws(112,1);ws(113,1);ws(114,1);ws(115,1);ws(116,1);ws(117,1);ws(118,1);ws(119,1);ws(120,1);ws(121,1);ws(122,1);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;
    case 9: ws(108,1);ws(109,1);ws(110,1);ws(111,1);ws(112,1);ws(113,1);ws(114,1);ws(115,1);ws(116,1);ws(117,1);ws(118,1);ws(119,1);ws(120,0);ws(121,0);ws(122,0);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;
   case 10: ws(108,0);ws(109,0);ws(110,0);ws(111,0);ws(112,0);ws(113,0);ws(114,0);ws(115,0);ws(116,0);ws(117,0);ws(118,0);ws(119,0);ws(120,0);ws(121,0);ws(122,0);ws(123,0);ws(124,0);ws(125,0);ws(126,0);ws(127,0);ws(128,0);break;// &quot; &quot;
   case 11: ws(108,0);ws(109,0);ws(110,0);ws(111,0);ws(112,0);ws(113,0);ws(114,0);ws(115,0);ws(116,0);ws(117,1);ws(118,1);ws(119,1);ws(120,1);ws(121,1);ws(122,1);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;// &quot;t&quot;
   case 12: ws(108,1);ws(109,1);ws(110,1);ws(111,1);ws(112,1);ws(113,1);ws(114,0);ws(115,0);ws(116,0);ws(117,0);ws(118,0);ws(119,0);ws(120,1);ws(121,1);ws(122,1);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;// &quot;P&quot;
   case 13: ws(108,0);ws(109,0);ws(110,0);ws(111,1);ws(112,1);ws(113,1);ws(114,1);ws(115,1);ws(116,1);ws(117,0);ws(118,0);ws(119,0);ws(120,1);ws(121,1);ws(122,1);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;// &quot;H&quot;
   case 14: ws(108,1);ws(109,1);ws(110,1);ws(111,0);ws(112,0);ws(113,0);ws(114,0);ws(115,0);ws(116,0);ws(117,1);ws(118,1);ws(119,1);ws(120,1);ws(121,1);ws(122,1);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;// &quot;C&quot;
   case 15: ws(108,1);ws(109,1);ws(110,1);ws(111,1);ws(112,1);ws(113,1);ws(114,0);ws(115,0);ws(116,0);ws(117,0);ws(118,0);ws(119,0);ws(120,0);ws(121,0);ws(122,0);ws(123,1);ws(124,1);ws(125,1);ws(126,1);ws(127,1);ws(128,1);break;// градус
    }
  strip.show();
  }
  delay(100);
  }

void ws(int ind, bool datt){
  if(cv==2){r=brignes;g=0;b=0;}
  if(cv==3){r=0;g=brignes;b=0;}
  if(cv==4){r=0;g=0;b=brignes;}

  if(hh*100+mm&gt;=h1*100+m1&amp;&amp;hh*100+mm&lt;h2*100+m2){br=br1;}
  if(hh*100+mm&gt;=h2*100+m2&amp;&amp;hh*100+mm&lt;h3*100+m3){br=br2;}
  if(hh*100+mm&gt;=h3*100+m3&amp;&amp;hh*100+mm&lt;h4*100+m4){br=br3;}
  if(hh*100+mm&gt;=h4*100+m4 &amp;&amp; hh*100+mm&lt;2359){br=br4;}
  if(hh*100+mm&lt;h1*100+m1 &amp;&amp; hh*100+mm&gt;0){br=br4;}
  
  if(cv==0||cv==1){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(int(r*br/100.00), int(g*br/100.00), int(b*br/100.00)));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }
void ws1(int ind, bool datt){
  if(cv1==2){r=brignes;g=0;b=0;}
  if(cv1==3){r=0;g=brignes;b=0;}
  if(cv1==4){r=0;g=0;b=brignes;}
  if(cv1==0||cv1==1){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(int(r*br/100.00), int(g*br/100.00), int(b*br/100.00)));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }  

void web(){ 
   String webPage = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=700, user-scalable=no&#039; /&gt;&quot;;
   //style
          webPage += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          webPage += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          webPage += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          webPage += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          webPage += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
    /////////////   
          webPage += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;700&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;3&#039;&gt;&quot;;
          webPage +=&quot;&lt;td colspan=&#039;2&#039;&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Страница настройки Интернет часов&lt;/h1&gt;&quot;;
          webPage +=&quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;big&gt;Текущее время: &quot;;
          webPage += hh/10;webPage += hh%10; webPage +=&quot;:&quot;;webPage +=mm/10;
          webPage += mm%10; webPage +=&quot;:&quot;;webPage +=ss/10;webPage += ss%10;
          webPage += &quot;&lt;/center&gt;&quot;;
          webPage += &quot;&lt;form method=&#039;POST&#039; action=&#039;reset&#039; &gt;&quot;;
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;brignes&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Яркость 10...255 &quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += brignes;
          webPage += &quot;&lt;td&gt;&lt;input name=&#039;time_utc&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Временной сдвиг UTC (30 мин)&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += utc;
          webPage += &quot; (&quot;;webPage += utc*0.5;webPage += &quot; ч.)&quot;;
          
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;cv&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет цифр 1...4&quot;;
          webPage += &quot;&lt;br&gt;1 - белый, 2 - красный, 3 - синий, 4 - зеленый&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += cv;

          webPage += &quot;&lt;td&gt;&lt;input name=&#039;cv1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет двоеточия и запятой 1...4&quot;;
          webPage += &quot;&lt;br&gt;1 - белый, 2 - красный, 3 - синий, 4 - зеленый&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += cv1;
////////////////////////////////
          webPage += &quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;b&gt;Показания датчиков и даты (повтор каждую минуту)&lt;/b&gt;&lt;tr&gt;&lt;td&gt;&quot;;
          webPage += &quot;Дата с &lt;input name=&#039;d_start&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; по &lt;input name=&#039;d_end&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; секунду&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: c &quot;;webPage += d_start;webPage +=&quot; по &quot;;webPage += d_end;webPage += &quot; сек&quot;;
          if(d_start&lt;d_end){webPage += &quot; | Активно &lt;/small&gt;&quot;;}else{webPage += &quot; | Не активно &lt;/small&gt;&quot;;}
          webPage += &quot;&lt;br&gt;Давление с &lt;input name=&#039;p_start&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; по &lt;input name=&#039;p_end&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; секунду&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: c &quot;;webPage += p_start;webPage +=&quot; по &quot;;webPage += p_end;webPage += &quot; сек&quot;;
          if(p_start&lt;p_end){webPage += &quot; | Активно &lt;/small&gt;&quot;;}else{webPage += &quot; | Не активно &lt;/small&gt;&quot;;}
          webPage += &quot;&lt;td&gt;&quot;;
          webPage += &quot;Влажность с &lt;input name=&#039;h_start&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; по &lt;input name=&#039;h_end&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; секунду&quot;;          
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: c &quot;;webPage += h_start;webPage +=&quot; по &quot;;webPage += h_end;webPage += &quot; сек&quot;;
          if(h_start&lt;h_end){webPage += &quot; | Активно &lt;/small&gt;&quot;;}else{webPage += &quot; | Не активно &lt;/small&gt;&quot;;}
          webPage += &quot;&lt;br&gt;Температура с &lt;input name=&#039;t_start&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; по &lt;input name=&#039;t_end&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; секунду&quot;;         
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: c &quot;;webPage += t_start;webPage +=&quot; по &quot;;webPage += t_end;webPage += &quot; сек&quot;;
          if(t_start&lt;t_end){webPage += &quot; | Активно &lt;/small&gt;&quot;;}else{webPage += &quot; | Не активно &lt;/small&gt;&quot;;}
////////////////////////////////
          webPage += &quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;b&gt;Регулировка яркости по времени&lt;/b&gt;&lt;br&gt;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h1&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h1/10;webPage += h1%10;webPage += &quot;:&quot;;
          webPage += m1/10;webPage += m1%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br1);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;;

          webPage += &quot;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h2&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m2&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br2&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h2/10;webPage += h2%10;webPage += &quot;:&quot;;
          webPage += m2/10;webPage += m2%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br2);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;;

          webPage += &quot;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h3&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m3&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br3&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;; 
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h3/10;webPage += h3%10;webPage += &quot;:&quot;;
          webPage += m3/10;webPage += m3%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br3);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;; 

          webPage += &quot;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h4&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m4&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br4&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;;   
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h4/10;webPage += h4%10;webPage += &quot;:&quot;;
          webPage += m4/10;webPage += m4%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br4);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;;    

          webPage +=&quot;&lt;br&gt;&lt;br&gt;&lt;small&gt;При установке времени соблюдайте временную последовательность, первая уставка начало суток, четвертая конец суток. Если необходимо установить яркость 20 % с 22:00 до 6:00, то установите первую уставку на 6:00, яркость 20%, четвертую на 22:00, яркость 20 %.&lt;/small&gt;&quot;;                       
          webPage +=&quot;&lt;br&gt;&lt;small&gt;Не используйте 00:00 как начало суток, время не будет сохранено в память!!!&lt;small&gt;&quot;;
////////////////////////////////          
 
          webPage += &quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;br&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          webPage += &quot;&lt;/form&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;br&gt;Заполните все ячейки формы, незаполненная ячейка формы не изменит ранее установленный параметр&quot;;
   server.send(200, &quot;text/html&quot;, webPage);//sumbit();
}

void sumbit(){ 
    if (server.args() &gt; 0 ) {
    for ( uint8_t i = 0; i &lt; server.args(); i++ ) {
      if (server.argName(i) == &quot;brignes&quot;){brignes = server.arg(i).toInt();}
      if (server.argName(i) == &quot;time_utc&quot;){utc = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv&quot;){cv = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv1&quot;){cv1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h1&quot;){h1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m1&quot;){m1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br1&quot;){br1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h2&quot;){h2 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m2&quot;){m2 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br2&quot;){br2 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h3&quot;){h3 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m3&quot;){m3 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br3&quot;){br3 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h4&quot;){h4 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m4&quot;){m4 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br4&quot;){br4 = server.arg(i).toInt();}

      if (server.argName(i) == &quot;d_start&quot;){d_start = server.arg(i).toInt();}
      if (server.argName(i) == &quot;d_end&quot;){d_end = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h_start&quot;){h_start = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h_end&quot;){h_end = server.arg(i).toInt();}
      if (server.argName(i) == &quot;p_start&quot;){p_start = server.arg(i).toInt();}
      if (server.argName(i) == &quot;p_end&quot;){p_end = server.arg(i).toInt();}
      if (server.argName(i) == &quot;t_start&quot;){t_start = server.arg(i).toInt();}
      if (server.argName(i) == &quot;t_end&quot;){t_end = server.arg(i).toInt();}
      }
      Serial.println(&quot;Save&quot;);
      Serial.println(brignes);Serial.println(utc);Serial.println(cv);Serial.println(cv1);
      EEPROM.begin(512);
      if(brignes==NULL){}else{EEPROM.write(200,brignes);}
      if(utc==NULL){}else{EEPROM.write(201,utc);}
      if(cv==NULL){}else{EEPROM.write(202,cv);}
      if(cv1==NULL){}else{EEPROM.write(203,cv1);}

      if(h1*100+m1==NULL){}else{EEPROM.write(204,h1);EEPROM.write(205,m1);}
      if(br1==NULL){}else{EEPROM.write(206,br1);}
      if(h2*100+m2==NULL){}else{EEPROM.write(207,h2);EEPROM.write(208,m2);}
      if(br2==NULL){}else{EEPROM.write(209,br2);}
      if(h3*100+m3==NULL){}else{EEPROM.write(210,h3);EEPROM.write(211,m3);}
      if(br3==NULL){}else{EEPROM.write(212,br3);}
      if(h4*100+m4==NULL){}else{EEPROM.write(213,h4);EEPROM.write(214,m4);}
      if(br4==NULL){}else{EEPROM.write(215,br4);}

      if(d_start==NULL){}else{EEPROM.write(216,d_start);}
      if(d_end==NULL){}else{EEPROM.write(217,d_end);}
      if(p_start==NULL){}else{EEPROM.write(218,p_start);}
      if(p_end==NULL){}else{EEPROM.write(219,p_end);}
      
      if(h_start==NULL){}else{EEPROM.write(220,h_start);}
      if(h_end==NULL){}else{EEPROM.write(221,h_end);}
      if(t_start==NULL){}else{EEPROM.write(222,t_start);}
      if(t_end==NULL){}else{EEPROM.write(223,t_end);}
      EEPROM.commit();
      delay(1000);ESP.restart();
      }}

void handleRoot() { 
   String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
   //style
          str += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          str += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          str += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          str += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          str += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
   ////////////       
          str += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;470&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;10&#039;&gt;&quot;;
          str +=&quot;&lt;td&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Авторизация&lt;/h1&gt;&quot;;
          str += &quot;&lt;form method=&#039;POST&#039; action=&#039;ok&#039;&gt;&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;ssid&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Имя Wi-Fi сети&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;pswd&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Пароль&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          str += &quot;&lt;/form&gt;&quot;;
server.send ( 200, &quot;text/html&quot;, str );
}      

void handleOk(){
  String ssid_ap;
  String pass_ap;
  unsigned char* buf = new unsigned char[64];
 
  String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;;
  str += &quot;&lt;body&gt;&quot;;
 
  EEPROM.begin(512);
 
  ssid_ap = server.arg(0);
  pass_ap = server.arg(1);
 
  if(ssid_ap != &quot;&quot;){
    EEPROM.write(96,ssid_ap.length());
    EEPROM.write(97,pass_ap.length());
    ssid_ap.getBytes(buf, ssid_ap.length() + 1);
    for(byte i = 0; i &lt; ssid_ap.length(); i++)
      EEPROM.write(i, buf[i]);
      
    pass_ap.getBytes(buf, pass_ap.length() + 1);
    for(byte i = 0; i &lt; pass_ap.length(); i++)
      EEPROM.write(i + 32, buf[i]);
      
    EEPROM.commit();
    EEPROM.end();
/////////////////////////
    WiFi.begin(ssid_ap, pass_ap);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED){delay (500);}
 ///////////////////////////////////////////////////////////////////////////  
    str +=&quot;&lt;big&gt;&lt;center&gt;Конфигурация сохранена в память&lt;br&gt;&quot;;
    str +=&quot;&lt;big&gt;&lt;center&gt;Уберите перемычку с D1 и перезагрузите ESP8266&lt;/p&gt;&lt;br&gt;&quot;;
    str +=&quot;&lt;big&gt;&lt;b&gt;&lt;center&gt;&quot;;
    str += WiFi.localIP().toString();
    str +=&quot;&lt;/b&gt;&lt;hr&gt;&quot;;
    str +=&quot;&lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  else {
    str += &quot;&lt;big&gt;&lt;center&gt;No WIFI Net&lt;/br&gt;\
   &lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  str += &quot;&lt;/body&gt;&lt;/html&gt;&quot;;
  server.send ( 200, &quot;text/html&quot;, str );
}

void web0() { 
   String str0 = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
          str0 += &quot;&lt;center&gt;&lt;b&gt;&lt;big&gt;После перезагрузки ESP8266 перейдите по &lt;a href=&#039;./&#039;&gt;ссылке&lt;/a&gt;&quot;;
          server.send (200, &quot;text/html&quot;, str0);sumbit();
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wwwinternetwww]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1983</uri>
			</author>
			<updated>2023-03-06T10:56:00Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7452#p7452</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=7351#p7351" />
			<content type="html"><![CDATA[<p>Здравствуйте . прошу помочь в скетче . <br />переписал на ws2812&nbsp; 128 led / 134 led&nbsp; / <br />проблема в последней разработке&nbsp; с BME280 .<br />записывает скетч , не могу зайти в режим точки wifi <br />если закрыть&nbsp; строчки </p><p>//Adafruit_BME280 bme;</p><p>// if (!bme.begin(0x76))Serial.println(&quot;Could not find a valid BME280 sensor, check wiring!&quot;); while (1);&nbsp; </p><p>//&nbsp; t_280 = int(bme.readTemperature()*10); <br />//&nbsp; &nbsp;p_280 = int(bme.readPressure() / 100.0F * 7.5);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; // h_280 = int(bme.readHumidity()*10); </p><p>после записи работает точка wifi&nbsp; и меню такое же . <br />ВОПРОС МОЖЕТ БЫТЬ ЧТО НЕТ BME280 ИЗ ЗА ЭТОГО НЕ РАБОТАЕТ ЧАСЫ И РЕЖИМ ТОЧКА WIFI ???</p><p>МОЖЕТ БЫТЬ ПРОБЛЕМА В БИБЛИОТЕКЕ&nbsp; ?</p><p>Adafruit_BME280_Library-master</p><p>Adafruit_BusIO-master</p><p>Adafruit_NeoPixel-master</p><p>Adafruit_Sensor-master</p><p>NTPClient-master</p><p>WiFi-1.2.7</p>]]></content>
			<author>
				<name><![CDATA[wwwinternetwww]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1983</uri>
			</author>
			<updated>2023-02-09T09:14:29Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=7351#p7351</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=3046#p3046" />
			<content type="html"><![CDATA[<p>Добавлен датчик BME280</p><p>Подключение BME280 к ESP8266:<br />3V — VIN<br />G — GND<br />D1 — SCL<br />D2 — SDA</p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/02/39f0f505d71a2999e7b2697b1e756079.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/02/39f0f505d71a2999e7b2697b1e756079.png" /></span> </p><div class="codebox"><pre><code>#include &lt;NTPClient.h&gt;
#include &lt;ESP8266WiFi.h&gt; 
#include &lt;WiFiUdp.h&gt; 
#include &lt;Wire.h&gt; 
#include &lt;WiFiClient.h&gt;
#include &lt;ESP8266WebServer.h&gt;
#include &lt;Adafruit_NeoPixel.h&gt;
#include &lt;EEPROM.h&gt;
#include &lt;Adafruit_Sensor.h&gt;  // https://github.com/adafruit/Adafruit_Sensor
#include &lt;Adafruit_BME280.h&gt;  // https://github.com/adafruit/Adafruit_BME280_Library
#ifndef APSSID
#define APSSID &quot;ESPap&quot;
#define APPSK  &quot;12345678&quot;
#endif
const char *ssid = APSSID;
const char *password = APPSK;
 ESP8266WebServer server(80);
 WiFiUDP ntpUDP;
 Adafruit_NeoPixel strip = Adafruit_NeoPixel(45, D6, NEO_GRB + NEO_KHZ400);//  трек, D6  
 NTPClient timeClient(ntpUDP, &quot;pool.ntp.org&quot;, 0,3600123);
 Adafruit_BME280 bme;
 String date_time,date;
 unsigned long times,times1;
 int ss,mm,hh,dd,mon,yer;
 int hear10,hear0,min10,min0,sec10,sec0;
 int hhh,ss_old;
 int brignes,utc;
 int r,g,b,cv,cv1,h1,h2,h3,h4,m1,m2,m3,m4;
 float br,br1,br2,br3,br4;
 byte len_ssid, len_pass;
 int d_start,d_end,p_start,p_end,h_start,h_end,t_start,t_end;
 int p_280,h_280,t_280;

 
 
void setup(){
  Serial.begin(9600);
  Wire.begin();
  delay(1000);timeClient.begin();
  if (!bme.begin(0x76)) {Serial.println(&quot;Could not find a valid BME280!&quot;); while (1);}
  EEPROM.begin(512);
  len_ssid = EEPROM.read(96);
  len_pass = EEPROM.read(97);
 if(len_pass &gt; 64) len_pass = 0;

  brignes = EEPROM.read(200);
  utc = EEPROM.read(201);
  cv = EEPROM.read(202);
  cv1 = EEPROM.read(203);
  h1 = EEPROM.read(204);m1 = EEPROM.read(205);br1 = EEPROM.read(206);
  h2 = EEPROM.read(207);m2 = EEPROM.read(208);br2 = EEPROM.read(209);
  h3 = EEPROM.read(210);m3 = EEPROM.read(211);br3 = EEPROM.read(212);
  h4 = EEPROM.read(213);m4 = EEPROM.read(214);br4 = EEPROM.read(215);
  d_start = EEPROM.read(216);d_end = EEPROM.read(217);
  p_start = EEPROM.read(218);p_end = EEPROM.read(219);
  h_start = EEPROM.read(220);h_end = EEPROM.read(221);
  t_start = EEPROM.read(222);t_end = EEPROM.read(223);

  if(brignes&lt;10||brignes&gt;255){brignes=10;}
  timeClient.setTimeOffset(utc*1800);
  
  //pinMode(2, OUTPUT);
  pinMode(5,INPUT_PULLUP);// D1

 /// точка доступа
  if(digitalRead(5)==LOW){
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print(&quot;AP IP address: &quot;);
  Serial.println(myIP);
  server.on(&quot;/&quot;, handleRoot);
  server.on(&quot;/ok&quot;, handleOk);
  server.begin();
  Serial.println(&quot;HTTP server started&quot;);  
  }
  else{
        // Режим STATION
      WiFi.mode( WIFI_STA);
      unsigned char* buf_ssid = new unsigned char[32];
      unsigned char* buf_pass = new unsigned char[64];
      for(byte i = 0; i &lt; len_ssid; i++) buf_ssid[i] = char(EEPROM.read(i));
      buf_ssid[len_ssid] = &#039;\x0&#039;;
      const char *ssid  = (const char*)buf_ssid;
      for(byte i = 0; i &lt; len_pass; i++) buf_pass[i] = char(EEPROM.read(i + 32));
      const char *pass  = (const char*)buf_pass;
      buf_pass[len_pass] = &#039;\x0&#039;;
      delay(2000);
      Serial.print(&quot;SSID: &quot;);
      Serial.print(ssid);
      Serial.print(&quot;   &quot;);
      Serial.print(&quot;Password: &quot;);
      Serial.println(pass);
       
     WiFi.begin(ssid, pass);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED){delay (500);Serial.print (&quot;.&quot;);}
      Serial.println();
      Serial.print(&quot;Connected to &quot;);
      Serial.println(ssid);
      Serial.print(&quot;IP address: &quot;);
      Serial.println(WiFi.localIP());
      server.on(&quot;/&quot;, web);
      server.on(&quot;/reset&quot;, web0);
      server.begin();
      Serial.println(brignes);
      Serial.println(utc);
      Serial.println(cv);
      Serial.println(cv1);
    }
  strip.begin();
}
 
void loop(){
  server.handleClient();

  if(digitalRead(5)==HIGH){
  //// Time //////////////////////////////////////////
  if(millis()-times&gt;=1000){times=millis();
   while(!timeClient.update()){timeClient.forceUpdate();}
   hh = timeClient.getHours();
   mm = timeClient.getMinutes();
   ss = timeClient.getSeconds();
  date_time = timeClient.getFormattedDate();
  int index_date = date_time.indexOf(&quot;T&quot;);
  date = date_time.substring(0, index_date);
  char charBufVar[11];date.toCharArray(charBufVar, 11);
   dd = int(charBufVar[0]-&#039;0&#039;)*10+int(charBufVar[1]-&#039;0&#039;);
   mon = int(charBufVar[3]-&#039;0&#039;)*10+int(charBufVar[4]-&#039;0&#039;);
   yer = int(charBufVar[8]-&#039;0&#039;)*10+int(charBufVar[9]-&#039;0&#039;);

   t_280 = int(bme.readTemperature()*10); 
   p_280 = int(bme.readPressure() / 100.0F * 7.5);                                      
   h_280 = int(bme.readHumidity()*10); 
   
  }
  Serial.print(hh/10);Serial.print(hh%10);Serial.print(&quot;:&quot;);Serial.print(mm/10);Serial.print(mm%10);Serial.print(&quot;:&quot;);Serial.print(ss/10);Serial.println(ss%10);
  Serial.println(br);
  Serial.println(int(r*br/100.00));

  
  //// ws2812 /////////////////////////////////////////

 if(ss&gt;d_start&amp;&amp;ss&lt;d_end){hear10=dd/10;hear0=dd%10;min10=mon/10;min0=mon%10;sec10=yer/10;sec0=yer%10;hhh=1;}
 else if(ss&gt;p_start&amp;&amp;ss&lt;p_end){hear10=12;hear0=p_280/1000%10;min10=p_280/100%10;min0=p_280/10%10;sec10=p_280%10;sec0=10;hhh=2;}
 else if(ss&gt;h_start&amp;&amp;ss&lt;h_end){hear10=13;hear0=10;min10=h_280/100%10;min0=h_280/10%10;sec10=h_280%10;sec0=10;hhh=2;}
 else if(ss&gt;t_start&amp;&amp;ss&lt;t_end){hear10=11;hear0=10;min10=t_280/100%10;min0=t_280/10%10;sec10=t_280%10;sec0=14;hhh=2;}
 else{hear10=hh/10;hear0=hh%10;min10=mm/10;min0=mm%10;sec10=ss/10;sec0=ss%10;hhh=0;}
 
  
  switch(hear10){   
    case 0: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,0);break;
    case 1: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 2: ws(0,1);ws(1,2);ws(2,0);ws(3,1);ws(4,1);ws(5,0);ws(6,1);break;
    case 3: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,0);ws(6,1);break;
    case 4: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;
    case 5: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
    case 6: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 7: ws(0,1);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 8: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 9: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
   case 10: ws(0,0);ws(1,0);ws(2,0);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;// &quot; &quot;
   case 11: ws(0,0);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;// &quot;t&quot;
   case 12: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;P&quot;
   case 13: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;H&quot;
   case 14: ws(0,1);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,0);break;// &quot;C&quot;
   case 15: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;// градус
    }
   switch(hear0){   
    case 0: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,0);break;
    case 1: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 2: ws(7,1);ws(8,2);ws(9,0);ws(10,1);ws(11,1);ws(12,0);ws(13,1);break;
    case 3: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,0);ws(13,1);break;
    case 4: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;
    case 5: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
    case 6: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 7: ws(7,1);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 8: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 9: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
   case 10: ws(7,0);ws(8,0);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;// &quot; &quot;
   case 11: ws(7,0);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;// &quot;t&quot;
   case 12: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;P&quot;
   case 13: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;H&quot;
   case 14: ws(7,1);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,0);break;// &quot;C&quot;
   case 15: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;// градус   
    } 

/// двоеточние и запятая
   if(hhh==0){
   if(ss!=ss_old){times1=millis();}  
   if(millis()-times1&lt;500){ws1(14,1);ws1(15,1);ws1(30,1); }
   else{ws1(14,0);ws1(15,0);ws1(30,0);}
   ss_old=ss;}


   if(hhh==1){ws1(14,1);ws1(15,0);ws1(30,1);}
   if(hhh==2){ws1(14,0);ws1(15,0);ws1(30,1);}
    
   switch(min10){   
    case 0: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,0);break;
    case 1: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;    
    case 2: ws(16,1);ws(17,2);ws(18,0);ws(19,1);ws(20,1);ws(21,0);ws(22,1);break;
    case 3: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,0);ws(22,1);break;
    case 4: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;
    case 5: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
    case 6: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 7: ws(16,1);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;
    case 8: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 9: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
   case 10: ws(16,0);ws(17,0);ws(18,0);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;// &quot; &quot; 
   case 11: ws(16,0);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;// &quot;t&quot; 
   case 12: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;P&quot;
   case 13: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;H&quot;
   case 14: ws(16,1);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,0);break;// &quot;C&quot;
   case 15: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;// градус  
    }
   switch(min0){   
    case 0: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,0);break;
    case 1: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 2: ws(23,1);ws(24,2);ws(25,0);ws(26,1);ws(27,1);ws(28,0);ws(29,1);break;
    case 3: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,0);ws(29,1);break;
    case 4: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;
    case 5: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
    case 6: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 7: ws(23,1);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 8: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 9: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
   case 10: ws(23,0);ws(24,0);ws(25,0);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;// &quot; &quot; 
   case 11: ws(23,0);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;// &quot;t&quot; 
   case 12: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;P&quot;
   case 13: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;H&quot;
   case 14: ws(23,1);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,0);break;// &quot;C&quot;
   case 15: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;// градус  
    } 

    

   switch(sec10){   
    case 0: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,0);break;
    case 1: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 2: ws(31,1);ws(32,2);ws(33,0);ws(34,1);ws(35,1);ws(36,0);ws(37,1);break;
    case 3: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,0);ws(37,1);break;
    case 4: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;
    case 5: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
    case 6: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 7: ws(31,1);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 8: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 9: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
   case 10: ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;// &quot; &quot; 
   case 11: ws(31,0);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;// &quot;t&quot; 
   case 12: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;P&quot;
   case 13: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;H&quot;
   case 14: ws(31,1);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,0);break;// &quot;C&quot;
   case 15: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;// градус    
    }
   switch(sec0){   
    case 0: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,0);break;
    case 1: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 2: ws(38,1);ws(39,2);ws(40,0);ws(41,1);ws(42,1);ws(43,0);ws(44,1);break;
    case 3: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,0);ws(44,1);break;
    case 4: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;
    case 5: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
    case 6: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 7: ws(38,1);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 8: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 9: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
   case 10: ws(38,0);ws(39,0);ws(40,0);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;// &quot; &quot; 
   case 11: ws(38,0);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;// &quot;t&quot; 
   case 12: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;P&quot;
   case 13: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;H&quot;
   case 14: ws(38,1);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,0);break;// &quot;C&quot;
   case 15: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;// градус    
    } 
  strip.show();
  }
  delay(100);
  }

void ws(int ind, bool datt){
  if(cv==2){r=brignes;g=0;b=0;}
  if(cv==3){r=0;g=brignes;b=0;}
  if(cv==4){r=0;g=0;b=brignes;}

  if(hh*100+mm&gt;=h1*100+m1&amp;&amp;hh*100+mm&lt;h2*100+m2){br=br1;}
  if(hh*100+mm&gt;=h2*100+m2&amp;&amp;hh*100+mm&lt;h3*100+m3){br=br2;}
  if(hh*100+mm&gt;=h3*100+m3&amp;&amp;hh*100+mm&lt;h4*100+m4){br=br3;}
  if(hh*100+mm&gt;=h4*100+m4 &amp;&amp; hh*100+mm&lt;2359){br=br4;}
  if(hh*100+mm&lt;h1*100+m1 &amp;&amp; hh*100+mm&gt;0){br=br4;}
  
  if(cv==0||cv==1){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(int(r*br/100.00), int(g*br/100.00), int(b*br/100.00)));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }
void ws1(int ind, bool datt){
  if(cv1==2){r=brignes;g=0;b=0;}
  if(cv1==3){r=0;g=brignes;b=0;}
  if(cv1==4){r=0;g=0;b=brignes;}
  if(cv1==0||cv1==1){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(int(r*br/100.00), int(g*br/100.00), int(b*br/100.00)));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }  

void web(){ 
   String webPage = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=700, user-scalable=no&#039; /&gt;&quot;;
   //style
          webPage += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          webPage += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          webPage += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          webPage += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          webPage += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
    /////////////   
          webPage += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;700&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;3&#039;&gt;&quot;;
          webPage +=&quot;&lt;td colspan=&#039;2&#039;&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Страница настройки Интернет часов&lt;/h1&gt;&quot;;
          webPage +=&quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;big&gt;Текущее время: &quot;;
          webPage += hh/10;webPage += hh%10; webPage +=&quot;:&quot;;webPage +=mm/10;
          webPage += mm%10; webPage +=&quot;:&quot;;webPage +=ss/10;webPage += ss%10;
          webPage += &quot;&lt;/center&gt;&quot;;
          webPage += &quot;&lt;form method=&#039;POST&#039; action=&#039;reset&#039; &gt;&quot;;
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;brignes&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Яркость 10...255 &quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += brignes;
          webPage += &quot;&lt;td&gt;&lt;input name=&#039;time_utc&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Временной сдвиг UTC (30 мин)&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += utc;
          webPage += &quot; (&quot;;webPage += utc*0.5;webPage += &quot; ч.)&quot;;
          
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;cv&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет цифр 1...4&quot;;
          webPage += &quot;&lt;br&gt;1 - белый, 2 - красный, 3 - синий, 4 - зеленый&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += cv;

          webPage += &quot;&lt;td&gt;&lt;input name=&#039;cv1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет двоеточия и запятой 1...4&quot;;
          webPage += &quot;&lt;br&gt;1 - белый, 2 - красный, 3 - синий, 4 - зеленый&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += cv1;
////////////////////////////////
          webPage += &quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;b&gt;Показания датчиков и даты (повтор каждую минуту)&lt;/b&gt;&lt;tr&gt;&lt;td&gt;&quot;;
          webPage += &quot;Дата с &lt;input name=&#039;d_start&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; по &lt;input name=&#039;d_end&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; секунду&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: c &quot;;webPage += d_start;webPage +=&quot; по &quot;;webPage += d_end;webPage += &quot; сек&quot;;
          if(d_start&lt;d_end){webPage += &quot; | Активно &lt;/small&gt;&quot;;}else{webPage += &quot; | Не активно &lt;/small&gt;&quot;;}
          webPage += &quot;&lt;br&gt;Давление с &lt;input name=&#039;p_start&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; по &lt;input name=&#039;p_end&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; секунду&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: c &quot;;webPage += p_start;webPage +=&quot; по &quot;;webPage += p_end;webPage += &quot; сек&quot;;
          if(p_start&lt;p_end){webPage += &quot; | Активно &lt;/small&gt;&quot;;}else{webPage += &quot; | Не активно &lt;/small&gt;&quot;;}
          webPage += &quot;&lt;td&gt;&quot;;
          webPage += &quot;Влажность с &lt;input name=&#039;h_start&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; по &lt;input name=&#039;h_end&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; секунду&quot;;          
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: c &quot;;webPage += h_start;webPage +=&quot; по &quot;;webPage += h_end;webPage += &quot; сек&quot;;
          if(h_start&lt;h_end){webPage += &quot; | Активно &lt;/small&gt;&quot;;}else{webPage += &quot; | Не активно &lt;/small&gt;&quot;;}
          webPage += &quot;&lt;br&gt;Температура с &lt;input name=&#039;t_start&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; по &lt;input name=&#039;t_end&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; секунду&quot;;         
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: c &quot;;webPage += t_start;webPage +=&quot; по &quot;;webPage += t_end;webPage += &quot; сек&quot;;
          if(t_start&lt;t_end){webPage += &quot; | Активно &lt;/small&gt;&quot;;}else{webPage += &quot; | Не активно &lt;/small&gt;&quot;;}
////////////////////////////////
          webPage += &quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;b&gt;Регулировка яркости по времени&lt;/b&gt;&lt;br&gt;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h1&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h1/10;webPage += h1%10;webPage += &quot;:&quot;;
          webPage += m1/10;webPage += m1%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br1);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;;

          webPage += &quot;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h2&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m2&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br2&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h2/10;webPage += h2%10;webPage += &quot;:&quot;;
          webPage += m2/10;webPage += m2%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br2);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;;

          webPage += &quot;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h3&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m3&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br3&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;; 
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h3/10;webPage += h3%10;webPage += &quot;:&quot;;
          webPage += m3/10;webPage += m3%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br3);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;; 

          webPage += &quot;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h4&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m4&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br4&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;;   
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h4/10;webPage += h4%10;webPage += &quot;:&quot;;
          webPage += m4/10;webPage += m4%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br4);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;;    

          webPage +=&quot;&lt;br&gt;&lt;br&gt;&lt;small&gt;При установке времени соблюдайте временную последовательность, первая уставка начало суток, четвертая конец суток. Если необходимо установить яркость 20 % с 22:00 до 6:00, то установите первую уставку на 6:00, яркость 20%, четвертую на 22:00, яркость 20 %.&lt;/small&gt;&quot;;                       
          webPage +=&quot;&lt;br&gt;&lt;small&gt;Не используйте 00:00 как начало суток, время не будет сохранено в память!!!&lt;small&gt;&quot;;
////////////////////////////////          
 
          webPage += &quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;br&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          webPage += &quot;&lt;/form&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;br&gt;Заполните все ячейки формы, незаполненная ячейка формы не изменит ранее установленный параметр&quot;;
   server.send(200, &quot;text/html&quot;, webPage);//sumbit();
}

void sumbit(){ 
    if (server.args() &gt; 0 ) {
    for ( uint8_t i = 0; i &lt; server.args(); i++ ) {
      if (server.argName(i) == &quot;brignes&quot;){brignes = server.arg(i).toInt();}
      if (server.argName(i) == &quot;time_utc&quot;){utc = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv&quot;){cv = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv1&quot;){cv1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h1&quot;){h1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m1&quot;){m1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br1&quot;){br1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h2&quot;){h2 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m2&quot;){m2 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br2&quot;){br2 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h3&quot;){h3 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m3&quot;){m3 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br3&quot;){br3 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h4&quot;){h4 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m4&quot;){m4 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br4&quot;){br4 = server.arg(i).toInt();}

      if (server.argName(i) == &quot;d_start&quot;){d_start = server.arg(i).toInt();}
      if (server.argName(i) == &quot;d_end&quot;){d_end = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h_start&quot;){h_start = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h_end&quot;){h_end = server.arg(i).toInt();}
      if (server.argName(i) == &quot;p_start&quot;){p_start = server.arg(i).toInt();}
      if (server.argName(i) == &quot;p_end&quot;){p_end = server.arg(i).toInt();}
      if (server.argName(i) == &quot;t_start&quot;){t_start = server.arg(i).toInt();}
      if (server.argName(i) == &quot;t_end&quot;){t_end = server.arg(i).toInt();}
      }
      Serial.println(&quot;Save&quot;);
      Serial.println(brignes);Serial.println(utc);Serial.println(cv);Serial.println(cv1);
      EEPROM.begin(512);
      if(brignes==NULL){}else{EEPROM.write(200,brignes);}
      if(utc==NULL){}else{EEPROM.write(201,utc);}
      if(cv==NULL){}else{EEPROM.write(202,cv);}
      if(cv1==NULL){}else{EEPROM.write(203,cv1);}

      if(h1*100+m1==NULL){}else{EEPROM.write(204,h1);EEPROM.write(205,m1);}
      if(br1==NULL){}else{EEPROM.write(206,br1);}
      if(h2*100+m2==NULL){}else{EEPROM.write(207,h2);EEPROM.write(208,m2);}
      if(br2==NULL){}else{EEPROM.write(209,br2);}
      if(h3*100+m3==NULL){}else{EEPROM.write(210,h3);EEPROM.write(211,m3);}
      if(br3==NULL){}else{EEPROM.write(212,br3);}
      if(h4*100+m4==NULL){}else{EEPROM.write(213,h4);EEPROM.write(214,m4);}
      if(br4==NULL){}else{EEPROM.write(215,br4);}

      if(d_start==NULL){}else{EEPROM.write(216,d_start);}
      if(d_end==NULL){}else{EEPROM.write(217,d_end);}
      if(p_start==NULL){}else{EEPROM.write(218,p_start);}
      if(p_end==NULL){}else{EEPROM.write(219,p_end);}
      
      if(h_start==NULL){}else{EEPROM.write(220,h_start);}
      if(h_end==NULL){}else{EEPROM.write(221,h_end);}
      if(t_start==NULL){}else{EEPROM.write(222,t_start);}
      if(t_end==NULL){}else{EEPROM.write(223,t_end);}
      EEPROM.commit();
      delay(1000);ESP.restart();
      }}

void handleRoot() { 
   String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
   //style
          str += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          str += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          str += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          str += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          str += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
   ////////////       
          str += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;470&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;10&#039;&gt;&quot;;
          str +=&quot;&lt;td&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Авторизация&lt;/h1&gt;&quot;;
          str += &quot;&lt;form method=&#039;POST&#039; action=&#039;ok&#039;&gt;&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;ssid&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Имя Wi-Fi сети&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;pswd&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Пароль&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          str += &quot;&lt;/form&gt;&quot;;
server.send ( 200, &quot;text/html&quot;, str );
}      

void handleOk(){
  String ssid_ap;
  String pass_ap;
  unsigned char* buf = new unsigned char[64];
 
  String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;;
  str += &quot;&lt;body&gt;&quot;;
 
  EEPROM.begin(512);
 
  ssid_ap = server.arg(0);
  pass_ap = server.arg(1);
 
  if(ssid_ap != &quot;&quot;){
    EEPROM.write(96,ssid_ap.length());
    EEPROM.write(97,pass_ap.length());
    ssid_ap.getBytes(buf, ssid_ap.length() + 1);
    for(byte i = 0; i &lt; ssid_ap.length(); i++)
      EEPROM.write(i, buf[i]);
      
    pass_ap.getBytes(buf, pass_ap.length() + 1);
    for(byte i = 0; i &lt; pass_ap.length(); i++)
      EEPROM.write(i + 32, buf[i]);
      
    EEPROM.commit();
    EEPROM.end();
/////////////////////////
    WiFi.begin(ssid_ap, pass_ap);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED){delay (500);}
 ///////////////////////////////////////////////////////////////////////////  
    str +=&quot;&lt;big&gt;&lt;center&gt;Конфигурация сохранена в память&lt;br&gt;&quot;;
    str +=&quot;&lt;big&gt;&lt;center&gt;Уберите перемычку с D1 и перезагрузите ESP8266&lt;/p&gt;&lt;br&gt;&quot;;
    str +=&quot;&lt;big&gt;&lt;b&gt;&lt;center&gt;&quot;;
    str += WiFi.localIP().toString();
    str +=&quot;&lt;/b&gt;&lt;hr&gt;&quot;;
    str +=&quot;&lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  else {
    str += &quot;&lt;big&gt;&lt;center&gt;No WIFI Net&lt;/br&gt;\
   &lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  str += &quot;&lt;/body&gt;&lt;/html&gt;&quot;;
  server.send ( 200, &quot;text/html&quot;, str );
}

void web0() { 
   String str0 = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
          str0 += &quot;&lt;center&gt;&lt;b&gt;&lt;big&gt;После перезагрузки ESP8266 перейдите по &lt;a href=&#039;./&#039;&gt;ссылке&lt;/a&gt;&quot;;
          server.send (200, &quot;text/html&quot;, str0);sumbit();
} </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2021-02-07T05:10:18Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=3046#p3046</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2910#p2910" />
			<content type="html"><![CDATA[<p>Доработка часов<br /></p><ul><li><p>Добавлена регулировка яркости по времени в % от установленного значения.</p></li></ul><ul><li><p>Не обязательно заполнять все ячейки формы, если ячейка не была заполнена, то будет сохранено предыдущее значение настроек.</p></li></ul><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/01/fc5af6d9056f1e969b4946cb6c13398a.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/01/fc5af6d9056f1e969b4946cb6c13398a.png" /></span> </p><div class="codebox"><pre><code>#include &lt;NTPClient.h&gt;
#include &lt;ESP8266WiFi.h&gt; 
#include &lt;WiFiUdp.h&gt; 
#include &lt;Wire.h&gt; 
#include &lt;WiFiClient.h&gt;
#include &lt;ESP8266WebServer.h&gt;
#include &lt;Adafruit_NeoPixel.h&gt;
#include &lt;EEPROM.h&gt;
#ifndef APSSID
#define APSSID &quot;ESPap&quot;
#define APPSK  &quot;12345678&quot;
#endif
const char *ssid = APSSID;
const char *password = APPSK;
 ESP8266WebServer server(80);
 WiFiUDP ntpUDP;
 Adafruit_NeoPixel strip = Adafruit_NeoPixel(45, D6, NEO_GRB + NEO_KHZ400);//  трек, D6  
 NTPClient timeClient(ntpUDP, &quot;pool.ntp.org&quot;, 0,3600123);
 String date_time,date;
 unsigned long times,times1;
 int ss,mm,hh,dd,mon,yer;
 int hear10,hear0,min10,min0,sec10,sec0;
 int hhh,ss_old;
 int brignes,utc;
 int r,g,b,cv,cv1,h1,h2,h3,h4,m1,m2,m3,m4;
 float br,br1,br2,br3,br4;
 byte len_ssid, len_pass;

 
 
void setup(){
  delay(1000);timeClient.begin();
  EEPROM.begin(512);
  len_ssid = EEPROM.read(96);
  len_pass = EEPROM.read(97);
 if(len_pass &gt; 64) len_pass = 0;

  brignes = EEPROM.read(200);
  utc = EEPROM.read(201);
  cv = EEPROM.read(202);
  cv1 = EEPROM.read(203);
  h1 = EEPROM.read(204);m1 = EEPROM.read(205);br1 = EEPROM.read(206);
  h2 = EEPROM.read(207);m2 = EEPROM.read(208);br2 = EEPROM.read(209);
  h3 = EEPROM.read(210);m3 = EEPROM.read(211);br3 = EEPROM.read(212);
  h4 = EEPROM.read(213);m4 = EEPROM.read(214);br4 = EEPROM.read(215);
  if(brignes&lt;10||brignes&gt;255){brignes=10;}
  timeClient.setTimeOffset(utc*1800);
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(5,INPUT_PULLUP);// D1

 /// точка доступа
  if(digitalRead(5)==LOW){
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print(&quot;AP IP address: &quot;);
  Serial.println(myIP);
  server.on(&quot;/&quot;, handleRoot);
  server.on(&quot;/ok&quot;, handleOk);
  server.begin();
  Serial.println(&quot;HTTP server started&quot;);  
  }
  else{
        // Режим STATION
      WiFi.mode( WIFI_STA);
      unsigned char* buf_ssid = new unsigned char[32];
      unsigned char* buf_pass = new unsigned char[64];
      for(byte i = 0; i &lt; len_ssid; i++) buf_ssid[i] = char(EEPROM.read(i));
      buf_ssid[len_ssid] = &#039;\x0&#039;;
      const char *ssid  = (const char*)buf_ssid;
      for(byte i = 0; i &lt; len_pass; i++) buf_pass[i] = char(EEPROM.read(i + 32));
      const char *pass  = (const char*)buf_pass;
      buf_pass[len_pass] = &#039;\x0&#039;;
      delay(2000);
      Serial.print(&quot;SSID: &quot;);
      Serial.print(ssid);
      Serial.print(&quot;   &quot;);
      Serial.print(&quot;Password: &quot;);
      Serial.println(pass);
       
     WiFi.begin(ssid, pass);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED){delay (500);Serial.print (&quot;.&quot;);}
      Serial.println();
      Serial.print(&quot;Connected to &quot;);
      Serial.println(ssid);
      Serial.print(&quot;IP address: &quot;);
      Serial.println(WiFi.localIP());
      server.on(&quot;/&quot;, web);
      server.on(&quot;/reset&quot;, web0);
      server.begin();
      Serial.println(brignes);
      Serial.println(utc);
      Serial.println(cv);
      Serial.println(cv1);
    }
  strip.begin();
}
 
void loop(){
  server.handleClient();

  if(digitalRead(5)==HIGH){
  //// Time //////////////////////////////////////////
  if(millis()-times&gt;=1000){times=millis();
   while(!timeClient.update()){timeClient.forceUpdate();}
   hh = timeClient.getHours();
   mm = timeClient.getMinutes();
   ss = timeClient.getSeconds();
  date_time = timeClient.getFormattedDate();
  int index_date = date_time.indexOf(&quot;T&quot;);
  date = date_time.substring(0, index_date);
  char charBufVar[11];date.toCharArray(charBufVar, 11);
   dd = int(charBufVar[0]-&#039;0&#039;)*10+int(charBufVar[1]-&#039;0&#039;);
   mon = int(charBufVar[3]-&#039;0&#039;)*10+int(charBufVar[4]-&#039;0&#039;);
   yer = int(charBufVar[8]-&#039;0&#039;)*10+int(charBufVar[9]-&#039;0&#039;);
  }
  Serial.print(hh/10);Serial.print(hh%10);Serial.print(&quot;:&quot;);Serial.print(mm/10);Serial.print(mm%10);Serial.print(&quot;:&quot;);Serial.print(ss/10);Serial.println(ss%10);
  Serial.println(br);
  Serial.println(int(r*br/100.00));
  //// ws2812 /////////////////////////////////////////

 if(ss&gt;10&amp;&amp;ss&lt;15){hear10=dd/10;hear0=dd%10;min10=mon/10;min0=mon%10;sec10=yer/10;sec0=yer%10;hhh=1;}
  else{hear10=hh/10;hear0=hh%10;min10=mm/10;min0=mm%10;sec10=ss/10;sec0=ss%10;hhh=0;}
 
  
  switch(hear10){   
    case 0: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,0);break;
    case 1: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 2: ws(0,1);ws(1,2);ws(2,0);ws(3,1);ws(4,1);ws(5,0);ws(6,1);break;
    case 3: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,0);ws(6,1);break;
    case 4: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;
    case 5: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
    case 6: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 7: ws(0,1);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 8: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 9: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
   case 10: ws(0,0);ws(1,0);ws(2,0);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;// &quot; &quot;
   case 11: ws(0,0);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;// &quot;t&quot;
   case 12: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;P&quot;
   case 13: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;H&quot;
   case 14: ws(0,1);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;// &quot;C&quot;
   case 15: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;// градус
    }
   switch(hear0){   
    case 0: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,0);break;
    case 1: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 2: ws(7,1);ws(8,2);ws(9,0);ws(10,1);ws(11,1);ws(12,0);ws(13,1);break;
    case 3: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,0);ws(13,1);break;
    case 4: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;
    case 5: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
    case 6: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 7: ws(7,1);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 8: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 9: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
   case 10: ws(7,0);ws(8,0);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;// &quot; &quot;
   case 11: ws(7,0);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;// &quot;t&quot;
   case 12: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;P&quot;
   case 13: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;H&quot;
   case 14: ws(7,1);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;// &quot;C&quot;
   case 15: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;// градус   
    } 

/// двоеточние и запятая
   if(hhh==0){
   if(ss!=ss_old){times1=millis();}  
   if(millis()-times1&lt;500){ws1(14,1);ws1(15,1);ws1(30,1); digitalWrite(2, HIGH);}
   else{ws1(14,0);ws1(15,0);ws1(30,0); digitalWrite(2, LOW);}
   ss_old=ss;}

   if(hhh==1){ws1(14,1);ws1(15,0);ws1(30,1); digitalWrite(2, LOW);}
    
   switch(min10){   
    case 0: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,0);break;
    case 1: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;    
    case 2: ws(16,1);ws(17,2);ws(18,0);ws(19,1);ws(20,1);ws(21,0);ws(22,1);break;
    case 3: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,0);ws(22,1);break;
    case 4: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;
    case 5: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
    case 6: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 7: ws(16,1);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;
    case 8: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 9: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
   case 10: ws(16,0);ws(17,0);ws(18,0);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;// &quot; &quot; 
   case 11: ws(16,0);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;// &quot;t&quot; 
   case 12: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;P&quot;
   case 13: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;H&quot;
   case 14: ws(16,1);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;// &quot;C&quot;
   case 15: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;// градус  
    }
   switch(min0){   
    case 0: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,0);break;
    case 1: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 2: ws(23,1);ws(24,2);ws(25,0);ws(26,1);ws(27,1);ws(28,0);ws(29,1);break;
    case 3: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,0);ws(29,1);break;
    case 4: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;
    case 5: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
    case 6: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 7: ws(23,1);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 8: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 9: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
   case 10: ws(23,0);ws(24,0);ws(25,0);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;// &quot; &quot; 
   case 11: ws(23,0);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;// &quot;t&quot; 
   case 12: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;P&quot;
   case 13: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;H&quot;
   case 14: ws(23,1);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;// &quot;C&quot;
   case 15: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;// градус  
    } 

    

   switch(sec10){   
    case 0: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,0);break;
    case 1: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 2: ws(31,1);ws(32,2);ws(33,0);ws(34,1);ws(35,1);ws(36,0);ws(37,1);break;
    case 3: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,0);ws(37,1);break;
    case 4: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;
    case 5: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
    case 6: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 7: ws(31,1);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 8: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 9: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
   case 10: ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;// &quot; &quot; 
   case 11: ws(31,0);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;// &quot;t&quot; 
   case 12: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;P&quot;
   case 13: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;H&quot;
   case 14: ws(31,1);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;// &quot;C&quot;
   case 15: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;// градус    
    }
   switch(sec0){   
    case 0: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,0);break;
    case 1: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 2: ws(38,1);ws(39,2);ws(40,0);ws(41,1);ws(42,1);ws(43,0);ws(44,1);break;
    case 3: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,0);ws(44,1);break;
    case 4: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;
    case 5: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
    case 6: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 7: ws(38,1);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 8: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 9: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
   case 10: ws(38,0);ws(39,0);ws(40,0);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;// &quot; &quot; 
   case 11: ws(38,0);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;// &quot;t&quot; 
   case 12: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;P&quot;
   case 13: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;H&quot;
   case 14: ws(38,1);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;// &quot;C&quot;
   case 15: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;// градус    
    } 
  strip.show();
  }
  delay(100);
  }

void ws(int ind, bool datt){
  if(cv==2){r=brignes;g=0;b=0;}
  if(cv==3){r=0;g=brignes;b=0;}
  if(cv==4){r=0;g=0;b=brignes;}

  if(hh*100+mm&gt;=h1*100+m1&amp;&amp;hh*100+mm&lt;h2*100+m2){br=br1;}
  if(hh*100+mm&gt;=h2*100+m2&amp;&amp;hh*100+mm&lt;h3*100+m3){br=br2;}
  if(hh*100+mm&gt;=h3*100+m3&amp;&amp;hh*100+mm&lt;h4*100+m4){br=br3;}
  if(hh*100+mm&gt;=h4*100+m4 &amp;&amp; hh*100+mm&lt;2359){br=br4;}
  if(hh*100+mm&lt;h1*100+m1 &amp;&amp; hh*100+mm&gt;0){br=br4;}
  
  if(cv==0||cv==1){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(int(r*br/100.00), int(g*br/100.00), int(b*br/100.00)));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }
void ws1(int ind, bool datt){
  if(cv1==2){r=brignes;g=0;b=0;}
  if(cv1==3){r=0;g=brignes;b=0;}
  if(cv1==4){r=0;g=0;b=brignes;}
  if(cv1==0||cv1==1){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(int(r*br/100.00), int(g*br/100.00), int(b*br/100.00)));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }  

void web(){ 
   String webPage = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=700, user-scalable=no&#039; /&gt;&quot;;
   //style
          webPage += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          webPage += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          webPage += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          webPage += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          webPage += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
    /////////////   
          webPage += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;700&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;3&#039;&gt;&quot;;
          webPage +=&quot;&lt;td colspan=&#039;2&#039;&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Страница настройки Интернет часов&lt;/h1&gt;&quot;;
          webPage +=&quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;big&gt;Текущее время: &quot;;
          webPage += hh/10;webPage += hh%10; webPage +=&quot;:&quot;;webPage +=mm/10;
          webPage += mm%10; webPage +=&quot;:&quot;;webPage +=ss/10;webPage += ss%10;
          webPage += &quot;&lt;/center&gt;&quot;;
          webPage += &quot;&lt;form method=&#039;POST&#039; action=&#039;reset&#039; &gt;&quot;;
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;brignes&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Яркость 10...255 &quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += brignes;
          webPage += &quot;&lt;td&gt;&lt;input name=&#039;time_utc&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Временной сдвиг UTC (30 мин)&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += utc;
          webPage += &quot; (&quot;;webPage += utc*0.5;webPage += &quot; ч.)&quot;;
          
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;cv&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет цифр 1...4&quot;;
          webPage += &quot;&lt;br&gt;1 - белый, 2 - красный, 3 - синий, 4 - зеленый&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += cv;

          webPage += &quot;&lt;td&gt;&lt;input name=&#039;cv1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет двоеточия и запятой 1...4&quot;;
          webPage += &quot;&lt;br&gt;1 - белый, 2 - красный, 3 - синий, 4 - зеленый&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += cv1;
////////////////////////////////
          webPage += &quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;b&gt;Регулировка яркости по времени&lt;/b&gt;&lt;br&gt;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h1&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h1/10;webPage += h1%10;webPage += &quot;:&quot;;
          webPage += m1/10;webPage += m1%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br1);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;;

          webPage += &quot;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h2&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m2&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br2&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;;
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h2/10;webPage += h2%10;webPage += &quot;:&quot;;
          webPage += m2/10;webPage += m2%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br2);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;;

          webPage += &quot;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h3&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m3&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br3&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;; 
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h3/10;webPage += h3%10;webPage += &quot;:&quot;;
          webPage += m3/10;webPage += m3%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br3);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;; 

          webPage += &quot;&lt;br&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;input name=&#039;h4&#039; autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; : &quot;;
          webPage += &quot;&lt;input name=&#039;m4&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; HH:MM &gt;&gt; &quot;;
          webPage += &quot;&lt;input name=&#039;br4&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; % яркости&quot;;   
          webPage += &quot;&lt;br&gt;&lt;small&gt;Установлено: &quot;;webPage += h4/10;webPage += h4%10;webPage += &quot;:&quot;;
          webPage += m4/10;webPage += m4%10;webPage += &quot; &gt;&gt; &quot;;webPage += int(br4);webPage += &quot;%&quot;;webPage +=&quot;&lt;/small&gt;&quot;;    

          webPage +=&quot;&lt;br&gt;&lt;br&gt;&lt;small&gt;При установке времени соблюдайте временную последовательность, первая уставка начало суток, четвертая конец суток. Если необходимо установить яркость 20 % с 22:00 до 6:00, то установите первую уставку на 6:00, яркость 20%, четвертую на 22:00, яркость 20 %.&lt;/small&gt;&quot;;                       
          webPage +=&quot;&lt;br&gt;&lt;small&gt;Не используйте 00:00 как начало суток, время не будет сохранено в память!!!&lt;small&gt;&quot;;
////////////////////////////////          
 
          webPage += &quot;&lt;tr&gt;&lt;td colspan=&#039;2&#039;&gt;&lt;center&gt;&lt;br&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          webPage += &quot;&lt;/form&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;br&gt;Заполните все ячейки формы, незаполненная ячейка формы не изменит ранее установленный параметр&quot;;
   server.send(200, &quot;text/html&quot;, webPage);//sumbit();
}

void sumbit(){ 
    if (server.args() &gt; 0 ) {
    for ( uint8_t i = 0; i &lt; server.args(); i++ ) {
      if (server.argName(i) == &quot;brignes&quot;){brignes = server.arg(i).toInt();}
      if (server.argName(i) == &quot;time_utc&quot;){utc = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv&quot;){cv = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv1&quot;){cv1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h1&quot;){h1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m1&quot;){m1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br1&quot;){br1 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h2&quot;){h2 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m2&quot;){m2 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br2&quot;){br2 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h3&quot;){h3 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m3&quot;){m3 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br3&quot;){br3 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;h4&quot;){h4 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;m4&quot;){m4 = server.arg(i).toInt();}
      if (server.argName(i) == &quot;br4&quot;){br4 = server.arg(i).toInt();}
      }
      Serial.println(&quot;Save&quot;);
      Serial.println(brignes);Serial.println(utc);Serial.println(cv);Serial.println(cv1);
      EEPROM.begin(512);
      if(brignes==NULL){}else{EEPROM.write(200,brignes);}
      if(utc==NULL){}else{EEPROM.write(201,utc);}
      if(cv==NULL){}else{EEPROM.write(202,cv);}
      if(cv1==NULL){}else{EEPROM.write(203,cv1);}

      if(h1*100+m1==NULL){}else{EEPROM.write(204,h1);EEPROM.write(205,m1);}
      if(br1==NULL){}else{EEPROM.write(206,br1);}
      if(h2*100+m2==NULL){}else{EEPROM.write(207,h2);EEPROM.write(208,m2);}
      if(br2==NULL){}else{EEPROM.write(209,br2);}
      if(h3*100+m3==NULL){}else{EEPROM.write(210,h3);EEPROM.write(211,m3);}
      if(br3==NULL){}else{EEPROM.write(212,br3);}
      if(h4*100+m4==NULL){}else{EEPROM.write(213,h4);EEPROM.write(214,m4);}
      if(br4==NULL){}else{EEPROM.write(215,br4);}
      EEPROM.commit();
      delay(1000);ESP.restart();
      }}

void handleRoot() { 
   String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
   //style
          str += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          str += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          str += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          str += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          str += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
   ////////////       
          str += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;470&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;10&#039;&gt;&quot;;
          str +=&quot;&lt;td&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Авторизация&lt;/h1&gt;&quot;;
          str += &quot;&lt;form method=&#039;POST&#039; action=&#039;ok&#039;&gt;&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;ssid&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Имя Wi-Fi сети&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;pswd&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Пароль&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          str += &quot;&lt;/form&gt;&quot;;
server.send ( 200, &quot;text/html&quot;, str );
}      

void handleOk(){
  String ssid_ap;
  String pass_ap;
  unsigned char* buf = new unsigned char[64];
 
  String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;;
  str += &quot;&lt;body&gt;&quot;;
 
  EEPROM.begin(512);
 
  ssid_ap = server.arg(0);
  pass_ap = server.arg(1);
 
  if(ssid_ap != &quot;&quot;){
    EEPROM.write(96,ssid_ap.length());
    EEPROM.write(97,pass_ap.length());
    ssid_ap.getBytes(buf, ssid_ap.length() + 1);
    for(byte i = 0; i &lt; ssid_ap.length(); i++)
      EEPROM.write(i, buf[i]);
      
    pass_ap.getBytes(buf, pass_ap.length() + 1);
    for(byte i = 0; i &lt; pass_ap.length(); i++)
      EEPROM.write(i + 32, buf[i]);
      
    EEPROM.commit();
    EEPROM.end();
/////////////////////////
    WiFi.begin(ssid_ap, pass_ap);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED){delay (500);}
 ///////////////////////////////////////////////////////////////////////////  
    str +=&quot;&lt;big&gt;&lt;center&gt;Конфигурация сохранена в память&lt;br&gt;&quot;;
    str +=&quot;&lt;big&gt;&lt;center&gt;Уберите перемычку с D1 и перезагрузите ESP8266&lt;/p&gt;&lt;br&gt;&quot;;
    str +=&quot;&lt;big&gt;&lt;b&gt;&lt;center&gt;&quot;;
    str += WiFi.localIP().toString();
    str +=&quot;&lt;/b&gt;&lt;hr&gt;&quot;;
    str +=&quot;&lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  else {
    str += &quot;&lt;big&gt;&lt;center&gt;No WIFI Net&lt;/br&gt;\
   &lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  str += &quot;&lt;/body&gt;&lt;/html&gt;&quot;;
  server.send ( 200, &quot;text/html&quot;, str );
}

void web0() { 
   String str0 = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
          str0 += &quot;&lt;center&gt;&lt;b&gt;&lt;big&gt;После перезагрузки ESP8266 (светодиод на плате начнет мигать) перейдите по &lt;a href=&#039;./&#039;&gt;ссылке&lt;/a&gt;&quot;;
          server.send (200, &quot;text/html&quot;, str0);sumbit();
} </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2021-01-17T13:10:45Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2910#p2910</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2880#p2880" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/01/2218b4a5069b274071a619560d96466a.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2021/01/2218b4a5069b274071a619560d96466a.jpg" /></span> <span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/01/fff6201af0d9dbdbf7faedddc757a4b1.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2021/01/fff6201af0d9dbdbf7faedddc757a4b1.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[Demon65536]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=943</uri>
			</author>
			<updated>2021-01-12T02:35:15Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2880#p2880</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2752#p2752" />
			<content type="html"><![CDATA[<p>Доработка - после авторизации в wi-fi сети, точка доступа сообщает новый IP адрес, не надо открывать монитор порта.<br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/7ccab753f9fbfdfa1deacaa504c69413.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/7ccab753f9fbfdfa1deacaa504c69413.png" /></span> </p><div class="codebox"><pre><code>#include &lt;NTPClient.h&gt;
#include &lt;ESP8266WiFi.h&gt; 
#include &lt;WiFiUdp.h&gt; 
#include &lt;Wire.h&gt; 
#include &lt;WiFiClient.h&gt;
#include &lt;ESP8266WebServer.h&gt;
#include &lt;Adafruit_NeoPixel.h&gt;
#include &lt;EEPROM.h&gt;
#ifndef APSSID
#define APSSID &quot;ESPap&quot;
#define APPSK  &quot;12345678&quot;
#endif
const char *ssid = APSSID;
const char *password = APPSK;
 ESP8266WebServer server(80);
 WiFiUDP ntpUDP;
 Adafruit_NeoPixel strip = Adafruit_NeoPixel(45, D6, NEO_GRB + NEO_KHZ400);//  трек, D6  
 NTPClient timeClient(ntpUDP, &quot;pool.ntp.org&quot;, 0,3600123);
 String date_time,date;
 unsigned long times,times1;
 int ss,mm,hh,dd,mon,yer;
 int hear10,hear0,min10,min0,sec10,sec0;
 int hhh,ss_old;
 int brignes,utc;
 int r,g,b,cv,cv1;
 byte len_ssid, len_pass;

 
 
void setup(){
  delay(1000);timeClient.begin();
  EEPROM.begin(512);
  len_ssid = EEPROM.read(96);
  len_pass = EEPROM.read(97);
 if(len_pass &gt; 64) len_pass = 0;

  brignes = EEPROM.read(200);
  utc = EEPROM.read(201);
  cv = EEPROM.read(202);
  cv1 = EEPROM.read(203);
  if(brignes&lt;10||brignes&gt;255){brignes=10;}
  timeClient.setTimeOffset(utc*1800);
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(5,INPUT_PULLUP);// D1

 /// точка доступа
  if(digitalRead(5)==LOW){
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print(&quot;AP IP address: &quot;);
  Serial.println(myIP);
  server.on(&quot;/&quot;, handleRoot);
  server.on(&quot;/ok&quot;, handleOk);
  server.begin();
  Serial.println(&quot;HTTP server started&quot;);  
  }
  else{
        // Режим STATION
      WiFi.mode( WIFI_STA);
      unsigned char* buf_ssid = new unsigned char[32];
      unsigned char* buf_pass = new unsigned char[64];
      for(byte i = 0; i &lt; len_ssid; i++) buf_ssid[i] = char(EEPROM.read(i));
      buf_ssid[len_ssid] = &#039;\x0&#039;;
      const char *ssid  = (const char*)buf_ssid;
      for(byte i = 0; i &lt; len_pass; i++) buf_pass[i] = char(EEPROM.read(i + 32));
      const char *pass  = (const char*)buf_pass;
      buf_pass[len_pass] = &#039;\x0&#039;;
      delay(2000);
      Serial.print(&quot;SSID: &quot;);
      Serial.print(ssid);
      Serial.print(&quot;   &quot;);
      Serial.print(&quot;Password: &quot;);
      Serial.println(pass);
       
     WiFi.begin(ssid, pass);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED){delay (500);Serial.print (&quot;.&quot;);}
      Serial.println();
      Serial.print(&quot;Connected to &quot;);
      Serial.println(ssid);
      Serial.print(&quot;IP address: &quot;);
      Serial.println(WiFi.localIP());
      server.on(&quot;/&quot;, web);
      server.on(&quot;/reset&quot;, web0);
      server.begin();
      Serial.println(brignes);
      Serial.println(utc);
      Serial.println(cv);
      Serial.println(cv1);
    }
  strip.begin();
}
 
void loop(){
  server.handleClient();

  if(digitalRead(5)==HIGH){
  //// Time //////////////////////////////////////////
  if(millis()-times&gt;=1000){times=millis();
   while(!timeClient.update()){timeClient.forceUpdate();}
   hh = timeClient.getHours();
   mm = timeClient.getMinutes();
   ss = timeClient.getSeconds();
  date_time = timeClient.getFormattedDate();
  int index_date = date_time.indexOf(&quot;T&quot;);
  date = date_time.substring(0, index_date);
  char charBufVar[11];date.toCharArray(charBufVar, 11);
   dd = int(charBufVar[0]-&#039;0&#039;)*10+int(charBufVar[1]-&#039;0&#039;);
   mon = int(charBufVar[3]-&#039;0&#039;)*10+int(charBufVar[4]-&#039;0&#039;);
   yer = int(charBufVar[8]-&#039;0&#039;)*10+int(charBufVar[9]-&#039;0&#039;);
  }
  Serial.print(hh/10);Serial.print(hh%10);Serial.print(&quot;:&quot;);Serial.print(mm/10);Serial.print(mm%10);Serial.print(&quot;:&quot;);Serial.print(ss/10);Serial.println(ss%10);
  //// ws2812 /////////////////////////////////////////

 if(ss&gt;10&amp;&amp;ss&lt;15){hear10=dd/10;hear0=dd%10;min10=mon/10;min0=mon%10;sec10=yer/10;sec0=yer%10;hhh=1;}
  else{hear10=hh/10;hear0=hh%10;min10=mm/10;min0=mm%10;sec10=ss/10;sec0=ss%10;hhh=0;}
 
  
  switch(hear10){   
    case 0: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,0);break;
    case 1: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 2: ws(0,1);ws(1,2);ws(2,0);ws(3,1);ws(4,1);ws(5,0);ws(6,1);break;
    case 3: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,0);ws(6,1);break;
    case 4: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;
    case 5: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
    case 6: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 7: ws(0,1);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 8: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 9: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
   case 10: ws(0,0);ws(1,0);ws(2,0);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;// &quot; &quot;
   case 11: ws(0,0);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;// &quot;t&quot;
   case 12: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;P&quot;
   case 13: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;H&quot;
   case 14: ws(0,1);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;// &quot;C&quot;
   case 15: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;// градус
    }
   switch(hear0){   
    case 0: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,0);break;
    case 1: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 2: ws(7,1);ws(8,2);ws(9,0);ws(10,1);ws(11,1);ws(12,0);ws(13,1);break;
    case 3: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,0);ws(13,1);break;
    case 4: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;
    case 5: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
    case 6: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 7: ws(7,1);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 8: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 9: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
   case 10: ws(7,0);ws(8,0);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;// &quot; &quot;
   case 11: ws(7,0);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;// &quot;t&quot;
   case 12: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;P&quot;
   case 13: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;H&quot;
   case 14: ws(7,1);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;// &quot;C&quot;
   case 15: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;// градус   
    } 

/// двоеточние и запятая
   if(hhh==0){
   if(ss!=ss_old){times1=millis();}  
   if(millis()-times1&lt;500){ws1(14,1);ws1(15,1);ws1(30,1); digitalWrite(2, HIGH);}
   else{ws1(14,0);ws1(15,0);ws1(30,0); digitalWrite(2, LOW);}
   ss_old=ss;}

   if(hhh==1){ws1(14,1);ws1(15,0);ws1(30,1); digitalWrite(2, LOW);}
    
   switch(min10){   
    case 0: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,0);break;
    case 1: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;    
    case 2: ws(16,1);ws(17,2);ws(18,0);ws(19,1);ws(20,1);ws(21,0);ws(22,1);break;
    case 3: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,0);ws(22,1);break;
    case 4: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;
    case 5: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
    case 6: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 7: ws(16,1);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;
    case 8: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 9: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
   case 10: ws(16,0);ws(17,0);ws(18,0);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;// &quot; &quot; 
   case 11: ws(16,0);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;// &quot;t&quot; 
   case 12: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;P&quot;
   case 13: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;H&quot;
   case 14: ws(16,1);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;// &quot;C&quot;
   case 15: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;// градус  
    }
   switch(min0){   
    case 0: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,0);break;
    case 1: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 2: ws(23,1);ws(24,2);ws(25,0);ws(26,1);ws(27,1);ws(28,0);ws(29,1);break;
    case 3: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,0);ws(29,1);break;
    case 4: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;
    case 5: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
    case 6: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 7: ws(23,1);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 8: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 9: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
   case 10: ws(23,0);ws(24,0);ws(25,0);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;// &quot; &quot; 
   case 11: ws(23,0);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;// &quot;t&quot; 
   case 12: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;P&quot;
   case 13: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;H&quot;
   case 14: ws(23,1);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;// &quot;C&quot;
   case 15: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;// градус  
    } 

    

   switch(sec10){   
    case 0: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,0);break;
    case 1: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 2: ws(31,1);ws(32,2);ws(33,0);ws(34,1);ws(35,1);ws(36,0);ws(37,1);break;
    case 3: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,0);ws(37,1);break;
    case 4: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;
    case 5: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
    case 6: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 7: ws(31,1);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 8: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 9: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
   case 10: ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;// &quot; &quot; 
   case 11: ws(31,0);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;// &quot;t&quot; 
   case 12: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;P&quot;
   case 13: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;H&quot;
   case 14: ws(31,1);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;// &quot;C&quot;
   case 15: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;// градус    
    }
   switch(sec0){   
    case 0: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,0);break;
    case 1: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 2: ws(38,1);ws(39,2);ws(40,0);ws(41,1);ws(42,1);ws(43,0);ws(44,1);break;
    case 3: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,0);ws(44,1);break;
    case 4: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;
    case 5: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
    case 6: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 7: ws(38,1);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 8: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 9: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
   case 10: ws(38,0);ws(39,0);ws(40,0);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;// &quot; &quot; 
   case 11: ws(38,0);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;// &quot;t&quot; 
   case 12: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;P&quot;
   case 13: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;H&quot;
   case 14: ws(38,1);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;// &quot;C&quot;
   case 15: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;// градус    
    } 
  strip.show();
  }
  delay(100);
  }

void ws(int ind, bool datt){
  if(cv==1){r=brignes;g=0;b=0;}
  if(cv==2){r=0;g=brignes;b=0;}
  if(cv==3){r=0;g=0;b=brignes;}
  if(cv==0){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(r, g, b));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }
void ws1(int ind, bool datt){
  if(cv1==1){r=brignes;g=0;b=0;}
  if(cv1==2){r=0;g=brignes;b=0;}
  if(cv1==3){r=0;g=0;b=brignes;}
  if(cv1==0){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(r, g, b));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }  

void web(){ 
   String webPage = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
   //style
          webPage += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          webPage += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          webPage += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          webPage += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          webPage += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
    /////////////   
          webPage += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;470&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;10&#039;&gt;&quot;;
          webPage +=&quot;&lt;td&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Страница настройки Интернет часов&lt;/h1&gt;&quot;;
          webPage +=&quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;big&gt;Текущее время: &quot;;
          webPage += hh/10;webPage += hh%10; webPage +=&quot;:&quot;;webPage +=mm/10;
          webPage += mm%10; webPage +=&quot;:&quot;;webPage +=ss/10;webPage += ss%10;
          webPage += &quot;&lt;/center&gt;&quot;;
          webPage += &quot;&lt;form method=&#039;POST&#039; action=&#039;reset&#039; &gt;&quot;;
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;brignes&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Яркость 10...255 &quot;;
          webPage += &quot;&lt;br&gt;Установлено: &quot;;webPage += brignes;
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;time_utc&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Временной сдвиг UTC (30 мин)&quot;;
          webPage += &quot;&lt;br&gt;Установлено: &quot;;webPage += utc;
          webPage += &quot; (&quot;;webPage += utc*0.5;webPage += &quot; ч.)&quot;;
          
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;cv&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет цифр 0...3&quot;;
          webPage += &quot;&lt;br&gt;0 - белый, 1 - красный, 2 - зеленый, 3 - синий&quot;;
          webPage += &quot;&lt;br&gt;Установлено: &quot;;webPage += cv;

          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;cv1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет двоеточия и запятой 0...3&quot;;
          webPage += &quot;&lt;br&gt;0 - белый, 1 - красный, 2 - зеленый, 3 - синий&quot;;
          webPage += &quot;&lt;br&gt;Установлено: &quot;;webPage += cv1;
 
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          webPage += &quot;&lt;/form&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;br&gt;Заполните все ячейки формы, незаполненная ячейка формы будет сохранена как 0&quot;;
   server.send(200, &quot;text/html&quot;, webPage);//sumbit();
}

void sumbit(){ 
    if (server.args() &gt; 0 ) {
    for ( uint8_t i = 0; i &lt; server.args(); i++ ) {
      if (server.argName(i) == &quot;brignes&quot;){brignes = server.arg(i).toInt();}
      if (server.argName(i) == &quot;time_utc&quot;){utc = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv&quot;){cv = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv1&quot;){cv1 = server.arg(i).toInt();}
      }
      Serial.println(&quot;Save&quot;);
      Serial.println(brignes);
      Serial.println(utc);
      Serial.println(cv);
      Serial.println(cv1);
      EEPROM.begin(512);
      EEPROM.write(200,brignes);
      EEPROM.write(201,utc);
      EEPROM.write(202,cv);
      EEPROM.write(203,cv1);
      EEPROM.commit();
      delay(1000);ESP.restart();
      }}

void handleRoot() { 
   String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
   //style
          str += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          str += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          str += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          str += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          str += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
   ////////////       
          str += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;470&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;10&#039;&gt;&quot;;
          str +=&quot;&lt;td&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Авторизация&lt;/h1&gt;&quot;;
          str += &quot;&lt;form method=&#039;POST&#039; action=&#039;ok&#039;&gt;&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;ssid&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Имя Wi-Fi сети&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;pswd&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Пароль&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          str += &quot;&lt;/form&gt;&quot;;
server.send ( 200, &quot;text/html&quot;, str );
}      

void handleOk(){
  String ssid_ap;
  String pass_ap;
  unsigned char* buf = new unsigned char[64];
 
  String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;;
  str += &quot;&lt;body&gt;&quot;;
 
  EEPROM.begin(512);
 
  ssid_ap = server.arg(0);
  pass_ap = server.arg(1);
 
  if(ssid_ap != &quot;&quot;){
    EEPROM.write(96,ssid_ap.length());
    EEPROM.write(97,pass_ap.length());
    ssid_ap.getBytes(buf, ssid_ap.length() + 1);
    for(byte i = 0; i &lt; ssid_ap.length(); i++)
      EEPROM.write(i, buf[i]);
      
    pass_ap.getBytes(buf, pass_ap.length() + 1);
    for(byte i = 0; i &lt; pass_ap.length(); i++)
      EEPROM.write(i + 32, buf[i]);
      
    EEPROM.commit();
    EEPROM.end();
/////////////////////////
    WiFi.begin(ssid_ap, pass_ap);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED){delay (500);}
 ///////////////////////////////////////////////////////////////////////////  
    str +=&quot;&lt;big&gt;&lt;center&gt;Конфигурация сохранена в память&lt;br&gt;&quot;;
    str +=&quot;&lt;big&gt;&lt;center&gt;Уберите перемычку с D1 и перезагрузите ESP8266&lt;/p&gt;&lt;br&gt;&quot;;
    str +=&quot;&lt;big&gt;&lt;b&gt;&lt;center&gt;&quot;;
    str += WiFi.localIP().toString();
    str +=&quot;&lt;/b&gt;&lt;hr&gt;&quot;;
    str +=&quot;&lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  else {
    str += &quot;&lt;big&gt;&lt;center&gt;No WIFI Net&lt;/br&gt;\
   &lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  str += &quot;&lt;/body&gt;&lt;/html&gt;&quot;;
  server.send ( 200, &quot;text/html&quot;, str );
}

void web0() { 
   String str0 = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
          str0 += &quot;&lt;center&gt;&lt;b&gt;&lt;big&gt;После перезагрузки ESP8266 (светодиод на плате начнет мигать) перейдите по &lt;a href=&#039;./&#039;&gt;ссылке&lt;/a&gt;&quot;;
          server.send (200, &quot;text/html&quot;, str0);sumbit();
} </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-12-30T07:30:40Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2752#p2752</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2716#p2716" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#include &lt;NTPClient.h&gt;
#include &lt;ESP8266WiFi.h&gt; 
#include &lt;WiFiUdp.h&gt; 
#include &lt;Wire.h&gt; 
#include &lt;WiFiClient.h&gt;
#include &lt;ESP8266WebServer.h&gt;
#include &lt;Adafruit_NeoPixel.h&gt;
#include &lt;EEPROM.h&gt;
#ifndef APSSID
#define APSSID &quot;ESPap&quot;
#define APPSK  &quot;12345678&quot;
#endif
const char *ssid = APSSID;
const char *password = APPSK;
 ESP8266WebServer server(80);
 WiFiUDP ntpUDP;
 Adafruit_NeoPixel strip = Adafruit_NeoPixel(45, D6, NEO_GRB + NEO_KHZ400);//  трек, D6  
 NTPClient timeClient(ntpUDP, &quot;pool.ntp.org&quot;, 0,3600123);
 String date_time,date;
 unsigned long times,times1;
 int ss,mm,hh,dd,mon,yer;
 int hear10,hear0,min10,min0,sec10,sec0;
 int hhh,ss_old;
 int brignes,utc;
 int r,g,b,cv,cv1;
 byte len_ssid, len_pass;

 
 
void setup(){
  delay(1000);timeClient.begin();
  EEPROM.begin(512);
  len_ssid = EEPROM.read(96);
  len_pass = EEPROM.read(97);
 if(len_pass &gt; 64) len_pass = 0;

  brignes = EEPROM.read(200);
  utc = EEPROM.read(201);
  cv = EEPROM.read(202);
  cv1 = EEPROM.read(203);
  if(brignes&lt;10||brignes&gt;255){brignes=10;}
  timeClient.setTimeOffset(utc*1800);
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(5,INPUT_PULLUP);// D1

 /// точка доступа
  if(digitalRead(5)==LOW){
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print(&quot;AP IP address: &quot;);
  Serial.println(myIP);
  server.on(&quot;/&quot;, handleRoot);
  server.on(&quot;/ok&quot;, handleOk);
  server.begin();
  Serial.println(&quot;HTTP server started&quot;);  
  }
  else{
        // Режим STATION
      WiFi.mode( WIFI_STA);
      unsigned char* buf_ssid = new unsigned char[32];
      unsigned char* buf_pass = new unsigned char[64];
      for(byte i = 0; i &lt; len_ssid; i++) buf_ssid[i] = char(EEPROM.read(i));
      buf_ssid[len_ssid] = &#039;\x0&#039;;
      const char *ssid  = (const char*)buf_ssid;
      for(byte i = 0; i &lt; len_pass; i++) buf_pass[i] = char(EEPROM.read(i + 32));
      const char *pass  = (const char*)buf_pass;
      buf_pass[len_pass] = &#039;\x0&#039;;
      delay(2000);
      Serial.print(&quot;SSID: &quot;);
      Serial.print(ssid);
      Serial.print(&quot;   &quot;);
      Serial.print(&quot;Password: &quot;);
      Serial.println(pass);
       
     WiFi.begin(ssid, pass);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED){delay (500);Serial.print (&quot;.&quot;);}
      Serial.println();
      Serial.print(&quot;Connected to &quot;);
      Serial.println(ssid);
      Serial.print(&quot;IP address: &quot;);
      Serial.println(WiFi.localIP());
      server.on(&quot;/&quot;, web);
      server.on(&quot;/reset&quot;, web0);
      server.begin();
      Serial.println(brignes);
      Serial.println(utc);
      Serial.println(cv);
      Serial.println(cv1);
    }
  strip.begin();
}
 
void loop(){
  server.handleClient();

  if(digitalRead(5)==HIGH){
  //// Time //////////////////////////////////////////
  if(millis()-times&gt;=1000){times=millis();
   while(!timeClient.update()){timeClient.forceUpdate();}
   hh = timeClient.getHours();
   mm = timeClient.getMinutes();
   ss = timeClient.getSeconds();
  date_time = timeClient.getFormattedDate();
  int index_date = date_time.indexOf(&quot;T&quot;);
  date = date_time.substring(0, index_date);
  char charBufVar[11];date.toCharArray(charBufVar, 11);
   dd = int(charBufVar[0]-&#039;0&#039;)*10+int(charBufVar[1]-&#039;0&#039;);
   mon = int(charBufVar[3]-&#039;0&#039;)*10+int(charBufVar[4]-&#039;0&#039;);
   yer = int(charBufVar[8]-&#039;0&#039;)*10+int(charBufVar[9]-&#039;0&#039;);
  }
  Serial.print(hh/10);Serial.print(hh%10);Serial.print(&quot;:&quot;);Serial.print(mm/10);Serial.print(mm%10);Serial.print(&quot;:&quot;);Serial.print(ss/10);Serial.println(ss%10);
  //// ws2812 /////////////////////////////////////////

 if(ss&gt;10&amp;&amp;ss&lt;15){hear10=dd/10;hear0=dd%10;min10=mon/10;min0=mon%10;sec10=yer/10;sec0=yer%10;hhh=1;}
  else{hear10=hh/10;hear0=hh%10;min10=mm/10;min0=mm%10;sec10=ss/10;sec0=ss%10;hhh=0;}
 
  
  switch(hear10){   
    case 0: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,0);break;
    case 1: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 2: ws(0,1);ws(1,2);ws(2,0);ws(3,1);ws(4,1);ws(5,0);ws(6,1);break;
    case 3: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,0);ws(6,1);break;
    case 4: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;
    case 5: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
    case 6: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 7: ws(0,1);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 8: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 9: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
   case 10: ws(0,0);ws(1,0);ws(2,0);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;// &quot; &quot;
   case 11: ws(0,0);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;// &quot;t&quot;
   case 12: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;P&quot;
   case 13: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;H&quot;
   case 14: ws(0,1);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;// &quot;C&quot;
   case 15: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;// градус
    }
   switch(hear0){   
    case 0: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,0);break;
    case 1: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 2: ws(7,1);ws(8,2);ws(9,0);ws(10,1);ws(11,1);ws(12,0);ws(13,1);break;
    case 3: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,0);ws(13,1);break;
    case 4: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;
    case 5: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
    case 6: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 7: ws(7,1);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 8: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 9: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
   case 10: ws(7,0);ws(8,0);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;// &quot; &quot;
   case 11: ws(7,0);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;// &quot;t&quot;
   case 12: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;P&quot;
   case 13: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;H&quot;
   case 14: ws(7,1);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;// &quot;C&quot;
   case 15: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;// градус   
    } 

/// двоеточние и запятая
   if(hhh==0){
   if(ss!=ss_old){times1=millis();}  
   if(millis()-times1&lt;500){ws1(14,1);ws1(15,1);ws1(30,1); digitalWrite(2, HIGH);}
   else{ws1(14,0);ws1(15,0);ws1(30,0); digitalWrite(2, LOW);}
   ss_old=ss;}

   if(hhh==1){ws1(14,1);ws1(15,0);ws1(30,1); digitalWrite(2, LOW);}
    
   switch(min10){   
    case 0: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,0);break;
    case 1: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;    
    case 2: ws(16,1);ws(17,2);ws(18,0);ws(19,1);ws(20,1);ws(21,0);ws(22,1);break;
    case 3: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,0);ws(22,1);break;
    case 4: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;
    case 5: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
    case 6: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 7: ws(16,1);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;
    case 8: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 9: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
   case 10: ws(16,0);ws(17,0);ws(18,0);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;// &quot; &quot; 
   case 11: ws(16,0);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;// &quot;t&quot; 
   case 12: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;P&quot;
   case 13: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;H&quot;
   case 14: ws(16,1);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;// &quot;C&quot;
   case 15: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;// градус  
    }
   switch(min0){   
    case 0: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,0);break;
    case 1: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 2: ws(23,1);ws(24,2);ws(25,0);ws(26,1);ws(27,1);ws(28,0);ws(29,1);break;
    case 3: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,0);ws(29,1);break;
    case 4: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;
    case 5: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
    case 6: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 7: ws(23,1);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 8: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 9: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
   case 10: ws(23,0);ws(24,0);ws(25,0);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;// &quot; &quot; 
   case 11: ws(23,0);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;// &quot;t&quot; 
   case 12: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;P&quot;
   case 13: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;H&quot;
   case 14: ws(23,1);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;// &quot;C&quot;
   case 15: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;// градус  
    } 

    

   switch(sec10){   
    case 0: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,0);break;
    case 1: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 2: ws(31,1);ws(32,2);ws(33,0);ws(34,1);ws(35,1);ws(36,0);ws(37,1);break;
    case 3: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,0);ws(37,1);break;
    case 4: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;
    case 5: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
    case 6: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 7: ws(31,1);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 8: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 9: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
   case 10: ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;// &quot; &quot; 
   case 11: ws(31,0);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;// &quot;t&quot; 
   case 12: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;P&quot;
   case 13: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;H&quot;
   case 14: ws(31,1);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;// &quot;C&quot;
   case 15: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;// градус    
    }
   switch(sec0){   
    case 0: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,0);break;
    case 1: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 2: ws(38,1);ws(39,2);ws(40,0);ws(41,1);ws(42,1);ws(43,0);ws(44,1);break;
    case 3: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,0);ws(44,1);break;
    case 4: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;
    case 5: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
    case 6: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 7: ws(38,1);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 8: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 9: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
   case 10: ws(38,0);ws(39,0);ws(40,0);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;// &quot; &quot; 
   case 11: ws(38,0);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;// &quot;t&quot; 
   case 12: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;P&quot;
   case 13: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;H&quot;
   case 14: ws(38,1);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;// &quot;C&quot;
   case 15: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;// градус    
    } 
  strip.show();
  }
  delay(100);
  }

void ws(int ind, bool datt){
  if(cv==1){r=brignes;g=0;b=0;}
  if(cv==2){r=0;g=brignes;b=0;}
  if(cv==3){r=0;g=0;b=brignes;}
  if(cv==0){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(r, g, b));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }
void ws1(int ind, bool datt){
  if(cv1==1){r=brignes;g=0;b=0;}
  if(cv1==2){r=0;g=brignes;b=0;}
  if(cv1==3){r=0;g=0;b=brignes;}
  if(cv1==0){r=brignes;g=brignes;b=brignes;}
  if(datt==1){strip.setPixelColor(ind, strip.Color(r, g, b));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }  

void web(){ 
   String webPage = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
   //style
          webPage += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          webPage += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          webPage += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          webPage += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          webPage += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          webPage += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
    /////////////   
          webPage += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;470&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;10&#039;&gt;&quot;;
          webPage +=&quot;&lt;td&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Страница настройки Интернет часов&lt;/h1&gt;&quot;;
          webPage +=&quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;big&gt;Текущее время: &quot;;
          webPage += hh/10;webPage += hh%10; webPage +=&quot;:&quot;;webPage +=mm/10;
          webPage += mm%10; webPage +=&quot;:&quot;;webPage +=ss/10;webPage += ss%10;
          webPage += &quot;&lt;/center&gt;&quot;;
          webPage += &quot;&lt;form method=&#039;POST&#039; action=&#039;reset&#039; &gt;&quot;;
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;brignes&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Яркость 10...255 &quot;;
          webPage += &quot;&lt;br&gt;Установлено: &quot;;webPage += brignes;
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;time_utc&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Временной сдвиг UTC (30 мин)&quot;;
          webPage += &quot;&lt;br&gt;Установлено: &quot;;webPage += utc;
          webPage += &quot; (&quot;;webPage += utc*0.5;webPage += &quot; ч.)&quot;;
          
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;cv&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет цифр 0...3&quot;;
          webPage += &quot;&lt;br&gt;0 - белый, 1 - красный, 2 - зеленый, 3 - синий&quot;;
          webPage += &quot;&lt;br&gt;Установлено: &quot;;webPage += cv;

          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;cv1&#039;  autocomplete=&#039;off&#039; maxlength=&#039;3&#039; size=&#039;1&#039;&gt; Цвет двоеточия и запятой 0...3&quot;;
          webPage += &quot;&lt;br&gt;0 - белый, 1 - красный, 2 - зеленый, 3 - синий&quot;;
          webPage += &quot;&lt;br&gt;Установлено: &quot;;webPage += cv1;
 
          webPage += &quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          webPage += &quot;&lt;/form&gt;&quot;;
          webPage += &quot;&lt;center&gt;&lt;br&gt;Заполните все ячейки формы, незаполненная ячейка формы будет сохранена как 0&quot;;
   server.send(200, &quot;text/html&quot;, webPage);//sumbit();
}

void sumbit(){ 
    if (server.args() &gt; 0 ) {
    for ( uint8_t i = 0; i &lt; server.args(); i++ ) {
      if (server.argName(i) == &quot;brignes&quot;){brignes = server.arg(i).toInt();}
      if (server.argName(i) == &quot;time_utc&quot;){utc = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv&quot;){cv = server.arg(i).toInt();}
      if (server.argName(i) == &quot;cv1&quot;){cv1 = server.arg(i).toInt();}
      }
      Serial.println(&quot;Save&quot;);
      Serial.println(brignes);
      Serial.println(utc);
      Serial.println(cv);
      Serial.println(cv1);
      EEPROM.begin(512);
      EEPROM.write(200,brignes);
      EEPROM.write(201,utc);
      EEPROM.write(202,cv);
      EEPROM.write(203,cv1);
      EEPROM.commit();
      delay(1000);ESP.restart();
      }}

void handleRoot() { 
   String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
   //style
          str += &quot;&lt;head&gt;&lt;style&gt;.tab1 {background-color:#F5F5F5;border-radius: 5px;margin: auto;}&quot;;
          str += &quot;#menu1{list-style:none; width:100%; padding:0 0 0 0 ; margin: 0 0 0 0;background: #999;}&quot;;
          str += &quot;#menu1 li{float:left; font:bold 14px Arial;text-shadow: 1px 1px 0px #000;}&quot;;
          str += &quot;#menu1 a{color:#fff; display:block; height:36px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;#menu1 a:hover{color:#fff; background:#555;}&quot;;
          str += &quot;#menu1 b{color:#fff; display:block; height:25px; line-height:36px; padding:10px 10px 10px 10px; background:#4682B4; text-decoration:none;}&quot;;
          str += &quot;&lt;/style&gt;&lt;/head&gt;&quot;;
   ////////////       
          str += &quot;&lt;TABLE class=&#039;tab1&#039; align=&#039;center&#039; width=&#039;470&#039; BORDER=&#039;1&#039; cellspacing=&#039;0&#039; cellpadding=&#039;10&#039;&gt;&quot;;
          str +=&quot;&lt;td&gt;&lt;h1&gt;&lt;center&gt;ESP8266&lt;br&gt;Авторизация&lt;/h1&gt;&quot;;
          str += &quot;&lt;form method=&#039;POST&#039; action=&#039;ok&#039;&gt;&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;ssid&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Имя Wi-Fi сети&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;input name=&#039;pswd&#039;  autocomplete=&#039;off&#039;&gt;&lt;big&gt; Пароль&quot;;
          str += &quot;&lt;tr&gt;&lt;td&gt;&lt;center&gt;&lt;input type=SUBMIT value=&#039;Сохранить настройки&#039;&gt;&quot;;
          str += &quot;&lt;/form&gt;&quot;;
server.send ( 200, &quot;text/html&quot;, str );
}      

void handleOk(){
  String ssid_ap;
  String pass_ap;
  unsigned char* buf = new unsigned char[64];
 
  String str = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;;
  str += &quot;&lt;body&gt;&quot;;
 
  EEPROM.begin(512);
 
  ssid_ap = server.arg(0);
  pass_ap = server.arg(1);
 
  if(ssid_ap != &quot;&quot;){
    EEPROM.write(96,ssid_ap.length());
    EEPROM.write(97,pass_ap.length());
    ssid_ap.getBytes(buf, ssid_ap.length() + 1);
    for(byte i = 0; i &lt; ssid_ap.length(); i++)
      EEPROM.write(i, buf[i]);
      
    pass_ap.getBytes(buf, pass_ap.length() + 1);
    for(byte i = 0; i &lt; pass_ap.length(); i++)
      EEPROM.write(i + 32, buf[i]);
      
    EEPROM.commit();
    EEPROM.end();
   
    str +=&quot;&lt;big&gt;&lt;center&gt;Конфигурация сохранена в память&lt;/br&gt;\
   &lt;big&gt;&lt;center&gt;Уберите перемычку с D1 и перезагрузите ESP8266&lt;/p&gt;&lt;/br&gt;&lt;/br&gt;\
   &lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  else {
    str += &quot;&lt;big&gt;&lt;center&gt;No WIFI Net&lt;/br&gt;\
   &lt;a href=\&quot;/\&quot;&gt;Return&lt;/a&gt; to settings page&lt;/br&gt;&quot;;
  }
  str += &quot;&lt;/body&gt;&lt;/html&gt;&quot;;
  server.send ( 200, &quot;text/html&quot;, str );
}

void web0() { 
   String str0 = &quot;&lt;meta charset=&#039;utf-8&#039;&gt;&lt;meta name=&#039;viewport&#039; content=&#039;width=480, user-scalable=no&#039; /&gt;&quot;;
          str0 += &quot;&lt;center&gt;&lt;b&gt;&lt;big&gt;После перезагрузки ESP8266 (светодиод на плате начнет мигать) перейдите по &lt;a href=&#039;./&#039;&gt;ссылке&lt;/a&gt;&quot;;
          server.send (200, &quot;text/html&quot;, str0);sumbit();
} </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-12-27T08:23:40Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2716#p2716</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2712#p2712" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/9ba6659469c653f6388d0a25ef06e637.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/9ba6659469c653f6388d0a25ef06e637.jpg" /></span> <span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/99a3ca75921e8bd80f6f136096f00d8a.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/99a3ca75921e8bd80f6f136096f00d8a.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[Demon65536]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=943</uri>
			</author>
			<updated>2020-12-26T11:31:48Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2712#p2712</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2711#p2711" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#include &lt;NTPClient.h&gt;
#include &lt;ESP8266WiFi.h&gt; 
#include &lt;WiFiUdp.h&gt; 
#include &lt;Wire.h&gt; 
#include &lt;Adafruit_NeoPixel.h&gt;
 WiFiUDP ntpUDP;
      /////////////////  https://www.ntppool.org/zone/@ - другие сервера  /////////////////////////////
      ///////////////// для России - ru.pool.ntp.org //////////////////////////////////////////////////
 NTPClient timeClient(ntpUDP, &quot;pool.ntp.org&quot;, 21600,3600123);// 21600 - временной сдвиг в секундах от UTC 
 Adafruit_NeoPixel strip = Adafruit_NeoPixel(45, D6, NEO_GRB + NEO_KHZ400);//  трек, D6  
 const char *ssid = &quot;Keenetic-9009&quot;; 
 const char *password = &quot;32481975&quot;;
 String date_time,date;
 unsigned long times,times1;
 int ss,mm,hh,dd,mon,yer,brignes = 250;
 int hear10,hear0,min10,min0,sec10,sec0;
 int hhh,ss_old;
 
void setup(){
  Serial.begin(9600);strip.begin();
  WiFi.begin(ssid, password);
  while ( WiFi.status() != WL_CONNECTED ){delay (500);Serial.print (&quot;.&quot;);timeClient.begin();}
  Serial.print(&quot;ok&quot;);
  pinMode(2, OUTPUT);
}
 
void loop(){
  
  //// Time //////////////////////////////////////////
  if(millis()-times&gt;=1000){times=millis();
   while(!timeClient.update()){timeClient.forceUpdate();}
   hh = timeClient.getHours();
   mm = timeClient.getMinutes();
   ss = timeClient.getSeconds();
  date_time = timeClient.getFormattedDate();
  int index_date = date_time.indexOf(&quot;T&quot;);
  date = date_time.substring(0, index_date);
  char charBufVar[11];date.toCharArray(charBufVar, 11);
   dd = int(charBufVar[0]-&#039;0&#039;)*10+int(charBufVar[1]-&#039;0&#039;);
   mon = int(charBufVar[3]-&#039;0&#039;)*10+int(charBufVar[4]-&#039;0&#039;);
   yer = int(charBufVar[8]-&#039;0&#039;)*10+int(charBufVar[9]-&#039;0&#039;);
  }
  //// ws2812 /////////////////////////////////////////

 if(ss&gt;10&amp;&amp;ss&lt;15){hear10=dd/10;hear0=dd%10;min10=mon/10;min0=mon%10;sec10=yer/10;sec0=yer%10;hhh=1;}
  else{hear10=hh/10;hear0=hh%10;min10=mm/10;min0=mm%10;sec10=ss/10;sec0=ss%10;hhh=0;}
 
  
  switch(hear10){   
    case 0: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,0);break;
    case 1: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 2: ws(0,1);ws(1,2);ws(2,0);ws(3,1);ws(4,1);ws(5,0);ws(6,1);break;
    case 3: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,0);ws(6,1);break;
    case 4: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;
    case 5: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
    case 6: ws(0,1);ws(1,0);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 7: ws(0,1);ws(1,1);ws(2,1);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;
    case 8: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;
    case 9: ws(0,1);ws(1,1);ws(2,1);ws(3,1);ws(4,0);ws(5,1);ws(6,1);break;
   case 10: ws(0,0);ws(1,0);ws(2,0);ws(3,0);ws(4,0);ws(5,0);ws(6,0);break;// &quot; &quot;
   case 11: ws(0,0);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;// &quot;t&quot;
   case 12: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;P&quot;
   case 13: ws(0,0);ws(1,1);ws(2,1);ws(3,0);ws(4,1);ws(5,1);ws(6,1);break;// &quot;H&quot;
   case 14: ws(0,1);ws(1,0);ws(2,0);ws(3,1);ws(4,1);ws(5,1);ws(6,1);break;// &quot;C&quot;
   case 15: ws(0,1);ws(1,1);ws(2,0);ws(3,0);ws(4,0);ws(5,1);ws(6,1);break;// градус
    }
   switch(hear0){   
    case 0: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,0);break;
    case 1: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 2: ws(7,1);ws(8,2);ws(9,0);ws(10,1);ws(11,1);ws(12,0);ws(13,1);break;
    case 3: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,0);ws(13,1);break;
    case 4: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;
    case 5: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
    case 6: ws(7,1);ws(8,0);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 7: ws(7,1);ws(8,1);ws(9,1);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;
    case 8: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;
    case 9: ws(7,1);ws(8,1);ws(9,1);ws(10,1);ws(11,0);ws(12,1);ws(13,1);break;
   case 10: ws(7,0);ws(8,0);ws(9,0);ws(10,0);ws(11,0);ws(12,0);ws(13,0);break;// &quot; &quot;
   case 11: ws(7,0);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;// &quot;t&quot;
   case 12: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;P&quot;
   case 13: ws(7,0);ws(8,1);ws(9,1);ws(10,0);ws(11,1);ws(12,1);ws(13,1);break;// &quot;H&quot;
   case 14: ws(7,1);ws(8,0);ws(9,0);ws(10,1);ws(11,1);ws(12,1);ws(13,1);break;// &quot;C&quot;
   case 15: ws(7,1);ws(8,1);ws(9,0);ws(10,0);ws(11,0);ws(12,1);ws(13,1);break;// градус   
    } 

/// двоеточние и запятая
   if(hhh==0){
   if(ss!=ss_old){times1=millis();}  
   if(millis()-times1&lt;500){ws(14,1);ws(15,1);ws(30,1); digitalWrite(2, HIGH);}
   else{ws(14,0);ws(15,0);ws(30,0); digitalWrite(2, LOW);}
   ss_old=ss;}

   if(hhh==1){ws(14,1);ws(15,0);ws(30,1); digitalWrite(2, LOW);}
    
   switch(min10){   
    case 0: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,0);break;
    case 1: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;    
    case 2: ws(16,1);ws(17,2);ws(18,0);ws(19,1);ws(20,1);ws(21,0);ws(22,1);break;
    case 3: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,0);ws(22,1);break;
    case 4: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;
    case 5: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
    case 6: ws(16,1);ws(17,0);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 7: ws(16,1);ws(17,1);ws(18,1);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;
    case 8: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;
    case 9: ws(16,1);ws(17,1);ws(18,1);ws(19,1);ws(20,0);ws(21,1);ws(22,1);break;
   case 10: ws(16,0);ws(17,0);ws(18,0);ws(19,0);ws(20,0);ws(21,0);ws(22,0);break;// &quot; &quot; 
   case 11: ws(16,0);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;// &quot;t&quot; 
   case 12: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;P&quot;
   case 13: ws(16,0);ws(17,1);ws(18,1);ws(19,0);ws(20,1);ws(21,1);ws(22,1);break;// &quot;H&quot;
   case 14: ws(16,1);ws(17,0);ws(18,0);ws(19,1);ws(20,1);ws(21,1);ws(22,1);break;// &quot;C&quot;
   case 15: ws(16,1);ws(17,1);ws(18,0);ws(19,0);ws(20,0);ws(21,1);ws(22,1);break;// градус  
    }
   switch(min0){   
    case 0: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,0);break;
    case 1: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 2: ws(23,1);ws(24,2);ws(25,0);ws(26,1);ws(27,1);ws(28,0);ws(29,1);break;
    case 3: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,0);ws(29,1);break;
    case 4: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;
    case 5: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
    case 6: ws(23,1);ws(24,0);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 7: ws(23,1);ws(24,1);ws(25,1);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;
    case 8: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;
    case 9: ws(23,1);ws(24,1);ws(25,1);ws(26,1);ws(27,0);ws(28,1);ws(29,1);break;
   case 10: ws(23,0);ws(24,0);ws(25,0);ws(26,0);ws(27,0);ws(28,0);ws(29,0);break;// &quot; &quot; 
   case 11: ws(23,0);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;// &quot;t&quot; 
   case 12: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;P&quot;
   case 13: ws(23,0);ws(24,1);ws(25,1);ws(26,0);ws(27,1);ws(28,1);ws(29,1);break;// &quot;H&quot;
   case 14: ws(23,1);ws(24,0);ws(25,0);ws(26,1);ws(27,1);ws(28,1);ws(29,1);break;// &quot;C&quot;
   case 15: ws(23,1);ws(24,1);ws(25,0);ws(26,0);ws(27,0);ws(28,1);ws(29,1);break;// градус  
    } 

    

   switch(sec10){   
    case 0: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,0);break;
    case 1: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 2: ws(31,1);ws(32,2);ws(33,0);ws(34,1);ws(35,1);ws(36,0);ws(37,1);break;
    case 3: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,0);ws(37,1);break;
    case 4: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;
    case 5: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
    case 6: ws(31,1);ws(32,0);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 7: ws(31,1);ws(32,1);ws(33,1);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;
    case 8: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;
    case 9: ws(31,1);ws(32,1);ws(33,1);ws(34,1);ws(35,0);ws(36,1);ws(37,1);break;
   case 10: ws(31,0);ws(32,0);ws(33,0);ws(34,0);ws(35,0);ws(36,0);ws(37,0);break;// &quot; &quot; 
   case 11: ws(31,0);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;// &quot;t&quot; 
   case 12: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;P&quot;
   case 13: ws(31,0);ws(32,1);ws(33,1);ws(34,0);ws(35,1);ws(36,1);ws(37,1);break;// &quot;H&quot;
   case 14: ws(31,1);ws(32,0);ws(33,0);ws(34,1);ws(35,1);ws(36,1);ws(37,1);break;// &quot;C&quot;
   case 15: ws(31,1);ws(32,1);ws(33,0);ws(34,0);ws(35,0);ws(36,1);ws(37,1);break;// градус    
    }
   switch(sec0){   
    case 0: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,0);break;
    case 1: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 2: ws(38,1);ws(39,2);ws(40,0);ws(41,1);ws(42,1);ws(43,0);ws(44,1);break;
    case 3: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,0);ws(44,1);break;
    case 4: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;
    case 5: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
    case 6: ws(38,1);ws(39,0);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 7: ws(38,1);ws(39,1);ws(40,1);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;
    case 8: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;
    case 9: ws(38,1);ws(39,1);ws(40,1);ws(41,1);ws(42,0);ws(43,1);ws(44,1);break;
   case 10: ws(38,0);ws(39,0);ws(40,0);ws(41,0);ws(42,0);ws(43,0);ws(44,0);break;// &quot; &quot; 
   case 11: ws(38,0);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;// &quot;t&quot; 
   case 12: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;P&quot;
   case 13: ws(38,0);ws(39,1);ws(40,1);ws(41,0);ws(42,1);ws(43,1);ws(44,1);break;// &quot;H&quot;
   case 14: ws(38,1);ws(39,0);ws(40,0);ws(41,1);ws(42,1);ws(43,1);ws(44,1);break;// &quot;C&quot;
   case 15: ws(38,1);ws(39,1);ws(40,0);ws(41,0);ws(42,0);ws(43,1);ws(44,1);break;// градус    
    } 
  strip.show();
  delay(100);
  }

 void ws(int ind, bool datt){
  if(datt==1){strip.setPixelColor(ind, strip.Color(brignes, brignes, brignes));}
  if(datt==0){strip.setPixelColor(ind, strip.Color(0, 0, 0));}
  }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2020-12-25T14:06:38Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2711#p2711</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2709#p2709" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/ddbf07d30798572700b979b509c088b3.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/ddbf07d30798572700b979b509c088b3.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[Demon65536]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=943</uri>
			</author>
			<updated>2020-12-25T13:13:13Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2709#p2709</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2702#p2702" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/f965e66d6f7ff9795007123c797e4411.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/f965e66d6f7ff9795007123c797e4411.jpg" /></span> <br />18 Часов<br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/e2bd262dc8451618e3d0e3e480d68221.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/e2bd262dc8451618e3d0e3e480d68221.jpg" /></span> <br />23 Число</p>]]></content>
			<author>
				<name><![CDATA[Demon65536]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=943</uri>
			</author>
			<updated>2020-12-23T12:41:35Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2702#p2702</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2701#p2701" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/fab2409d43c507cf5574ab04d2278e74.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/fab2409d43c507cf5574ab04d2278e74.jpg" /></span> <span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/152e6852a8a4f8fc7955887afcbd31c5.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/152e6852a8a4f8fc7955887afcbd31c5.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[Demon65536]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=943</uri>
			</author>
			<updated>2020-12-23T12:16:28Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2701#p2701</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2699#p2699" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/0add8deccb01cab62f39ad860f01e738.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/0add8deccb01cab62f39ad860f01e738.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[Demon65536]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=943</uri>
			</author>
			<updated>2020-12-20T15:19:14Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2699#p2699</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: ESP8266+WS2811 = часы]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=2698#p2698" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/06920cd0f13404482ba942075c4b1866.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/06920cd0f13404482ba942075c4b1866.jpg" /></span><br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/676546606ee79efb5c0f0c95834f7e0f.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/676546606ee79efb5c0f0c95834f7e0f.jpg" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/12/dd2020b816115ac4fa2d67ffa7e87132.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2020/12/dd2020b816115ac4fa2d67ffa7e87132.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[Demon65536]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=943</uri>
			</author>
			<updated>2020-12-20T15:16:50Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=2698#p2698</id>
		</entry>
</feed>
