{"id":262087,"date":"2015-07-23T04:53:02","date_gmt":"2015-07-23T00:53:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=262087"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=262087","title":{"rendered":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0440\u0435\u043b\u0435 \u043d\u0430 \u0410\u0440\u0434\u0443\u0438\u043d\u043e"},"content":{"rendered":"<p> \t\t\u0418\u0434\u0435\u044f \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0430, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0432 \u0434\u043e\u043c\u0435:<br \/>  1. \u041a\u043e\u0442\u0435\u043b \u043e\u0442\u043e\u043f\u043b\u0435\u043d\u0438\u044f.<br \/>  2. \u041d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043e\u0439\u043b\u0435\u0440 \u0434\u043b\u044f \u0432\u043e\u0434\u043e\u0441\u043d\u0430\u0431\u0436\u0435\u043d\u0438\u044f.<br \/>  3. \u041d\u0430\u0441\u043e\u0441 \u0432 \u0441\u043a\u0432\u0430\u0436\u0438\u043d\u0435.<\/p>\n<p>  \u0427\u0438\u0442\u0430\u043b \u043c\u0430\u0441\u0441\u0443 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u0442\u0435\u043c\u0443 \u0425\u0425 \u043d\u0430 \u0410\u0440\u0434\u0443\u0438\u043d\u043e, \u0447\u0438\u0442\u0430\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0435\u0442\u043a\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043c\u044b\u0441\u043b\u044c \u00ab\u0445\u043e\u0447\u0443 \u0410\u0440\u0434\u0443\u0438\u043d\u043e\u00bb. \u041f\u0440\u0438\u043a\u0438\u043d\u0443\u0432 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b \u044f\u0432\u043d\u0443\u044e \u0432\u044b\u0433\u043e\u0434\u0443 \u043e\u0442 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0410\u0440\u0434\u0443\u0438\u043d\u043e. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f47\/5e3\/d1e\/f475e3d1ebb24a6ebee7ee1bf41d74e9.jpg\" alt=\"image\"\/><\/p>\n<h4>\u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043c\u0438\u043d\u0438\u043c\u0443\u043c:<\/h4>\n<p>  1. 4 \u0440\u0435\u043b\u0435, \u0447\u0430\u0441\u044b (RTC), \u0416\u041a \u044d\u043a\u0440\u0430\u043d;<br \/>  2. \u0420\u0435\u0436\u0438\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u043b\u0435: \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0441\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440, \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435;<br \/>  3. \u041a\u043d\u043e\u043f\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0440\u0435\u043b\u0435;<\/p>\n<p>  \u0412 \u0434\u043e\u043c\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0434\u0432\u0443\u0445\u0442\u0430\u0440\u0438\u0444\u043d\u044b\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u0439\u043b\u0435\u0440 \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0435\u0442 \u0432\u043e\u0434\u0443 \u0441 23 \u0434\u043e 7 \u0443\u0442\u0440\u0430. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u0442\u043e\u043f\u043b\u0435\u043d\u0438\u0435: \u0434\u0432\u0430 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0442\u044d\u043d\u043e\u0432, \u043f\u043e \u043c\u043e\u0435\u0439 \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0447\u044c\u044e. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043e\u0439 \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u043e\u0434\u043d\u043e\u0435 \u043d\u0430 \u0448\u0442\u0430\u0442\u043d\u043e\u043c \u043f\u0443\u043b\u044c\u0442\u0435. \u041e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0430 \u043d\u0430\u0441\u043e\u0441, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043d\u0430\u0431\u043e\u0440 \u0435\u043c\u043a\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0430\u0447\u043a\u0443 \u0441\u043a\u0432\u0430\u0436\u0438\u043d\u044b, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0440\u0435\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c: \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438, \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u041f\u041a.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u0432\u0441\u0435 \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u043e\u0442\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c 3 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b: \u0434\u0435\u043d\u044c \u0441 7 \u0434\u043e 23 \u0432 \u0446\u0435\u043b\u044f\u0445 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438, \u043d\u043e\u0447\u044c, \u0440\u0430\u0437\u043e\u0433\u0440\u0435\u0432 \u043a \u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u0441 5..6 \u0434\u043e 7. \u041d\u043e \u043f\u043e\u043a\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043c\u0438\u043d\u0438\u043c\u0443\u043c.<\/p>\n<h4>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c:<\/h4>\n<p>  \u041f\u0440\u0438 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0431\u044b\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0448\u0435\u0432\u043e\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u043b\u0445\u043e\u0437. \u041d\u0430 \u0410\u043b\u0438 \u0431\u044b\u043b\u0438 \u0437\u0430\u043a\u0430\u0437\u0430\u043d\u044b \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 \u0434\u043b\u044f arduino Uno R3, 4 \u0440\u0435\u043b\u0435\u0439\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0436\u043a-\u044d\u043a\u0440\u0430\u043d I2C 20*4, \u0447\u0430\u0441\u044b RTC DS1307 I2C, \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0438 \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u0438 Dht21.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u0438\u0434\u0435\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c. \u041e\u0431\u0449\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0443\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0443\u0433\u043b\u0430 \u0438\u0437:<br \/>  <a href=\"http:\/\/habrahabr.ru\/company\/masterkit\/blog\/257747\/\">http:\/\/habrahabr.ru\/company\/masterkit\/blog\/257747\/<\/a><br \/>  <a href=\"http:\/\/arduino.ru\/Reference\">http:\/\/arduino.ru\/Reference<\/a><\/p>\n<p>  \u041a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\u0443, \u043d\u0435 \u0432 \u0447\u0435\u043c. \u0412\u043e Fritzing \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. <\/p>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u043b\u0435 \u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435 \u0432\u044b\u0437\u0432\u0430\u043b\u043e, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b. \u042d\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435. \u0412 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0416\u041a \u044d\u043a\u0440\u0430\u043d\u0430 \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 <a href=\"https:\/\/arduino-info.wikispaces.com\/LCD-Blue-I2C#v3\">https:\/\/arduino-info.wikispaces.com\/LCD-Blue-I2C#v3<\/a>. \u041f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u0435\u0447\u043d\u044b\u043c \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u043c, \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb \u044d\u043a\u0440\u0430\u043d \u043d\u0435 \u0433\u043e\u0440\u0435\u043b \u0441\u043e\u0432\u0441\u0435\u043c, \u0447\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u043b \u0443 \u043c\u0435\u043d\u044f \u043b\u0435\u0433\u043a\u043e\u0435 \u0437\u0430\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e.<\/p>\n<p>  \u0427\u0430\u0441\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0443, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043f\u043e \u0442\u0438\u043f\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 <a href=\"http:\/\/zelectro.cc\/RTC_DS1307_arduino\">http:\/\/zelectro.cc\/RTC_DS1307_arduino<\/a><\/p>\n<p>  \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0447\u0430\u0441\u043e\u0432 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b. \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0435\u0441\u043b\u0438 \u0434\u0430\u0442\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 2000 \u0433\u043e\u0434\u0430 \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 2100, \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0435\u043d\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0447\u0430\u0441\u043e\u0432.<\/p>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u043a \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c\u0443 \u0432\u0445\u043e\u0434\u0443 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <a href=\"http:\/\/arduino.net.ua\/Arduino_articles\/Arduino_proekty\/Podkljuchenie%20knopok%20k%20odnomu%20analogovomu%20vhodu\/\"> http:\/\/arduino.net.ua\/Arduino_articles\/Arduino_proekty\/Podkljuchenie%20knopok%20k%20odnomu%20analogovomu%20vhodu\/<\/a>, \u0442\u0430\u043c \u0436\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b \u00abpinMode (A2, INPUT_PULLUP);\u00bb<\/p>\n<p>  \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u00ab\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u043d\u043e\u0435\u00bb: \u043a\u043d\u043e\u043f\u043a\u0438 \u00ab\u043c\u0435\u043d\u044e\u00bb, &quot;+&quot;,&quot;-&quot;, \u00abset\u00bb.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 (\u0441 \u0444\u043e\u0442\u043e)<\/b><\/p>\n<div class=\"spoiler_text\">\u0412\u0437\u044f\u043b \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u044b\u0439 \u0449\u0438\u0442\u043e\u043a \u043d\u0430 6 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/bf5\/215\/358\/bf5215358ee842f9add7d6ba59357a49.jpg\" alt=\"image\"\/><\/p>\n<p>  \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u044b\u0435 \u0441\u0442\u043e\u0439\u043a\u0438 \u043f\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d1e\/3ef\/e78\/d1e3efe782684d50837ab0b07d011ee0.jpg\" alt=\"image\"\/><\/p>\n<p>  \u041f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043b \u0440\u0435\u043b\u0435, \u0447\u0430\u0441\u044b, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/171\/7ee\/052\/1717ee0529cc41c497af99de24183d8a.jpg\" alt=\"image\"\/><\/p>\n<p>  \u041e\u0442 \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430 \u0432\u0437\u044f\u043b \u043f\u0430\u0440\u0443 \u0432\u0430\u043b\u0438\u043a\u043e\u0432 \u0438 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0432\u0442\u0443\u043b\u043a\u0443. \u0412\u0442\u0443\u043b\u043a\u0430 \u043f\u0440\u0438\u043a\u043b\u0435\u0435\u043d\u0430 \u043d\u0430 \u0434\u0432\u0443\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u043a\u043e\u0442\u0447. \u041d\u0430 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u0435\u043f\u0438\u0442\u044c\u0441\u044f \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u043b\u0430\u0442\u0430, \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435.<\/p>\n<p>  \u0411\u043b\u043e\u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0432\u0437\u044f\u043b \u043e\u0442 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430 Dlink, 5\u0412 2\u0410, \u043b\u043e\u043c\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0432\u0443 \u043d\u0435 \u0441\u0442\u0430\u043b \u0437\u0430\u043f\u0430\u044f\u043b \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u043d\u0435\u0433\u043e USB \u043f\u0440\u043e\u0432\u043e\u0434:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cd0\/8fc\/778\/cd08fc7781b14cb8b8f57c62d1312600.jpg\" alt=\"image\"\/><\/p>\n<p>  \u0412\u044b\u0440\u0435\u0437\u0430\u043b \u0438\u0437 \u043f\u043b\u0430\u0441\u0442\u0438\u043a\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0434\u043b\u044f \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/32f\/ef2\/18a\/32fef218a54d4477b834e755510ac448.jpg\" alt=\"image\"\/><\/p>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u044d\u043a\u0440\u0430\u043d. \u0417\u0430\u043a\u0440\u0435\u043f\u0438\u043b \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u044b\u043c\u0438 \u0441\u0442\u043e\u0439\u043a\u0430\u043c\u0438, \u043f\u043e\u0434 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 \u2014 \u0432\u0438\u043d\u0442. \u0421\u0442\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u044b \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u0441 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u0440\u044b\u0448\u043a\u0430 \u0449\u0438\u0442\u043a\u0430, \u043f\u0440\u0438\u0434\u0430\u0432\u0430\u044f \u0436\u0435\u0441\u0442\u043a\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u0412\u0442\u0443\u043b\u043a\u0430 \u043d\u0430 \u0431\u043b\u043e\u043a\u0435 \u0440\u0435\u043b\u0435 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0434\u0430\u0432\u043b\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u044b \u0432\u043d\u0438\u0437 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043e\u043a.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/08a\/2f0\/5a8\/08a2f05a8bbc45acac35a81ed8bdeb16.jpg\" alt=\"image\"\/><\/p>\n<p>  \u041a\u043d\u043e\u043f\u043a\u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c \u0432\u0445\u043e\u0434\u0430\u043c, \u043d\u043e \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043d\u0430\u0448\u0435\u043b \u043c\u043e\u0434\u0443\u043b\u044c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u043e\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043e\u0448\u0435\u043b \u043a\u0430\u043a \u0440\u043e\u0434\u043d\u043e\u0439 (<a href=\"http:\/\/monitor.espec.ws\/files\/klava_931c_290.gif\">\u0441\u0445\u0435\u043c\u0430 \u043a\u043d\u043e\u043f\u043e\u043a \u043e\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430<\/a>).<\/p>\n<p>  \u041a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u043f\u0440\u0438\u043a\u043b\u0435\u0438\u043b \u043d\u0430 \u0434\u0432\u0443\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u043a\u043e\u0442\u0447 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043a\u043b\u0430\u0434\u043a\u0443, \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043f\u043b\u0430\u0442\u0443 \u043d\u0430\u0434 \u043f\u0440\u0430\u0432\u044b\u043c \u043d\u0438\u0436\u043d\u0438\u043c \u0432\u0438\u043d\u0442\u043e\u043c. \u041a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u044e \u0441\u043f\u0438\u0447\u043a\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u044f. \u0412 \u0438\u0434\u0435\u0430\u043b\u0435 \u043d\u0430\u0434\u043e \u0440\u0430\u0441\u0441\u0432\u0435\u0440\u043b\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u044f \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0443\u0434\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u043b\u043a\u0430\u0442\u0435\u043b\u0438. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u044e \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u043c \u0437\u0438\u043c\u043d\u0438\u043c \u0432\u0435\u0447\u0435\u0440\u043e\u043c, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u0440\u043e\u0447\u043d\u043e \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0440\u0435\u043b\u0435 \u043d\u0430 \u043d\u0430\u0433\u0440\u0435\u0432 \u0432\u043e\u0434\u044b.<\/p>\n<p>  \u0424\u043e\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/322\/f6c\/23f\/322f6c23f74e4983967c03d9a7ea8e35.jpg\" alt=\"image\"\/><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/2f7\/8c5\/cf1\/2f78c5cf1e6b4de692bae01511426e88.jpg\" alt=\"image\"\/><\/p>\n<p>  \u041c\u0438\u0433\u0430\u044e\u0449\u0438\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.  <\/div>\n<\/div>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0435\u043b\u0435 \u0432\u0438\u0441\u0438\u0442 \u00ab\u043d\u0430 \u0441\u043e\u043f\u043b\u044f\u0445\u00bb, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u043e\u0439\u043b\u0435\u0440\u043e\u043c, \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u043d\u0442\u0430\u0436 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u043a\u0438 \u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u043a\u043e\u0442\u043b\u0430 \u043e\u0442\u043e\u043f\u043b\u0435\u043d\u0438\u044f. \u0424\u0430\u0437\u0443 \u0441 \u043a\u043e\u043b\u043e\u0434\u043a\u0438 \u0442\u043e\u0436\u0435 \u043d\u0430\u0434\u043e \u0443\u0431\u0440\u0430\u0442\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u0438 \u043c\u043e\u043d\u0442\u0430\u0436\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u043a\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u043a\u043e\u0433\u0434\u0430, \u043d\u0430\u0434\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0440\u0443\u0436\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u0434\u043e\u043c\u0443. \u0417\u0430\u0442\u0440\u0430\u0442\u044b \u043d\u0430 \u0434\u0435\u0442\u0430\u043b\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043e\u043a\u043e\u043b\u043e 2 \u0442\u044b\u0441\u044f\u0447 \u0440\u0443\u0431\u043b\u0435\u0439.<\/p>\n<h4>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c:<\/h4>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u043b\u0435\u0433\u043a\u043e: 90% \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0448\u043b\u043e \u043d\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u043d\u044e, \u0433\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0441\u0438\u043b\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432\u044b\u0440\u043e\u0441 \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u0432 \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0434\u0435\u0442\u0430\u043b\u0435\u0439. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e, \u0433\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043f\u043e\u0434\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0447\u0442\u0435\u043d\u0438\u044e \u0438 \u043f\u0440\u0430\u0432\u043a\u0435. <\/p>\n<p>  \u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043a\u043e\u0434\u0430 \u043d\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u041e\u041e\u041f. \u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0431\u044b\u043b \u0432\u0437\u044f\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 TMenu, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u043d\u044e. <\/p>\n<p>  \u0412\u043a\u0440\u0430\u0442\u0446\u0435. \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e CurrentMenu \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0435\u043d\u044e \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430 \u044d\u0442\u043e \u0431\u0438\u0442 ItemIsValue, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 OnKey(), Increment(), Decrement() \u0438 Print(). \u0422\u0430\u043a\u0436\u0435 \u043a\u043b\u0430\u0441\u0441 \u043c\u0435\u043d\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043c\u0435\u043d\u044e \u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439. \u0412 \u043e\u0431\u0449\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u043c\u0435\u043d\u044e, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u0435\u043d\u044e, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0434 \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u043d\u044e. \u0416\u0435\u0441\u0442\u043e\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043c\u0435\u043d\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u043e. \u0412 UNO R3 \u043d\u0430 \u0432\u0441\u044e \u044d\u0442\u0443 \u0440\u043e\u0441\u043a\u043e\u0448\u044c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u0422\u0440\u0435\u0442\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u2014 \u0443\u0440\u0435\u0437\u043a\u0430 \u0432\u0442\u043e\u0440\u043e\u0433\u043e. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0434\u043d\u043e \u2014 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u0435\u043d\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438\u0431\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u043d\u044e, \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u2014 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0442\u0438\u043f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u043d \u043a\u043b\u0430\u0441\u0441\u043e\u043c.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043a\u043b\u0430\u0441\u0441:  <\/p>\n<pre><code class=\"cpp\">class TMenu {   public:     byte _ItemsCount;     TMenu *Parent;     String *MenuName;     boolean ItemIsValue;     byte CurrentItem;      TMenu **Items;     String *ItemsName;     byte ItemsCount(void) ;     bool AddItem(TMenu *NewItem);      virtual void Print(void);     void OnKey(byte KeyNum);     void ChangeItem(byte value);      virtual void Increment(void);     virtual void Decrement(void);      virtual void OnSet(void);     DateTime CheckDateTime(DateTime OldDate, int Increment, byte DatePart); }; <\/code><\/pre>\n<p>  \u041a\u043b\u0430\u0441\u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:<br \/>  \u2014 \u0447\u0438\u0441\u043b\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u043d\u044e (\u043f\u043e\u0434\u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f), \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043c\u0435\u043d\u044e (\u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0440\u0430\u0432\u0435\u043d 0, \u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u0432\u0435\u0440\u0445);<br \/>  \u2014 <b>MenuName <\/b>\u0438\u043c\u044f \u043c\u0435\u043d\u044e;<br \/>  \u2014 <b>ItemIsValue <\/b>\u043e\u043f\u0438\u0441\u0430\u043d \u0432\u044b\u0448\u0435<br \/>  \u2014 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0432 \u043c\u0435\u043d\u044e (<b>CurrentItem<\/b>);<br \/>  \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 <b>Items<\/b>. \u0410\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0434\u043c\u0435\u043d\u044e. \u0415\u0441\u043b\u0438 \u043c\u0435\u043d\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e 0;<br \/>  \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>Print()<\/b> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 loop \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u044e \u00abCurrentMenu-&gt;Print();\u00bb \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d \u0441 \u043d\u0443\u0436\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c. <br \/>  \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>OnKey(byte KeyNum) <\/b>\u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0446\u0438\u043a\u043b\u0430 loop \u0432 \u0431\u043b\u043e\u043a\u0435 \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0440\u0435\u0431\u0435\u0437\u0433\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432, \u043e\u043d \u0436\u0435 \u0434\u0435\u043a\u043e\u0434\u0435\u0440 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u043e\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430.<br \/>  \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <b>ChangeItem(byte value)<\/b>, <b>virtual void Increment(void)<\/b>, <b>virtual void Decrement(void)<\/b> \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u0437 <b>OnKey()<\/b> \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 &quot;+&quot; \u0438 &quot;-&quot;. <b>ChangeItem() <\/b> \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u043d\u044e, <b>Increment() <\/b>\u0438 <b>Decrement() <\/b> \u2014 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u044b\u0435, \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. <br \/>  \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>CheckDateTime(DateTime OldDate, int Increment, byte DatePart)<\/b> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u0443\u044e \u0434\u0430\u0442\u0443 \u0438 \u0432\u0440\u0435\u043c\u044f. \u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0441\u043a\u043e\u0437\u043d\u044b\u0439 \u0433\u043e\u0434 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043d\u0435\u0439 \u0432 \u043c\u0435\u0441\u044f\u0446\u0435 28\/29, 30, 31. \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043b\u043e\u0433\u0438\u043a\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0434\u0430\u0442\u0430, +1 \u0438\u043b\u0438 -1 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441 \u0447\u0430\u0441\u0442\u0438 \u0434\u0430\u0442\u044b\/\u0432\u0440\u0435\u043c\u0435\u043d\u0438 (0 \u2014 \u0433\u043e\u0434, 5 \u2014 \u0441\u0435\u043a\u0443\u043d\u0434\u044b) <\/p>\n<p>  \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u043c\u0435\u043d\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e CurrentMenu:<br \/>  \u2014 CurrentMenu = CurrentMenu-&gt;Items[CurrentMenu-&gt;CurrentItem]; \u0432\u0445\u043e\u0434 \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e<br \/>  \u2014 CurrentMenu = CurrentMenu-&gt;Parent; \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u043c\u0435\u043d\u044e<\/p>\n<h5>\u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b:<\/h5>\n<p>  \u0426\u0438\u043a\u043b loop \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u043b\u0435 \u0438 \u043c\u0438\u0433\u0430\u0435\u0442 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.<\/p>\n<p>  <b>\u041a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430<\/b> \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0443\u0434\u0438\u043c\u0435\u043d\u0442\u0430 \u0438 \u043f\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c \u0432\u0445\u043e\u0434\u0430\u043c 2-6 (menu,-,+,set), \u043a \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u0430\u043c \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432.<br \/>  \u2014 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u00abmenu\u00bb \u0432\u043d\u0435 \u043c\u0435\u043d\u044e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u043d\u044e, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043c\u0435\u043d\u044e \u0432\u0432\u0435\u0440\u0445;<br \/>  \u2014 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 &quot;+&quot; \u0438\u043b\u0438 &quot;-&quot; \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 &quot;&#8217;set&quot; \u0432\u0445\u043e\u0434 \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u043b\u0438\u0431\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432\u043e \u0444\u043b\u0435\u0448 \u0441 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0414\u0440\u0435\u0431\u0435\u0437\u0433 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e, \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0438 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f. \u041e\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f 3 \u0440\u0430\u0437\u0430 \u0441 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c 15 \u043c\u0441. \u0421\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 1 \u043b\u0438\u0431\u043e \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0435\u0431\u0435\u0437\u0433 \u043a\u0430\u043a \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0442\u0430\u043a \u0438 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<p>  <b>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0440\u0435\u043b\u0435<\/b> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00abDaily\u00bb \u0432\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u044f, \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e \u043c\u0438\u043d\u0443\u0442. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 23 \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 7. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u041ence\u00bb \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u044f\u0442\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>  \u042d\u0442\u043e \u0432\u043a\u0440\u0430\u0442\u0446\u0435. \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041a\u043e\u0434 \u0438 \u0442\u0430\u043a \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/b><\/p>\n<div class=\"spoiler_text\">#include &lt;EEPROM.h&gt;<\/p>\n<p>  #include &lt;DHT.h&gt;<br \/>  #include &lt;Wire.h&gt;<br \/>  #include &lt;LiquidCrystal_I2C.h&gt;<br \/>  #include &lt;RTClib.h&gt;<br \/>  #define LEFT 0<br \/>  #define CENTER 1<br \/>  #define RIGHT 2<\/p>\n<p>  #define RelayModesCount 4<br \/>  #define KeyFirst 2<br \/>  #define KeyLast 6<\/p>\n<p>  LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);<br \/>  RTC_DS1307 RTC; \/\/ RTC Modul<br \/>  DHT dht(7, DHT21); \/\/ pin, type<br \/>  volatile boolean Blinker = true;<br \/>  volatile long BlinkerTime;<br \/>  volatile byte ButtonPress[8];<br \/>  const String RelayModeNames[] = {\u00abOFF\u00bb, \u00abON\u00bb, \u00abOnce\u00bb, \u00abDaily\u00bb};<\/p>\n<p>  int aKey1 = 0;<br \/>   int aKey2 = 0;<\/p>\n<p>  DateTime NowDate;<\/p>\n<p>  boolean DoBlink(void)<br \/>  {<br \/>   boolean Result = false;<br \/>   long NBlinkerTime = millis();<br \/>   if (Blinker)<br \/>   {<br \/>   if (NBlinkerTime \u2014 BlinkerTime &gt; 200)<br \/>   {<br \/>   digitalWrite(8, HIGH);<br \/>   BlinkerTime = NBlinkerTime;<br \/>   Blinker = false;<br \/>   Result = true;<br \/>   }<br \/>   }<br \/>   else<br \/>   {<br \/>   if (NBlinkerTime \u2014 BlinkerTime &gt; 300 )<br \/>   {<br \/>   digitalWrite(8, LOW);<br \/>   BlinkerTime = NBlinkerTime;<br \/>   Blinker = true;<br \/>   }<\/p>\n<p>  }<br \/>   return Result;<br \/>  }<br \/>  String BlinkString(String string, byte Cur, byte ItemsCount)<br \/>  {<br \/>   String result = string;<br \/>   byte len = string.length();<br \/>   if (!Blinker &#038;&#038; Cur == ItemsCount)<br \/>   {<br \/>   for (byte i = 0; i &lt; len; i++) result.setCharAt(i, &#8216; &#8216;);<br \/>   }<br \/>   return result;<br \/>  }<\/p>\n<p>  \/********************************************************************************************************\/<br \/>  \/********************************** \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 *********************************************\/<br \/>  \/********************************************************************************************************\/<\/p>\n<p>  class TMenu<br \/>  {<br \/>   public:<br \/>   byte _ItemsCount;<br \/>   TMenu *Parent;<br \/>   String *MenuName;<br \/>   boolean ItemIsValue;<br \/>   byte CurrentItem;<\/p>\n<p>  TMenu **Items;<br \/>   String *ItemsName;<br \/>   \/\/ byte ItemsCount(void);<br \/>   byte ItemsCount(void) {<br \/>   return _ItemsCount;<br \/>   };<br \/>   bool AddItem(TMenu *NewItem);<\/p>\n<p>  virtual void Print(void);<br \/>   void OnKey(byte KeyNum);<br \/>   void ChangeItem(byte value);<\/p>\n<p>  virtual void Increment(void);<br \/>   virtual void Decrement(void);<\/p>\n<p>  virtual void OnSet(void);<br \/>   DateTime CheckDateTime(DateTime OldDate, int Increment, byte DatePart);<br \/>  };<\/p>\n<p>  class TNoMenu: public TMenu<br \/>  {<br \/>   public:<br \/>   void Print(void);<br \/>   TNoMenu(TMenu *ParentMenu) {<br \/>   MenuName = 0;<br \/>   CurrentItem = 0;<br \/>   _ItemsCount = 0;<br \/>   Parent = ParentMenu;<br \/>   Items = 0;<br \/>   ItemsName = 0;<br \/>   ItemIsValue = false;<br \/>   };<br \/>   void Increment(void) {};<br \/>   void Decrement(void) {};<br \/>   void OnSet(void) {};<\/p>\n<p>  };<\/p>\n<p>  class TSelectMenu: public TMenu<br \/>  {<br \/>   public:<br \/>   void Print(void);<br \/>   TSelectMenu(TMenu *ParentMenu, String NewName) {<br \/>   MenuName = new String(NewName);<br \/>   CurrentItem = 0;<br \/>   _ItemsCount = 0;<br \/>   Parent = ParentMenu;<br \/>   Items = 0;<br \/>   ItemsName = 0;<br \/>   ItemIsValue = false;<br \/>   };<br \/>   void Increment(void) {};<br \/>   void Decrement(void) {};<br \/>   void OnSet(void) {};<br \/>  };<\/p>\n<p>  class TTimeMenu: public TMenu<br \/>  {<br \/>   public:<br \/>   void Print(void);<br \/>   DateTime *SetDateTime;<br \/>   long OldDateTime;<br \/>   TTimeMenu(TMenu *ParentMenu, String NewName, DateTime *ParamDate) {<br \/>   MenuName = new String(NewName);<br \/>   CurrentItem = 0; _ItemsCount = 6; Parent = ParentMenu; Items = 0; ItemsName = 0;<br \/>   ItemIsValue = true; OldDateTime = millis();<br \/>   SetDateTime = ParamDate;<br \/>   };<br \/>   void Increment(void) {<br \/>   *SetDateTime = CheckDateTime (*SetDateTime, 1, CurrentItem);<br \/>   };<br \/>   void Decrement(void) {<br \/>   *SetDateTime = CheckDateTime (*SetDateTime, -1, CurrentItem);<br \/>   };<br \/>   void OnSet(void) {<br \/>   RTC.adjust(*SetDateTime);<br \/>   };<br \/>   void SecondTimer(void) {<br \/>   long TmpDateTime = millis(); if (TmpDateTime \u2014 OldDateTime &gt; 1000) {<br \/>   OldDateTime = TmpDateTime;<br \/>   *SetDateTime = *SetDateTime + 1;<br \/>   };<br \/>   };<br \/>  };<br \/>  class TRelayMenu: public TMenu<br \/>  {<br \/>   public:<br \/>   byte RelayNumber;<br \/>   byte RelayMode;<br \/>   \/\/ byte Shedule=0;<br \/>   boolean OnceBit;<br \/>   DateTime RelayOn;<br \/>   DateTime RelayOff;<br \/>   TRelayMenu(TMenu *ParentMenu, byte NewNumber, String NewName) {<br \/>   MenuName = new String(NewName);<br \/>   CurrentItem = 0; _ItemsCount = 11; Parent = ParentMenu; Items = 0; ItemsName = 0; ItemIsValue = true, OnceBit = false;<br \/>   RelayNumber = NewNumber;<br \/>   RelayMode = 0;<br \/>   RelayOn = DateTime(2015, 1, 1, 23, 00, 00);<br \/>   RelayOff = DateTime(2015, 1, 1, 07, 00, 00);<br \/>   };<br \/>   void Print(void);<br \/>   void Increment(void) {<br \/>   if (!CurrentItem) {<br \/>   RelayMode++;<br \/>   if ( RelayMode &gt;= RelayModesCount) RelayMode = 0;<br \/>   }<br \/>   else if (CurrentItem &lt; 6) RelayOn = CheckDateTime (RelayOn, 1, CurrentItem \u2014 1);<br \/>   else RelayOff = CheckDateTime (RelayOff, 1, CurrentItem \u2014 6);<br \/>   };<br \/>   void Decrement(void) {<br \/>   if (!CurrentItem) {<br \/>   RelayMode&#8212;;<br \/>   if ( RelayMode &gt; 127) RelayMode = RelayModesCount \u2014 1;<br \/>   }<br \/>   else if (CurrentItem &lt; 6) RelayOn = CheckDateTime (RelayOn, -1, CurrentItem \u2014 1);<br \/>   else RelayOff = CheckDateTime (RelayOff, -1, CurrentItem \u2014 6);<br \/>   };<\/p>\n<p>  boolean CheckDaily(void);<\/p>\n<p>  void OnSet(void) {<br \/>   \/\/\/\/\/ \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u043b\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c<\/p>\n<p>  byte p_address = RelayNumber * 16;<br \/>   EEPROM.write(p_address, RelayMode);<\/p>\n<p>  EEPROM.write(p_address + 1, byte(RelayOn.year() \u2014 2000));<br \/>   EEPROM.write(p_address + 2, byte(RelayOn.month() ));<br \/>   EEPROM.write(p_address + 3, byte(RelayOn.day() ));<br \/>   EEPROM.write(p_address + 4, byte(RelayOn.hour() ));<br \/>   EEPROM.write(p_address + 5, byte(RelayOn.minute() ));<\/p>\n<p>  EEPROM.write(p_address + 6, byte(RelayOff.year() \u2014 2000));<br \/>   EEPROM.write(p_address + 7, byte(RelayOff.month() ));<br \/>   EEPROM.write(p_address + 8, byte(RelayOff.day() ));<br \/>   EEPROM.write(p_address + 9, byte(RelayOff.hour() ));<br \/>   EEPROM.write(p_address + 10, byte(RelayOff.minute() ));<br \/>   };<br \/>  };<\/p>\n<p>  \/********************************************************************************************************\/<br \/>  \/******************************** \u041a\u043e\u043d\u0435\u0446 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432 ******************************************\/<br \/>  \/********************************************************************************************************\/<\/p>\n<p>  TMenu *CurrentMenu = 0;<br \/>  TNoMenu *NoMenu = 0;<br \/>  TSelectMenu *SelectMenu;<br \/>  TTimeMenu *TimeMenu;<\/p>\n<p>  TRelayMenu *RelayMenu[4];<\/p>\n<p>  \/********************************************************************************************************************************************\/<br \/>  \/********************************************************************************************************************************************\/<br \/>  \/********************************************************************************************************************************************\/<br \/>  void setup()<br \/>  {<br \/>   NoMenu = new TNoMenu(0);<br \/>   SelectMenu = new TSelectMenu (NoMenu, \u00abNoMenu\u00bb);<br \/>   TimeMenu = new TTimeMenu(SelectMenu, \u00abTime Setup\u00bb, &#038;NowDate);<\/p>\n<p>  SelectMenu-&gt;AddItem(TimeMenu);<\/p>\n<p>  byte p_address;<br \/>   DateTime DTFlesh;<br \/>   for (int i = 0; i &lt; 4; i++)<br \/>   {<br \/>   \/\/ \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u0437 \u0444\u043b\u0435\u0448\u0430<br \/>   RelayMenu[i] = new TRelayMenu (SelectMenu, i, \u00abRelay \u00bb + String(i + 1));<br \/>   SelectMenu-&gt;AddItem(RelayMenu[i]);<\/p>\n<p>  p_address = i * 16;<\/p>\n<p>  RelayMenu[i]-&gt;RelayMode = EEPROM.read(p_address);<\/p>\n<p>  DTFlesh = DateTime(int(EEPROM.read(p_address + 1) + 2000), EEPROM.read(p_address + 2), EEPROM.read(p_address + 3), EEPROM.read(p_address + 4), EEPROM.read(p_address + 5), 0 );<br \/>   RelayMenu[i]-&gt;RelayOn = RelayMenu[i]-&gt;CheckDateTime(DTFlesh, 0, 0);<\/p>\n<p>  DTFlesh = DateTime(int(EEPROM.read(p_address + 6) + 2000), EEPROM.read(p_address + 7), EEPROM.read(p_address + 8), EEPROM.read(p_address + 9), EEPROM.read(p_address + 10), 0 );<br \/>   RelayMenu[i]-&gt;RelayOff = RelayMenu[i]-&gt;CheckDateTime(DTFlesh, 0, 0);<br \/>   }<\/p>\n<p>  for (byte i = KeyFirst; i &lt; KeyLast; i++)<br \/>   {<br \/>   pinMode(i, INPUT); \/\/Keypad 2-\u00abmenu\u00bb 3-&quot;-&quot; 4-&quot;+&quot; 5-\u00abSET\u00bb<br \/>   digitalWrite(i, HIGH); \/\/setup Resistor input2Vcc<br \/>   ButtonPress[i] = true;<br \/>   }<br \/>   pinMode(8, OUTPUT); \/\/LED<br \/>   pinMode(9, OUTPUT);<br \/>   for (byte i = 10; i &lt; 14; i++)<br \/>   {<br \/>   pinMode(i, OUTPUT); \/\/ relay i<br \/>   digitalWrite(i, HIGH);<br \/>   }<\/p>\n<p>  pinMode (A2, INPUT_PULLUP);<br \/>   pinMode (A3, INPUT_PULLUP);<\/p>\n<p>  Serial.begin(9600); \/\/ Used to type in characters<br \/>   digitalWrite(8, LOW);<br \/>   digitalWrite(9, HIGH);<\/p>\n<p>  lcd.begin(20, 4); \/\/ initialize the lcd for 20 chars 4 lines and turn on backlight<br \/>   RTC.begin();<\/p>\n<p>  lcd.noBacklight();<br \/>   delay(150);<br \/>   lcd.backlight();<\/p>\n<p>  NowDate = RTC.now();<br \/>   \/\/\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438<br \/>   if ( NowDate.year() &gt; 2000 &#038;&#038; NowDate.year() &lt; 2114 &#038;&#038;<br \/>   NowDate.month() &gt; 0 &#038;&#038; NowDate.month() &lt; 13 &#038;&#038;<br \/>   NowDate.day() &gt; 0 &#038;&#038; NowDate.day() &lt; 32 &#038;&#038;<br \/>   NowDate.hour() &gt;= 0 &#038;&#038; NowDate.hour() &lt; 24 &#038;&#038;<br \/>   NowDate.minute() &gt;= 0 &#038;&#038; NowDate.minute() &lt; 60 &#038;&#038;<br \/>   NowDate.second() &gt;= 0 &#038;&#038; NowDate.second() &lt; 60 )<br \/>   {<br \/>   CurrentMenu = NoMenu;<br \/>   }<br \/>   else<br \/>   {<br \/>   lcd.setCursor(2, 1);<br \/>   lcd.print(\u00abClock Failure!\u00bb);<br \/>   delay(700);<br \/>   RTC.adjust(DateTime(2015, 1, 1, 00, 00, 00));<br \/>   CurrentMenu = TimeMenu;<br \/>   }<\/p>\n<p>  }<\/p>\n<p>  void loop()<br \/>  {<br \/>   \/********* KEYPAD BUNCLE, 5 keys, from 2 to 6 *********\/<br \/>   byte NButtonPress[8] = {0, 0, 0, 0, 0, 0, 0, 0};<br \/>   byte NButtonRelease[8] = {0, 0, 0, 0, 0, 0, 0, 0};<br \/>   const byte ButtonTry = 3;<\/p>\n<p>  aKey1 = analogRead (2);<br \/>   aKey2 = analogRead (3);<br \/>   byte aKeyNum=0;<\/p>\n<p>   \/**************** check for key pressed or released ****************\/<br \/>   for (byte i = 0; i &lt; 3; i++)<br \/>   {<br \/>   delay(15);<br \/>   if (aKey1&lt; 64) aKeyNum=2;\/\/AnalogKey 1 = Dig2<br \/>   else if (aKey1&lt;128) aKeyNum=6;\/\/Analog key 3 = D4<br \/>   else if (aKey1&lt;256) aKeyNum=4;\/\/key 5=d6<br \/>   else if (aKey2&lt; 64) aKeyNum=1;\/\/key 6 = menu<br \/>   else if (aKey2&lt;128) aKeyNum=3;\/\/analogkey 2 = D3<br \/>   else if (aKey2&lt;256) aKeyNum=5;\/\/key 4 =d5<br \/>   else aKeyNum=0; \/\/ no key<\/p>\n<p>  for (byte j = KeyFirst; j &lt; KeyLast; j++) \/\/ Read ports 2&#8230;6<br \/>   {<br \/>   if (digitalRead(j) == LOW || aKeyNum==j)<br \/>   {<br \/>   NButtonPress[j]++;<br \/>   NButtonRelease[j] = 0;<br \/>   }<br \/>   else<br \/>   {<br \/>   NButtonPress[j] = 0;<br \/>   NButtonRelease[j]++;<br \/>   delay(5);<br \/>   }<br \/>   }<\/p>\n<p>  }<br \/>   \/*************** Do key process ******************\/<br \/>   \/\/ byte m;<\/p>\n<p>   for (byte j = KeyFirst; j &lt; KeyLast; j++)<br \/>   {<br \/>   if (NButtonPress[j] &gt;= ButtonTry &#038;&#038; ButtonPress[j] == false)<br \/>   {<br \/>   ButtonPress[j] = true;<br \/>   CurrentMenu-&gt;OnKey(j);<br \/>   }<br \/>   else<br \/>   {<br \/>   if (NButtonRelease[j] &gt;= ButtonTry &#038;&#038; ButtonPress[j] == true)<br \/>   {<br \/>   ButtonPress[j] = false;<br \/>   }<br \/>   }<br \/>   }<br \/>   \/***************** Relay Check *********************\/<\/p>\n<p>  CurrentMenu-&gt;Print();<br \/>   DoBlink();<br \/>  }<\/p>\n<p>  void LcdPrint(byte string, String str, byte Align)<br \/>  {<br \/>   byte StrTrim1;<br \/>   byte StrTrim2;<br \/>   lcd.setCursor(0, string); \/\/Start at character 0 on line 0<br \/>   switch (Align)<br \/>   {<br \/>   case RIGHT:<\/p>\n<p>  break;<\/p>\n<p>  case CENTER:<br \/>   StrTrim1 = byte((20 \u2014 str.length()) \/ 2);<br \/>   StrTrim2 = 20 \u2014 str.length() \u2014 StrTrim1;<br \/>   for (byte k = 0; k &lt; StrTrim1; k++) lcd.print(&quot; &quot;);<br \/>   lcd.print(str);<br \/>   for (byte k = 0; k &lt; StrTrim2; k++) lcd.print(&quot; &quot;);<br \/>   break;<\/p>\n<p>  default:<br \/>   lcd.print(str);<br \/>   StrTrim1 = 20 \u2014 str.length();<br \/>   for (byte k = 0; k &lt; StrTrim1; k++) lcd.print(&quot; &quot;);<br \/>   }<br \/>  }<\/p>\n<p>  void TNoMenu::Print(void)<br \/>  {<br \/>   NowDate = RTC.now();<br \/>   String Ddate;<br \/>   Ddate = &quot; R1-&quot; + RelayModeNames[RelayMenu[0]-&gt;RelayMode] + &quot; R2-&quot; + RelayModeNames[RelayMenu[1]-&gt;RelayMode];<br \/>   LcdPrint(0, Ddate, CENTER);<br \/>   Ddate = &quot; R3-&quot; + RelayModeNames[RelayMenu[2]-&gt;RelayMode] + &quot; R4-&quot; + RelayModeNames[RelayMenu[3]-&gt;RelayMode];<br \/>   LcdPrint(1, Ddate, CENTER);<br \/>   Ddate = String (NowDate.year()) + &quot;\/&quot; + String(NowDate.month()) + &quot;\/&quot; + String(NowDate.day()) + &quot; &quot; + String (NowDate.hour()) + &quot;:&quot; + String(NowDate.minute()) + &quot;:&quot; + String(NowDate.second());<br \/>   LcdPrint(2, Ddate, CENTER);<br \/>   Ddate = \u00abTemp \u00bb + String (int(dht.readTemperature())) + \u00abC, Hum \u00bb + String(int(dht.readHumidity())) + &quot;%&quot;;<br \/>   LcdPrint(3, Ddate, CENTER);<\/p>\n<p>  RelayCheck();<br \/>  }<\/p>\n<p>  void TTimeMenu::Print(void)<br \/>  {<br \/>   SecondTimer();<br \/>   String Ddate = BlinkString(String((*SetDateTime).year()), CurrentItem, 0) + &quot;\/&quot; +<br \/>   BlinkString(String( (*SetDateTime).month()), CurrentItem, 1) + &quot;\/&quot; +<br \/>   BlinkString(String((*SetDateTime).day()), CurrentItem, 2) + &quot; &quot;;<br \/>   LcdPrint(1, Ddate, CENTER);<br \/>   Ddate = BlinkString(String ((*SetDateTime).hour()), CurrentItem, 3) + &quot;:&quot; +<br \/>   BlinkString(String((*SetDateTime).minute()), CurrentItem, 4) + &quot;:&quot; +<br \/>   BlinkString(String((*SetDateTime).second()), CurrentItem, 5);<br \/>   LcdPrint(2, Ddate, CENTER);<\/p>\n<p>  LcdPrint(3, &quot; &quot;, CENTER);<br \/>   RelayCheck();<br \/>  }<\/p>\n<p>  void TMenu::OnKey(byte KeyNum)<br \/>  {<br \/>   switch (KeyNum)<br \/>   {<br \/>   case 3: \/\/ \u2014  if (ItemIsValue) Decrement();<br \/>   else ChangeItem(-1);<br \/>   break;<br \/>   case 4: \/\/ +<br \/>   if (ItemIsValue) Increment();<br \/>   else ChangeItem(1);<br \/>   break;<br \/>   case 5: \/\/ SET<br \/>   if (ItemIsValue)<br \/>   {<br \/>   OnSet();<br \/>   ChangeItem(+1);<br \/>   }<br \/>   else \/\/ \u0432\u0445\u043e\u0434 \u0432 \u043f\u043e\u0434\u043c\u0435\u043d\u044e<br \/>   {<br \/>   if (Items &#038;&#038; ItemsCount())<br \/>   {<br \/>   if (CurrentMenu-&gt;ItemsCount())<br \/>   {<br \/>   CurrentMenu = CurrentMenu-&gt;Items[CurrentMenu-&gt;CurrentItem];<br \/>   CurrentMenu-&gt;CurrentItem = 0;<br \/>   }<br \/>   }<br \/>   }<br \/>   break;<br \/>   default: \/\/ 2 -menu<br \/>   if (Parent) CurrentMenu = CurrentMenu-&gt;Parent; \/\/(TMenu *) &NoMenu;<br \/>   else<br \/>   {<br \/>   CurrentMenu = SelectMenu;<br \/>   CurrentMenu-&gt;CurrentItem = 0;<br \/>   }<br \/>   }<br \/>  }<\/p>\n<p>  void TMenu::ChangeItem(byte value)<br \/>  {<br \/>   CurrentItem += value;<br \/>   if (CurrentItem &gt; 128) CurrentItem = ItemsCount() \u2014 1;<br \/>   else if (CurrentItem &gt; ItemsCount() \u2014 1) CurrentItem = 0;<br \/>  }<\/p>\n<p>  boolean TMenu::AddItem(TMenu *NewItem)<br \/>  {<br \/>   if (!Items) Items = new TMenu *[_ItemsCount = 1];<br \/>   else Items = (TMenu **)realloc((void *)Items, (_ItemsCount = _ItemsCount + 1) * sizeof(void *));<br \/>   Items[_ItemsCount \u2014 1] = NewItem;<br \/>  }<\/p>\n<p>  DateTime TMenu::CheckDateTime(DateTime OldDate, int Increment, byte DatePart)<br \/>  {<br \/>   int DTmin[6] = {2000, 1, 1, 0, 0, 0};<br \/>   int DTmax[6] = {2199, 12, 31, 23, 59, 59};<\/p>\n<p>  int DT[6];<br \/>   int diff;<\/p>\n<p>  DT[0] = OldDate.year();<br \/>   DT[1] = OldDate.month();<br \/>   DT[2] = OldDate.day();<br \/>   DT[3] = OldDate.hour();<br \/>   DT[4] = OldDate.minute();<br \/>   DT[5] = OldDate.second();<br \/>   DT[DatePart] = DT[DatePart] + Increment;<\/p>\n<p>  if (DT[1] == 1 || DT[1] == 3 || DT[1] == 5 || DT[1] == 7 || DT[1] == 8 || DT[1] == 10 || DT[1] == 12) DTmax[2] = 31;<br \/>   else if (DT[1] == 2)<br \/>   {<br \/>   if ((DT[0] % 4 == 0 &#038;&#038; DT[0] % 100 != 0) || (DT[0] % 400 == 0)) DTmax[2] = 29;<br \/>   else DTmax[2] = 28;<br \/>   }<br \/>   else DTmax[2] = 30;<\/p>\n<p>  for (byte i = 0; i &lt; 6; i++)<br \/>   {<br \/>   if (DT[i] &gt; DTmax[i]) DT[i] = DTmin[i];<br \/>   else if (DT[i] &lt; DTmin[i]) DT[i] = DTmax[i];<br \/>   }<\/p>\n<p>  return DateTime(DT[0], DT[1], DT[2], DT[3], DT[4], DT[5]);<\/p>\n<p>  }<\/p>\n<p>  void TSelectMenu::Print(void)<br \/>  {<br \/>   NowDate = RTC.now();<br \/>   byte shift = 0;<br \/>   if (CurrentItem &gt; 3) shift = CurrentItem \u2014 3;<br \/>   for (byte i = 0; i &lt; 4; i++)<br \/>   {<br \/>   if ((CurrentItem \u2014 shift) == i) \/\/&#038;&#038;Blinker)<br \/>   {<br \/>   LcdPrint(i, &quot;&gt;&gt; &quot; + * (Items[i + shift]-&gt;MenuName) + &quot; &lt;&lt;&quot;, CENTER);<br \/>   }<br \/>   else LcdPrint(i, *(Items[i + shift]-&gt;MenuName), CENTER);<br \/>   }<br \/>   RelayCheck();<br \/>  }<\/p>\n<p>  void TRelayMenu::Print(void)<br \/>  {<\/p>\n<p>  String DData;<br \/>   NowDate = RTC.now();<br \/>   LcdPrint(0, (*MenuName) + &quot;[&quot; + BlinkString(RelayModeNames[RelayMode], CurrentItem, 0) + &quot;]&quot;, CENTER);<br \/>   DData = \u00abOn:\u00bb;<br \/>   switch (RelayMode)<br \/>   {<br \/>   case 3: \/\/Daily<br \/>   \/\/ DData = DData + &quot; &quot;;<br \/>   if (CurrentItem &gt; 0 &#038;&#038; CurrentItem &lt; 4) CurrentItem = 4;<br \/>   break;<br \/>   default:<br \/>   DData = DData + BlinkString(String(RelayOn.year(), DEC), CurrentItem, 1) + &quot;\/&quot; + BlinkString(String( RelayOn.month(), DEC), CurrentItem, 2) +<br \/>   &quot;\/&quot; + BlinkString(String( RelayOn.day(), DEC), CurrentItem, 3);<br \/>   }<br \/>   DData = DData + &quot; &quot; + BlinkString(String (RelayOn.hour(), DEC), CurrentItem, 4) + &quot;:&quot; + BlinkString(String(RelayOn.minute(), DEC), CurrentItem, 5);<br \/>   LcdPrint(1, DData, CENTER);<br \/>   DData = \u00abOff:\u00bb;<br \/>   switch (RelayMode)<br \/>   {<br \/>   case 3: \/\/Daily<br \/>   \/\/ DData = DData + &quot; &quot;;<br \/>   if (CurrentItem &gt; 5 &#038;&#038; CurrentItem &lt; 9) CurrentItem = 9;<br \/>   break;<br \/>   default:<br \/>   DData = DData + BlinkString(String(RelayOff.year(), DEC), CurrentItem, 6) + &quot;\/&quot; + BlinkString(String( RelayOff.month(), DEC), CurrentItem, 7) +<br \/>   &quot;\/&quot; + BlinkString(String( RelayOff.day(), DEC), CurrentItem, 8);<br \/>   }<br \/>   DData = DData + &quot; &quot; + BlinkString(String (RelayOff.hour(), DEC), CurrentItem, 9) + &quot;:&quot; + BlinkString(String(RelayOff.minute(), DEC), CurrentItem, 10);<br \/>   LcdPrint(2, DData, CENTER);<br \/>   LcdPrint(3, &quot; &quot;, CENTER);<br \/>  }<\/p>\n<p>  boolean TRelayMenu::CheckDaily(void)<br \/>  {<br \/>   int TimeOn = 60 * int(RelayOn.hour()) + int(RelayOn.minute());<br \/>   int TimeOff = 60 * int(RelayOff.hour()) + int(RelayOff.minute());<br \/>   int NowTime = 60 * int(NowDate.hour()) + int(NowDate.minute());<br \/>   boolean result; \/\/ true = \u0432\u0440\u0435\u043c\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<br \/>   if ( TimeOn &gt; TimeOff )<br \/>   {<br \/>   if (NowTime &lt;= TimeOff || NowTime &gt;= TimeOn ) result = true;<br \/>   else result = false;<br \/>   }<br \/>   else<br \/>   {<br \/>   if (NowTime &lt;= TimeOff &#038;&#038; NowTime &gt;= TimeOn ) result = true;<br \/>   else result = false;<br \/>   };<br \/>   return result;<\/p>\n<p>  }<\/p>\n<p>  void RelayCheck (void)<br \/>  {<br \/>   boolean OnceBitCheck;<br \/>   for (byte i = 0; i &lt; 4; i++)<br \/>   {<br \/>   switch (RelayMenu[i]-&gt;RelayMode)<br \/>   {<br \/>   case 1: \/\/relay 0n<br \/>   digitalWrite(i + 10, LOW);<\/p>\n<p>  break;<br \/>   case 2: \/\/Once;<br \/>   OnceBitCheck = (NowDate.unixtime() &gt; RelayMenu[i]-&gt;RelayOn.unixtime() &#038;&#038; NowDate.unixtime()&lt;RelayMenu[i]-&gt;RelayOff.unixtime());<\/p>\n<p>   if (OnceBitCheck) RelayMenu[i]-&gt;OnceBit = true;<br \/>   else if (RelayMenu[i]-&gt;OnceBit)<br \/>   {<br \/>   RelayMenu[i]-&gt;RelayMode = 0;<br \/>   byte p_address = RelayMenu[i]-&gt;RelayNumber * 16;<br \/>   EEPROM.write(p_address, RelayMenu[i]-&gt;RelayMode);<br \/>   }<br \/>   digitalWrite(i + 10, !OnceBitCheck);<br \/>   break;<br \/>   case 3: \/\/Daily<br \/>   digitalWrite(i + 10, !(RelayMenu[i]-&gt;CheckDaily()));<br \/>   break;<br \/>   default: \/\/relay 0ff<br \/>   digitalWrite(i + 10, HIGH);<br \/>   }<br \/>   }<br \/>  }  <\/div>\n<\/div>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0435\u043b\u043a\u0430, \u0438\u0437\u0431\u0430\u0432\u0438\u0432\u0448\u0430\u044f \u043c\u0435\u043d\u044f \u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u0432 7 \u0443\u0442\u0440\u0430 \u0438 \u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u0432 23, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u044f \u0449\u0435\u043b\u043a\u0430\u0442\u044c \u0442\u0443\u043c\u0431\u043b\u0435\u0440\u0430\u043c\u0438. \u041d\u0430 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e, \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u044f\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u0434\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b, \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b.<\/p>\n<p>  \u0411\u044b\u043b\u0438 \u043e\u043f\u0430\u0441\u0435\u043d\u0438\u044f \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0445\u043e\u0434\u0430 \u0447\u0430\u0441\u043e\u0432, \u043d\u043e \u043f\u043e\u043a\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b.<\/p>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.         <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/geektimes.ru\/post\/258944\/\"> http:\/\/geektimes.ru\/post\/258944\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p> \t\t\u0418\u0434\u0435\u044f \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0430, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0432 \u0434\u043e\u043c\u0435:<br \/>  1. \u041a\u043e\u0442\u0435\u043b \u043e\u0442\u043e\u043f\u043b\u0435\u043d\u0438\u044f.<br \/>  2. \u041d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043e\u0439\u043b\u0435\u0440 \u0434\u043b\u044f \u0432\u043e\u0434\u043e\u0441\u043d\u0430\u0431\u0436\u0435\u043d\u0438\u044f.<br \/>  3. \u041d\u0430\u0441\u043e\u0441 \u0432 \u0441\u043a\u0432\u0430\u0436\u0438\u043d\u0435.<\/p>\n<p>  \u0427\u0438\u0442\u0430\u043b \u043c\u0430\u0441\u0441\u0443 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u0442\u0435\u043c\u0443 \u0425\u0425 \u043d\u0430 \u0410\u0440\u0434\u0443\u0438\u043d\u043e, \u0447\u0438\u0442\u0430\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0435\u0442\u043a\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043c\u044b\u0441\u043b\u044c \u00ab\u0445\u043e\u0447\u0443 \u0410\u0440\u0434\u0443\u0438\u043d\u043e\u00bb. \u041f\u0440\u0438\u043a\u0438\u043d\u0443\u0432 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b \u044f\u0432\u043d\u0443\u044e \u0432\u044b\u0433\u043e\u0434\u0443 \u043e\u0442 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0410\u0440\u0434\u0443\u0438\u043d\u043e. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f47\/5e3\/d1e\/f475e3d1ebb24a6ebee7ee1bf41d74e9.jpg\" alt=\"image\"\/><\/p>\n<h4>\u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043c\u0438\u043d\u0438\u043c\u0443\u043c:<\/h4>\n<p>  1. 4 \u0440\u0435\u043b\u0435, \u0447\u0430\u0441\u044b (RTC), \u0416\u041a \u044d\u043a\u0440\u0430\u043d;<br \/>  2. \u0420\u0435\u0436\u0438\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u043b\u0435: \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0441\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440, \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435;<br \/>  3. \u041a\u043d\u043e\u043f\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0440\u0435\u043b\u0435;<\/p>\n<p>  \u0412 \u0434\u043e\u043c\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0434\u0432\u0443\u0445\u0442\u0430\u0440\u0438\u0444\u043d\u044b\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u0439\u043b\u0435\u0440 \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0435\u0442 \u0432\u043e\u0434\u0443 \u0441 23 \u0434\u043e 7 \u0443\u0442\u0440\u0430. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u0442\u043e\u043f\u043b\u0435\u043d\u0438\u0435: \u0434\u0432\u0430 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0442\u044d\u043d\u043e\u0432, \u043f\u043e \u043c\u043e\u0435\u0439 \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0447\u044c\u044e. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043e\u0439 \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u043e\u0434\u043d\u043e\u0435 \u043d\u0430 \u0448\u0442\u0430\u0442\u043d\u043e\u043c \u043f\u0443\u043b\u044c\u0442\u0435. \u041e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0430 \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0430 \u043d\u0430\u0441\u043e\u0441, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043d\u0430\u0431\u043e\u0440 \u0435\u043c\u043a\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0430\u0447\u043a\u0443 \u0441\u043a\u0432\u0430\u0436\u0438\u043d\u044b, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0440\u0435\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c: \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438, \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u041f\u041a.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-262087","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/262087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=262087"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/262087\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=262087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=262087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=262087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}