{"id":215177,"date":"2014-03-10T15:48:02","date_gmt":"2014-03-10T11:48:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=215177"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=215177","title":{"rendered":"<span class=\"post_title\">\u0420\u0430\u0434\u0438\u043e\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438. \u0427\u0430\u0441\u0442\u044c 3 \u2014 \u0421\u043e\u0444\u0442 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u0441\u0442\u0430\u0445 \u043c\u044b <a href=\"http:\/\/habrahabr.ru\/post\/211126\/\">\u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u0441\u0434\u0435\u043b\u0430\u043b\u0438<\/a> \u0438 \u0432\u0441\u0435\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/212785\/\">\u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438<\/a> \u0431\u043b\u043e\u043a \u0434\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0434\u0438\u043e\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ca4\/f33\/68c\/ca4f3368cf462b7f12ba8ae3e149937e.jpg\"\/><\/p>\n<p>  \u041d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u00ab\u0431\u0435\u0437\u0434\u0443\u0448\u043d\u0430\u044f \u0436\u0435\u043b\u0435\u0437\u043a\u0430\u00bb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0441\u044e \u0441\u0432\u043e\u044e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0449\u044c, \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u0432 \u041c\u041a, \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u043c\u0435\u0435\u0442. <br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u043d\u0430\u0448\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0434\u0438\u043e\u043c\u043e\u0434\u0443\u043b\u044f) \u2014 \u043d\u0438\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0441\u0430\u043c\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0410\u0440\u0434\u0443\u0438\u043d\u043a\u0438, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043f\u0430\u0440\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 (\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u2014 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0440\u0435\u043b\u044e\u0448\u043a\u0430\u043c\u0438, \u043d\u043e \u0441\u0443\u0442\u044c \u044d\u0442\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442). <\/p>\n<p>  \u0418\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0434\u0438\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u043d\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0443:   <\/p>\n<ul>\n<li>\u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u00ab\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435 \u043f\u043e\u0440\u0442\u0430\u00bb,<\/li>\n<li>\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435, \u043a\u0430\u043a\u043e\u0435 \u0438\u0437 \u0440\u0435\u043b\u0435 \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438 \u0442.\u043f.<\/li>\n<\/ul>\n<p>  \u041d\u043e, \u043a\u0430\u043a \u044f \u0440\u0430\u043d\u044c\u0448\u0435 \u0443\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0434\u043b\u044f \u00ab\u043e\u0436\u0438\u0432\u043b\u0435\u043d\u0438\u044f\u00bb \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432\u0441\u0435\u0433\u043e-\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0435\u0442\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f (\u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438) \u0438 \u043c\u043e\u0433 \u0431\u044b \u043f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\/\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0434\u0432\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u0432 \u043c\u0430\u043a\u0435\u0442\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0430\u0440\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432). \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u043e \u00ab\u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u00bb, \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441 \u043d\u0438\u043c \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0438 \u00ab\u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0435\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<blockquote><p>\u0412\u043e\u043e\u0431\u0449\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441 \u00ab\u043c\u0430\u043a\u0435\u0442\u043a\u0438\u00bb \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c, \u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0434\u0435\u043b\u0430\u043b\u0441\u044f \u043f\u043e\u0437\u0436\u0435, \u0447\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p><\/blockquote>\n<p>  <\/p>\n<h4>\u041c\u0430\u043a\u0435\u0442<\/h4>\n<p>  \u0418\u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u00ab\u0443\u0434\u043e\u0431\u043d\u0443\u044e\u00bb \u0441\u0440\u0435\u0434\u0443 \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043a\u0435\u0442\u0447\u0430, \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0431\u0435\u0441\u043f\u0430\u0435\u0447\u043d\u0443\u044e \u043c\u0430\u043a\u0435\u0442\u043a\u0443, \u043b\u044e\u0431\u0443\u044e \u0430\u0440\u0434\u0443\u0438\u043d\u043e-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0443\u044e \u043f\u043b\u0430\u0442\u0443 (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e cArduino Nano), \u0434\u0432\u0435 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0434\u0432\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 (\u0441 \u0442\u043e\u043a\u043e\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430\u043c\u0438) \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u0435\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/359\/4de\/737\/3594de737102d38783c8b5b9d4a2cfae.jpg\"\/><\/p>\n<p>  \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u0430\u043a\u0435\u0442, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0438\u0437 <a href=\"http:\/\/habrahabr.ru\/post\/211126\/\">\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430<\/a>. <\/p>\n<p>  \u041d\u0430\u043f\u043e\u043c\u043d\u044e:  <\/p>\n<ul>\n<li>\u041a\u043d\u043e\u043f\u043a\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u043f\u0438\u043d\u043e\u043c A1 \u0438 \u00ab\u0437\u0435\u043c\u043b\u0435\u0439\u00bb (GND), <\/li>\n<li>\u041a\u043d\u043e\u043f\u043a\u0443 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u2014 A0 \u0438 GND.<\/li>\n<li>\u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b (\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0440\u0435\u043b\u0435 \u0432 \u0440\u0430\u0434\u0438\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435) \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a D3 \u0438 D4, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/li>\n<\/ul>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u0430\u043a\u043e\u0439 \u043c\u0430\u043a\u0435\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. <\/p>\n<p>  \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u043e\u0442 \u0441\u043a\u0435\u0442\u0447 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u0432 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043e\u043a.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h4>\u0416\u0435\u043b\u0430\u0435\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b<\/h4>\n<p>  \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u00ab\u0445\u043e\u0442\u0435\u043b\u043e\u043a\u00bb \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u0435\u0449\u0435 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u044e.<\/p>\n<h5>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/h5>\n<p>  \u0414\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u043c \u0438 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u0435\u0439 \u0432 \u0441\u0430\u043d\u0443\u0437\u043b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439:  <\/p>\n<ul>\n<li>\u041f\u043e \u043a\u0440\u0430\u0442\u043a\u043e\u043c\u0443 \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\/\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u0430\u043d\u0430\u043b \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u043a\u0430\u043d\u0430\u043b 1 \u2014 \u0441\u0432\u0435\u0442, \u043a\u0430\u043d\u0430\u043b 2 \u2014 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u044f).<\/li>\n<li>\u041f\u043e \u0434\u043b\u0438\u043d\u043d\u043e\u043c\u0443 \u043d\u0430\u0436\u0430\u0442\u0438\u044e (\u0431\u043e\u043b\u0435\u0435 2 \u0441\u0435\u043a\u0443\u043d\u0434) \u2014 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u043a\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f (\u00ab\u0432\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0444\u043b\u0430\u0433\u00bb), \u043d\u043e \u043f\u043e\u043a\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0441\u0432\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0431\u043e\u043b\u0435\u0435, \u0447\u0435\u043c 1,5 \u043c\u0438\u043d\u0443\u0442\u044b \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0442\u044f\u0436\u043a\u0443 (\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u0435\u043b \u0432 \u0434\u0443\u0448 \u0438 \u0437\u0430\u0431\u044b\u043b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u044e).<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0431\u044b\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043e\u0431\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043d\u0430\u043b \u0447\u0435\u0440\u0435\u0437 10 \u043c\u0438\u043d\u0443\u0442. <\/li>\n<li>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c (\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u2014 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f: 60 \u0438 10 \u043c\u0438\u043d\u0443\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e).<\/li>\n<\/ul>\n<p>  <\/p>\n<blockquote><p>\u041f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u2014 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043e\u0431\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u043c\u0438. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043c\u043d\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e \u0438 \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430\u0434\u043e \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0445\u043e\u0434\u0435 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p><\/blockquote>\n<p>  <\/p>\n<h5>\u0420\u0430\u0434\u0438\u043e\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u042d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u043d\u043e \u0438\u0445 \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 (\u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c):  <\/p>\n<ul>\n<li>\u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0432\u0448\u0438\u0435 \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a, \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u043a\u043d\u043e\u043f\u043a\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f (\u0442.\u0435. \u043f\u043e\u043b\u043d\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438).<\/li>\n<li>\u0427\u0435\u0440\u0435\u0437 \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f.<\/li>\n<li>\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u043d\u0435\u0440\u0433\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u00ab\u043f\u0435\u0440\u0435\u0443\u0447\u0438\u0432\u0430\u0442\u044c\u00bb \u043c\u043e\u0434\u0443\u043b\u044c).<\/li>\n<li>\u0412\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0444\u043b\u0430\u0433\u0438 \u00ab\u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f\u00bb, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435) \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 \u043a\u0430\u043a \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 (\u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441), \u0442\u0430\u043a \u0438 \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435 (\u0440\u0430\u0437 \u0432 15 \u0441\u0435\u043a\u0443\u043d\u0434 \u2014 \u00ab\u0444\u043b\u0443\u0434\u00bb \u0432 \u044d\u0444\u0438\u0440 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432).<\/li>\n<\/ul>\n<p>  <\/p>\n<h4>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>  \u0412 \u0445\u043e\u0434\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u041f\u041e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0443\u0434\u0435\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:  <\/p>\n<ol>\n<li>\u0421\u0435\u0439\u0447\u0430\u0441 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0434\u0432\u0430, \u043d\u043e \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435\/\u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u0431\u0435\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f).<\/li>\n<li>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0441\u0431\u043e\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u0441\u0442\u0435\u043d\u044b \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e.<\/li>\n<\/ol>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f, \u0430 \u0432\u0442\u043e\u0440\u043e\u0435 \u2014 \u0434\u0438\u043a\u0442\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <a href=\"http:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D1%82%D0%BE%D1%80%D0%BE%D0%B6%D0%B5%D0%B2%D0%BE%D0%B9_%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80\">\u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 (watchdog)<\/a>.<\/p>\n<p>  \u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u0430\u043d\u0430\u043b\u0430 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:  <\/p>\n<pre><code class=\"cpp\">typedef struct {   int button;                \/\/ \u043f\u0438\u043d \u043a\u043d\u043e\u043f\u043a\u0438   int relay;                 \/\/ \u043f\u0438\u043d \u0440\u0435\u043b\u0435   boolean state;             \/\/ \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (\u0432\u043a\u043b\/\u0432\u044b\u043a\u043b)   unsigned long power_on;    \/\/ \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430   unsigned long auto_off;    \/\/ \u0432\u0440\u0435\u043c\u044f, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c   unsigned long time_off;    \/\/ \u0432\u0440\u0435\u043c\u044f, \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f    boolean autostate;         \/\/ \u0444\u043b\u0430\u0433, \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0439, \u0447\u0442\u043e \u0436\u0434\u0435\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435    unsigned long press_start; \/\/ \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430\u0436\u0430\u043b\u0438   unsigned long press_stop;  \/\/ \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u043b\u0438 } Channel; <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0441\u043a\u0435\u0442\u0447.<\/p>\n<p>  \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 setup() \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0432\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u0432\u0437\u0432\u043e\u0434\u0438\u043c \u00ab\u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u0443\u044e \u0441\u043e\u0431\u0430\u043a\u0443\u00bb.<\/p>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e: \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (loop()) \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438:  <\/p>\n<ul>\n<li>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 (\u0444\u0443\u043d\u043a\u0446\u0438\u044f button_read()).<\/li>\n<li>\u041e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 (autoOff()).<\/li>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b (chkLogic()).<\/li>\n<li>\u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u043e\u0439 \u0442\u0430\u0439\u043c\u0435\u0440 (wdt_reset()).<\/li>\n<\/ul>\n<p>  \u0415\u0441\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430) \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044e chkLogic() \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0435\u0442\u0447<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\/\/\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 #include &lt;avr\/wdt.h&gt; #include &lt;Bounce.h&gt;  \/\/#define DEBUG \/\/ \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u0435\u043d \u0432\u044b\u0432\u043e\u0434 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 - \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c  \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u043d\u0430\u043b\u043e\u0432 #define CH 2  \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0434\u043b\u044f \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f #define LONGPRESS 2000  \/\/ 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b  \/\/ \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 &quot;\u043a\u0430\u043d\u0430\u043b\u0430&quot; typedef struct {   int button;                \/\/ \u043f\u0438\u043d \u043a\u043d\u043e\u043f\u043a\u0438   int relay;                 \/\/ \u043f\u0438\u043d \u0440\u0435\u043b\u0435   boolean state;             \/\/ \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (\u0432\u043a\u043b\/\u0432\u044b\u043a\u043b)   unsigned long power_on;    \/\/ \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430   unsigned long auto_off;    \/\/ \u0432\u0440\u0435\u043c\u044f, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c   unsigned long time_off;    \/\/ \u0432\u0440\u0435\u043c\u044f, \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f    boolean autostate;         \/\/ \u0444\u043b\u0430\u0433, \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0439, \u0447\u0442\u043e \u0436\u0434\u0435\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435    unsigned long press_start; \/\/ \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430\u0436\u0430\u043b\u0438   unsigned long press_stop;  \/\/ \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u043b\u0438 } Channel;  \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043d\u0430\u043b\u043e\u0432 Channel MySwitch[CH] = {   15, 3, LOW, 0, 3600000, 0, false, 0, 0,   14, 4, LOW, 0, 600000, 0, false, 0, 0 };  \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430 Bounce. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0438\u043d\u044b, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u0432\u0440\u0435\u043c\u044f \u0434\u0440\u0435\u0431\u0435\u0437\u0433\u0430 \u0432 \u043c\u0441. Bounce bouncer0 = Bounce(MySwitch[0].button,5);  Bounce bouncer1 = Bounce(MySwitch[1].button,5);   \/\/ \u0444\u043b\u0430\u0433 \u0434\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 boolean logicFlag = false; boolean onFlag = false; boolean offFlag = false;  void setup() {   wdt_disable(); \/\/ \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 bootloop    #ifndef DEBUG   Serial.begin(9600);   Serial.println(&quot;Start!&quot;);   pinMode(13, OUTPUT); #endif   \/\/ \u0440\u0435\u043b\u0435   pinMode(MySwitch[0].relay, OUTPUT);        pinMode(MySwitch[1].relay, OUTPUT);   \/\/ \u043a\u043d\u043e\u043f\u043a\u0438   pinMode(MySwitch[0].button, INPUT);        pinMode(MySwitch[1].button, INPUT);     \/\/ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u043a\u043d\u043e\u043f\u043e\u043a   digitalWrite(MySwitch[0].button, HIGH);     digitalWrite(MySwitch[1].button, HIGH);      \/\/delay(5000); \/\/ \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0448\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 bootloop #ifndef DEBUG   Serial.println(&quot;Ready!&quot;); #endif   wdt_enable (WDTO_8S); \/\/ \u0414\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u0435\u0435 8 \u0441\u0435\u043a. }  void loop() {    \/\/ \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438   button_read();    \/\/ \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435   autoOff();    \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b   chkLogic();      \/\/ \u0441\u0431\u0440\u043e\u0441\u0438\u043c \u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u0443\u044e \u0441\u043e\u0431\u0430\u043a\u0443   wdt_reset(); }  void  button_read(){      \/\/\u0435\u0441\u043b\u0438 \u0441\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 1     if ( bouncer0.update() ) {       if ( bouncer0.read() == LOW) {         \/\/ \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u044f         MySwitch[0].press_start = millis();       }       else {         \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u043a\u0430\u043a\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0431\u044b\u043b\u043e (\u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u0438\u043b\u0438 \u0434\u043b\u0438\u043d\u043d\u043e\u0435) \u0438 \u0434\u0435\u043b\u0430\u0435\u043c, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.         pressDetect(0, millis());       }     }          \/\/\u0435\u0441\u043b\u0438 \u0441\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 2     if ( bouncer1.update() ) {       if ( bouncer1.read() == LOW) {         MySwitch[1].press_start = millis();       }       else {         pressDetect(1, millis());       }     } }  \/\/ \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f void doSwitch(int ch, boolean state){   \/\/ \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f   MySwitch[ch].state = state;   \/\/ \u0435\u0441\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u0432 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 &quot;\u0412\u041a\u041b&quot; \u0438 \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0443\u043b\u044f   if (MySwitch[ch].state == HIGH) {     \/\/ \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     MySwitch[ch].power_on = millis();     if(MySwitch[ch].auto_off &gt; 0) {       \/\/ \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c       MySwitch[ch].time_off = MySwitch[ch].power_on + MySwitch[ch].auto_off;       MySwitch[ch].autostate = true;     } #ifndef DEBUG     Serial.print(&quot;ON &quot;);     Serial.println(ch); #endif   }   else {     \/\/ \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u0440\u0435\u0436\u0438\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     MySwitch[ch].autostate = false;     \/\/ \u0441\u0431\u0440\u043e\u0441\u0438\u043c \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     MySwitch[ch].time_off = 0; #ifndef DEBUG     Serial.print(&quot;OFF &quot;);     Serial.println(ch); #endif   }   digitalWrite(MySwitch[ch].relay,MySwitch[ch].state); }  \/\/ \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 void autoOff(){   \/\/ \u0446\u0438\u043a\u043b \u043f\u043e \u0432\u0441\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0430\u043c   for (int i=0; i &lt; CH; i++) {     \/\/ \u0435\u0441\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0448\u043b\u043e - \u0449\u0435\u043b\u043a\u043d\u0435\u043c \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c     if ((millis() &gt;= MySwitch[i].time_off) && MySwitch[i].autostate) {       MySwitch[i].autostate = false;       doSwitch(i, LOW); #ifndef DEBUG       Serial.print(&quot;Auto OFF &quot;);       Serial.println(i); #endif     }   } }  \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0434\u043b\u0438\u043d\u0443 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f void pressDetect(int ch, unsigned long p_stop) {   if  (MySwitch[ch].press_start != 0) {     if ((p_stop-MySwitch[ch].press_start) &lt; LONGPRESS) {       \/\/ \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435       MySwitch[ch].press_stop = p_stop; #ifndef DEBUG       Serial.print(&quot;Short press &quot;);       Serial.println(ch); #endif       doSwitch(ch, MySwitch[ch].state ? LOW : HIGH);     }     else {       \/\/ \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 #ifndef DEBUG       Serial.print(&quot;Long press &quot;);       Serial.println(ch);       digitalWrite(13, HIGH);       delay(1000);       digitalWrite(13, LOW); #endif     }   } }  \/\/ \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b void chkLogic(){   \/* \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 (\u0434\u043b\u044f \u0441\/\u0443)      0-\u043a\u0430\u043d\u0430\u043b - \u0441\u0432\u0435\u0442 \u0441\/\u0443   1-\u043a\u0430\u043d\u0430\u043b - \u0432\u044b\u0442\u044f\u0436\u043a\u0430 \u0441\/\u0443      \u0435\u0441\u043b\u0438 0 \u043a\u0430\u043d\u0430\u043b \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c 1.5 \u043c\u0438\u043d\u0443\u0442\u044b, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438 1 \u043a\u0430\u043d\u0430\u043b.   \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 0 \u043a\u0430\u043d\u0430\u043b\u0430 - 1 \u043a\u0430\u043d\u0430\u043b \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 10 \u043c\u0438\u043d\u0443\u0442   *\/      \/\/ \u0435\u0441\u043b\u0438 \u0441\u0432\u0435\u0442 \u0433\u043e\u0440\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 1,5 \u043c\u0438\u043d\u0443\u0442\u044b, \u0430 \u0432\u044b\u0442\u044f\u0436\u043a\u0430 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 - \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0442\u044f\u0436\u043a\u0443   if ((onFlag == false) && (millis() &gt; (MySwitch[0].power_on + 90000)) && (MySwitch[0].state == HIGH) && (MySwitch[1].state == LOW) && (MySwitch[1].press_stop &lt; MySwitch[0].power_on)) {     \/\/ \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432\u044b\u0442\u044f\u0436\u043a\u0443     doSwitch(1, HIGH);     \/\/ \u0432\u0437\u0432\u043e\u0434\u0438\u043c \u0444\u043b\u0430\u0433 \u0430\u0432\u0442\u043e\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     onFlag = true;      logicFlag = true;     \/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0443     MySwitch[1].autostate = false; #ifndef DEBUG       Serial.println(&quot;Auto Logic ON&quot;); #endif   }      \/\/ \u0435\u0441\u043b\u0438 \u0432\u044b\u0442\u044f\u0436\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 - \u0434\u0430\u0434\u0438\u043c \u0435\u0439 \u043d\u043e\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f - \u0447\u0435\u0440\u0435\u0437 10 \u043c\u0438\u043d\u0443\u0442 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430   if ((logicFlag == true) && (offFlag == false) && (MySwitch[1].state == HIGH) && (MySwitch[0].state == LOW)) {     MySwitch[1].time_off = millis() + 600000;     MySwitch[1].autostate = true;     offFlag = true; #ifndef DEBUG       Serial.println(&quot;Auto Logic OFF started&quot;); #endif   }      \/\/ \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u0444\u043b\u0430\u0433\u0438   if ((logicFlag == true) && (MySwitch[0].state == LOW) && (MySwitch[1].state == LOW)) {     offFlag = false;     onFlag = false;     logicFlag = false;      #ifndef DEBUG       Serial.println(&quot;Logic reset&quot;); #endif   }      \/\/ \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0442\u044f\u0436\u043a\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e - \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0442\u044f\u0436\u043a\u0438   if ((logicFlag == false) && (offFlag == false) && (MySwitch[0].press_stop &gt; MySwitch[1].power_on) && (MySwitch[1].state == HIGH) && (MySwitch[0].state == LOW)) {     logicFlag = true; #ifndef DEBUG       Serial.println(&quot;Auto OFF 1 after manual OFF 0&quot;); #endif   } } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c. <br \/>  \u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043e\u043a \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b, \u0434\u043e\u043f.\u043b\u043e\u0433\u0438\u043a\u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442. \u041f\u043e \u0434\u043b\u0438\u043d\u043d\u043e\u043c\u0443 \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043b\u044e\u0431\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u2014 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0437\u0430\u0436\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 (D13) \u043d\u0430 \u0430\u0440\u0434\u0443\u0438\u043d\u043e.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0438 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. <\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u043c\u043e\u0438\u0445 \u0440\u0430\u043d\u043d\u0438\u0445 \u043f\u043e\u0441\u0442\u043e\u0432: <a href=\"http:\/\/habrahabr.ru\/post\/171613\/\">\u0411\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u00ab\u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430\u00bb<\/a>.<\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0442\u0430\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u2014 \u0432\u044b\u0434\u0435\u0440\u0436\u0430\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0438 \u043f\u0440\u0435\u0442\u0435\u0440\u043f\u0435\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430:  <\/p>\n<pre><code class=\"cpp\">typedef struct{   float Value;         \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435    boolean Status;      \/\/ \u0441\u0442\u0430\u0442\u0443\u0441   \/\/ 0 - RO   \/\/ 1 - RW   char Note[16];       \/\/ \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 }  Parameter; <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:  <\/p>\n<pre><code class=\"cpp\">typedef struct{            int SensorID;        \/\/ \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u0430\u0442\u0447\u0438\u043a\u0430   int CommandTo;       \/\/ \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043c\u043e\u0434\u0443\u043b\u044e \u043d\u043e\u043c\u0435\u0440 ...   int Command;         \/\/ \u043a\u043e\u043c\u0430\u043d\u0434\u0430   \/\/ 0 - \u043e\u0442\u0432\u0435\u0442   \/\/ 1 - \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435   \/\/ 2 - \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435   int ParamID;         \/\/ \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430    float ParamValue;    \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430   boolean Status;      \/\/ \u0441\u0442\u0430\u0442\u0443\u0441   \/\/ 0 - \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f (RO)   \/\/ 1 - \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c (RW)   char Comment[16];    \/\/ \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 } Message; <\/code><\/pre>\n<p>  \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e, \u043c\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<pre><code class=\"cpp\">#define SID 701                        \/\/ \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 #define NumSensors 8                   \/\/ \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432   Parameter MySensors[NumSensors+1] = {    \/\/ \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 (\u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f)   NumSensors,0,&quot;BR 2Floor&quot;,        \/\/ \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043c\u043e\u0434\u0443\u043b\u0435   0,1,&quot;Ch.1 (Light)&quot;,    \/\/ \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u0430 1 (\u0441\u0432\u0435\u0442)   0,1,&quot;Ch.2 (Vent)&quot;,     \/\/ \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u0430 2 (\u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u044f)   0,1,&quot;Ch.1 (LP)&quot;,       \/\/ \u0444\u043b\u0430\u0433 \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0432 1 \u043a\u0430\u043d\u0430\u043b\u0435   0,1,&quot;Ch.2 (LP)&quot;,       \/\/ \u0444\u043b\u0430\u0433 \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0432 2 \u043a\u0430\u043d\u0430\u043b\u0435   0,1,&quot;Auto-delayON&quot;,    \/\/ \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0442\u044f\u0436\u043a\u0438 (\u043f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430), \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445   0,1,&quot;Auto-delayOFF&quot;,   \/\/ \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0442\u044f\u0436\u043a\u0438 (\u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430), \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445   0,1,&quot;Ch.1 AutoOFF&quot;,    \/\/ \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 1 \u043a\u0430\u043d\u0430\u043b\u0435, \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445   0,1,&quot;Ch.2 AutoOFF&quot;     \/\/ \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 2 \u043a\u0430\u043d\u0430\u043b\u0435, \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445 }; Message sensor;  <\/code><\/pre>\n<p>  \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0415\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043a\u043e\u0434 \u0433\u043e\u0442\u043e\u0432.<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\/\/\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 #include &lt;avr\/wdt.h&gt; #include &lt;Bounce.h&gt; #include &lt;SPI.h&gt; #include &quot;RF24.h&quot; #include &lt;EEPROM.h&gt;  #define DEBUG \/\/ \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 - \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c  \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u043d\u0430\u043b\u043e\u0432 #define CH 2  \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0434\u043b\u044f \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f #define LONGPRESS 2000  \/\/ 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b  \/\/ \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0434\u0443\u043b\u044f #define SID 701                        \/\/ \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 #define NumSensors 8                   \/\/ \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432   \/\/ \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 &quot;\u043a\u0430\u043d\u0430\u043b\u0430&quot; typedef struct {   int button;                \/\/ \u043f\u0438\u043d \u043a\u043d\u043e\u043f\u043a\u0438   int relay;                 \/\/ \u043f\u0438\u043d \u0440\u0435\u043b\u0435   boolean state;             \/\/ \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (\u0432\u043a\u043b\/\u0432\u044b\u043a\u043b)   unsigned long power_on;    \/\/ \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430   unsigned long auto_off;    \/\/ \u0432\u0440\u0435\u043c\u044f, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c   unsigned long time_off;    \/\/ \u0432\u0440\u0435\u043c\u044f, \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f    boolean autostate;         \/\/ \u0444\u043b\u0430\u0433, \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0439, \u0447\u0442\u043e \u0436\u0434\u0435\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435    unsigned long press_start; \/\/ \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430\u0436\u0430\u043b\u0438   unsigned long press_stop;  \/\/ \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u043b\u0438 } Channel;  \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043d\u0430\u043b\u043e\u0432 Channel MySwitch[CH] = {   15, 3, LOW, 0, 0, 0, false, 0, 0,   14, 4, LOW, 0, 0, 0, false, 0, 0 };  \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 typedef struct{   float Value;         \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435    boolean Status;      \/\/ \u0441\u0442\u0430\u0442\u0443\u0441   \/\/ 0 - RO   \/\/ 1 - RW   char Note[16];       \/\/ \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 }  Parameter;  \/\/ \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 typedef struct{            int SensorID;        \/\/ \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u0430\u0442\u0447\u0438\u043a\u0430   int CommandTo;       \/\/ \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043c\u043e\u0434\u0443\u043b\u044e \u043d\u043e\u043c\u0435\u0440 ...   int Command;         \/\/ \u043a\u043e\u043c\u0430\u043d\u0434\u0430   \/\/ 0 - \u043e\u0442\u0432\u0435\u0442   \/\/ 1 - \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435   \/\/ 2 - \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435   int ParamID;         \/\/ \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430    float ParamValue;    \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430   boolean Status;      \/\/ \u0441\u0442\u0430\u0442\u0443\u0441   \/\/ 0 - \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f (RO)   \/\/ 1 - \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c (RW)   char Comment[16];    \/\/ \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 } Message;  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  Parameter MySensors[NumSensors+1] = {    \/\/ \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 (\u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f)   NumSensors,0,&quot;701 (2F, bath)&quot;,        \/\/ \u0432 \u043f\u043e\u043b\u0435 &quot;\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439&quot; \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0435 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432   0,1,&quot;Ch.1 (Light)&quot;,    \/\/ \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u0430 1 (\u0441\u0432\u0435\u0442)   0,1,&quot;Ch.2 (Vent)&quot;,     \/\/ \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u0430 2 (\u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u044f)   0,1,&quot;Ch.1 (LP)&quot;,       \/\/ \u0444\u043b\u0430\u0433 \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0432 1 \u043a\u0430\u043d\u0430\u043b\u0435   0,1,&quot;Ch.2 (LP)&quot;,       \/\/ \u0444\u043b\u0430\u0433 \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0432 2 \u043a\u0430\u043d\u0430\u043b\u0435   0,1,&quot;Auto-delayON&quot;,    \/\/ \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0442\u044f\u0436\u043a\u0438 (\u043f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430), \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445   0,1,&quot;Auto-delayOFF&quot;,   \/\/ \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0442\u044f\u0436\u043a\u0438 (\u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430), \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445   0,1,&quot;Ch.1 AutoOFF&quot;,    \/\/ \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 1 \u043a\u0430\u043d\u0430\u043b\u0435, \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445   0,1,&quot;Ch.2 AutoOFF&quot;     \/\/ \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 2 \u043a\u0430\u043d\u0430\u043b\u0435, \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445 };  Message sensor;   \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430 Bounce. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0438\u043d\u044b, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u0432\u0440\u0435\u043c\u044f \u0434\u0440\u0435\u0431\u0435\u0437\u0433\u0430 \u0432 \u043c\u0441. Bounce bouncer0 = Bounce(MySwitch[0].button,5);  Bounce bouncer1 = Bounce(MySwitch[1].button,5);   \/\/ \u0444\u043b\u0430\u0433 \u0434\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 boolean logicFlag = false; boolean onFlag = false; boolean offFlag = false;  \/\/RF24 radio(CE,CSN); RF24 radio(10,9);  unsigned long measureTime; #define DELTAMEASURE 15000  \/\/ \u0440\u0430\u0437 \u0432 15 \u0441\u0435\u043a\u0443\u043d\u0434 \u0431\u0443\u0434\u0435\u043c \u0444\u043b\u0443\u0434\u0438\u0442\u044c \u0432 \u044d\u0444\u0438\u0440  const uint64_t pipes[2] = {    0xF0F0F0F0A1LL, 0xF0F0F0F0A2LL };  volatile boolean waitRF24 = false;  void setup() {   wdt_disable(); \/\/ \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 bootloop      \/\/ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 EEPROM   prepareFromEEPROM();  #ifndef DEBUG   Serial.begin(9600);   Serial.println(&quot;Start!&quot;);   pinMode(13, OUTPUT); #endif   for(int i=0; i&lt;CH; i++) {     \/\/ \u0440\u0435\u043b\u0435     pinMode(MySwitch[i].relay, OUTPUT);          \/\/ \u043a\u043d\u043e\u043f\u043a\u0438     pinMode(MySwitch[i].button, INPUT);          \/\/ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u043a\u043d\u043e\u043f\u043e\u043a     digitalWrite(MySwitch[i].button, HIGH);     }   \/\/ \u0440\u0430\u0434\u0438\u043e    initRF24();    \/\/ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f (\u043a\u043e\u0433\u0434\u0430 \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b)   attachInterrupt(0, isr_RF24, FALLING);    measureTime = millis()+DELTAMEASURE;    \/\/delay(5000); \/\/ \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0448\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 bootloop #ifndef DEBUG   Serial.println(&quot;Ready!&quot;); #endif   wdt_enable (WDTO_8S); \/\/ \u0414\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u0435\u0435 8 \u0441\u0435\u043a. }  void loop() {    \/\/ \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438   button_read();    \/\/ \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435   autoOff();    \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b   chkLogic();    \/\/ \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0435\u043c \u0440\u0430\u0434\u0438\u043e   listenRF24();    \/\/ \u0435\u0441\u043b\u0438 \u043f\u043e\u0440\u0430 - \u043f\u043e\u0444\u043b\u0443\u0434\u0438\u043c \u0432 \u044d\u0444\u0438\u0440   floodRF24();    \/\/ \u0441\u0431\u0440\u043e\u0441\u0438\u043c \u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u0443\u044e \u0441\u043e\u0431\u0430\u043a\u0443   wdt_reset(); }   void  button_read(){    \/\/\u0435\u0441\u043b\u0438 \u0441\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 1   if ( bouncer0.update() ) {     if ( bouncer0.read() == LOW) {       \/\/ \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u044f       MySwitch[0].press_start = millis();     }     else {       \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u043a\u0430\u043a\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0431\u044b\u043b\u043e (\u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u0438\u043b\u0438 \u0434\u043b\u0438\u043d\u043d\u043e\u0435) \u0438 \u0434\u0435\u043b\u0430\u0435\u043c, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.       pressDetect(0, millis());     }   }    \/\/\u0435\u0441\u043b\u0438 \u0441\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 2   if ( bouncer1.update() ) {     if ( bouncer1.read() == LOW) {       MySwitch[1].press_start = millis();     }     else {       \/\/MySwitch[1].press_stop = millis();       pressDetect(1, millis());     }   } }  \/\/ \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f void doSwitch(int ch, boolean state){   \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f   MySwitch[ch].state = state;   \/\/ \u0435\u0441\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u0432 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 &quot;\u0412\u041a\u041b&quot; \u0438 \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0443\u043b\u044f   if (MySwitch[ch].state == HIGH) {     \/\/ \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     MySwitch[ch].power_on = millis();     if((MySwitch[ch].auto_off &gt; 0) && (MySwitch[ch].auto_off != 0)) {       \/\/ \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c       MySwitch[ch].time_off = MySwitch[ch].power_on + MySwitch[ch].auto_off;       MySwitch[ch].autostate = true;     } #ifndef DEBUG     Serial.print(&quot;ON &quot;);     Serial.println(ch); #endif   }   else {     \/\/ \u043e\u0442\u043b\u044e\u0447\u0438\u043c \u0440\u0435\u0436\u0438\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     MySwitch[ch].autostate = false;     \/\/ \u0441\u0431\u0440\u043e\u0441\u0438\u043c \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     MySwitch[ch].time_off = 0; #ifndef DEBUG     Serial.print(&quot;OFF &quot;);     Serial.println(ch); #endif   }   digitalWrite(MySwitch[ch].relay,MySwitch[ch].state); }  \/\/ \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 void autoOff(){   \/\/ \u0446\u0438\u043a\u043b \u043f\u043e \u0432\u0441\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0430\u043c   for (int i=0; i &lt; CH; i++) {     \/\/ \u0435\u0441\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0448\u043b\u043e - \u0449\u0435\u043b\u043a\u043d\u0435\u043c \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c     if ((millis() &gt;= MySwitch[i].time_off) && MySwitch[i].autostate) {       MySwitch[i].autostate = false;       doSwitch(i, LOW); #ifndef DEBUG       Serial.print(&quot;Auto OFF &quot;);       Serial.println(i); #endif     }   } }  \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0434\u043b\u0438\u043d\u0443 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f void pressDetect(int ch, unsigned long p_stop) {   if  (MySwitch[ch].press_start != 0) {     if (((p_stop-MySwitch[ch].press_start) &lt; LONGPRESS) && (p_stop-MySwitch[ch].press_start) &gt; 0) {       \/\/ \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435       MySwitch[ch].press_stop = p_stop; #ifndef DEBUG       Serial.print(&quot;Short press &quot;);       Serial.println(ch); #endif       doSwitch(ch, MySwitch[ch].state ? LOW : HIGH);     }     else {       \/\/ \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 #ifndef DEBUG       Serial.print(&quot;Long press &quot;);       Serial.println(ch);       digitalWrite(13, !digitalRead(13)); #endif       \/\/ \u0432\u0437\u0432\u043e\u0434\u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u043b\u0430\u0433 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432       MySensors[ch+3].Value = 1;       \/\/ \u0441\u0431\u0440\u043e\u0441 \u044d\u0442\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043d\u0430 &quot;\u0441\u043e\u0432\u0435\u0441\u0442\u0438&quot; \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430       \/\/ \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u043b\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 &quot;\u0432\u0437\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439&quot; \u0444\u043b\u0430\u0433, \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 (\u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0432\u043e\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0438)       \/\/ \u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u044e\u0443\u0449\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 &quot;\u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442&quot; \u0444\u043b\u0430\u0433     }   } }  \/\/ \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b void chkLogic(){   \/* \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 (\u0434\u043b\u044f \u0441\/\u0443)        0-\u043a\u0430\u043d\u0430\u043b - \u0441\u0432\u0435\u0442 \u0441\/\u0443    1-\u043a\u0430\u043d\u0430\u043b - \u0432\u044b\u0442\u044f\u0436\u043a\u0430 \u0441\/\u0443        \u0435\u0441\u043b\u0438 0 \u043a\u0430\u043d\u0430\u043b \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c 1.5 \u043c\u0438\u043d\u0443\u0442\u044b, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438 1 \u043a\u0430\u043d\u0430\u043b.    \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 0 \u043a\u0430\u043d\u0430\u043b\u0430 - 1 \u043a\u0430\u043d\u0430\u043b \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 10 \u043c\u0438\u043d\u0443\u0442    *\/    \/\/ \u0435\u0441\u043b\u0438 \u0441\u0432\u0435\u0442 \u0433\u043e\u0440\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 MySensors[5].Value \u0438 \u043e\u043d - \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0439), \u0430 \u0432\u044b\u0442\u044f\u0436\u043a\u0430 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 - \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0442\u044f\u0436\u043a\u0443   if ((onFlag == false) && (millis() &gt; (MySwitch[0].power_on + MySensors[5].Value*60000)) && (MySensors[5].Value != 0) && (MySwitch[0].state == HIGH) && (MySwitch[1].state == LOW) && (MySwitch[1].press_stop &lt; MySwitch[0].power_on)) {     \/\/ \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432\u044b\u0442\u044f\u0436\u043a\u0443     doSwitch(1, HIGH);     \/\/ \u0432\u0437\u0432\u043e\u0434\u0438\u043c \u0444\u043b\u0430\u0433 \u0430\u0432\u0442\u043e\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f     onFlag = true;      logicFlag = true;     \/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0443     MySwitch[1].autostate = false; #ifndef DEBUG     Serial.println(&quot;Auto Logic ON&quot;); #endif   }    \/\/ \u0435\u0441\u043b\u0438 \u0432\u044b\u0442\u044f\u0436\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 - \u0434\u0430\u0434\u0438\u043c \u0435\u0439 \u043d\u043e\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f - \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b ((\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 MySensors[6].Value \u0438 \u043e\u043d - \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0439) \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430   if ((logicFlag == true) && (offFlag == false) && (MySensors[6].Value != 0) && (MySwitch[1].state == HIGH) && (MySwitch[0].state == LOW)) {     MySwitch[1].time_off = millis() + MySensors[6].Value*60000;     MySwitch[1].autostate = true;     offFlag = true; #ifndef DEBUG     Serial.println(&quot;Auto Logic OFF started&quot;); #endif   }    \/\/ \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u0444\u043b\u0430\u0433\u0438   if ((logicFlag == true) && (MySwitch[0].state == LOW) && (MySwitch[1].state == LOW)) {     offFlag = false;     onFlag = false;     logicFlag = false;  #ifndef DEBUG     Serial.println(&quot;Logic reset&quot;); #endif   }    \/\/ \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0442\u044f\u0436\u043a\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e - \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0442\u044f\u0436\u043a\u0438   if ((logicFlag == false) && (offFlag == false) && (MySwitch[0].press_stop &gt; MySwitch[1].power_on) && (MySwitch[1].state == HIGH) && (MySwitch[0].state == LOW)) {     logicFlag = true; #ifndef DEBUG     Serial.println(&quot;Auto OFF 1 after manual OFF 0&quot;); #endif   } }  void floodRF24(){   \/\/ \u043f\u043e\u0444\u043b\u0443\u0434\u0438\u043c \u0432 \u044d\u0444\u0438\u0440\u0435 (1 \u0440\u0430\u0437 \u0432 DELTAMEASURE \u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434)   \/\/ \u0438\u043c\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c! \u0438\u043c\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u0430 - \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043f\u0440\u044f\u043c\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441!   if (millis() &gt; measureTime){     getValue();     \/\/ \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b     \/\/for (int i=1; i&lt;=NumSensors; i++) {     \/\/ \u0444\u043b\u0443\u0434\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 - \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c)     for (int i=1; i&lt;=4; i++) {       sendSlaveMessage(0, i);       delay(20);     }     measureTime = millis()+DELTAMEASURE;   } }  void getValue(){   MySensors[1].Value = MySwitch[0].state;   MySensors[2].Value = MySwitch[1].state;   return; }  \/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u044d\u0444\u0438\u0440\u0430 void isr_RF24(){   waitRF24 = true; }  \/\/ \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 (\u043e\u0442, \u043a\u043e\u043c\u0443, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430) - \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f (slave) \/\/ ! \u043d\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c ParamID void sendSlaveMessage(int To, int ParamID) {   \/\/ \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438\u0451\u043c\u0430   radio.stopListening();    radio.openWritingPipe(pipes[0]);   radio.openReadingPipe(1,pipes[1]);    delay(20);    \/\/\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438   sensor.SensorID = SID;   sensor.CommandTo = To;   sensor.Command = 0;   sensor.ParamID = ParamID;           sensor.ParamValue = MySensors[ParamID].Value;           sensor.Status = MySensors[ParamID].Status;   memcpy(&sensor.Comment,(char*)MySensors[ParamID].Note, 16);    \/\/\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e RF24   bool ok = radio.write( &sensor, sizeof(sensor) );     delay (20);     \/\/ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438\u0451\u043c\u0430   radio.openWritingPipe(pipes[1]);   radio.openReadingPipe(1,pipes[0]);   radio.startListening(); }  \/\/ \u0441\u043b\u0443\u0448\u0430\u0435\u043c \u0440\u0430\u0434\u0438\u043e void listenRF24(){   \/\/ \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b, \u0435\u0441\u043b\u0438 \u043f\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044e \u0431\u044b\u043b \u0432\u0437\u0432\u0435\u0434\u0435\u043d \u0444\u043b\u0430\u0433   if (waitRF24) {     waitRF24 = false;     \/\/ \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e     \/\/ \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430     if (radio.available()) {       bool done = false;       while (!done)       {         done = radio.read( &sensor, sizeof(sensor) );         \/\/ \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e - \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c         if (sensor.CommandTo == SID) {           \/\/ \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 (\u043e\u0442 \u043a\u043e\u0433\u043e, \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043f\u0430\u0440\u043c\u0435\u0442\u0440, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439)           doCommand(sensor.SensorID, sensor.Command, sensor.ParamID, sensor.ParamValue, sensor.Status, sensor.Comment);         }       }     }   } }   \/\/ \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 (\u043e\u0442 \u043a\u043e\u0433\u043e, \u043a\u043e\u043c\u0430\u043d\u0434\u0430, ID\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043c\u0435\u0442\u0440\u0430, \u0441\u0442\u0430\u0442\u0443\u0441, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439) - \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f void doCommand(int From, int Command, int ParamID, float ParamValue, boolean Status, char* Comment) {   \/\/ \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 - \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442 \u043a\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0430 \u043e\u0442 \u043a\u043e\u0433\u043e - \u043d\u0435\u0442   switch (Command) {   case 0:     \/\/ \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c      break;   case 1:       getValue();     \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430\u0437\u0430\u0434     sendSlaveMessage(From, ParamID);     break;   case 2:     \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c     setValue(From, ParamID, ParamValue, Comment);     \/\/ \u043e\u0442\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u0441\u044f     sendSlaveMessage(From, ParamID);     break;   default:     break;    } }    \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 (\u043e\u0442, \u0447\u0442\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439) void setValue(int From, int ParamID, float ParamValue, char* Comment) {   \/\/ \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0436\u0435 \u0438 \u0442\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 - \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443   if(MySensors[ParamID].Value != ParamValue){     \/\/ \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c\/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c - \u0434\u0435\u043b\u0430\u0435\u043c (\u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c) &quot;\u0438\u043c\u0438\u0442\u0430\u0446\u0438\u044e&quot; \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043a\u043d\u043e\u043f\u043a\u0438     \/\/ \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u043d\u0435 &quot;\u0434\u0435\u0440\u0433\u0430\u0435\u043c&quot; \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u0447\u0435\u043c \u0437\u0440\u044f (\u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c)     if((ParamID&lt;3) && (MySwitch[ParamID-1].state != (boolean)ParamValue)) {       \/\/ &quot;\u043d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443&quot;       MySwitch[ParamID-1].press_start = millis()-50;       \/\/ &quot;\u043e\u0442\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443&quot; (\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e &quot;\u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044e&quot; \u0441\u0430\u043c\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443)       pressDetect(ParamID-1, millis());     }     else {  \/\/ \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c       MySensors[ParamID].Value = ParamValue;       \/\/ \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b - \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0432 EEPROM       if (ParamID &gt; 4){         EEPROM.write(ParamID-5, MySensors[ParamID].Value);         \/\/ \u043e\u0431\u043d\u043e\u0432\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043d\u0430\u043b\u0430         if(ParamID &gt; 6) {           MySwitch[ParamID-7].auto_off = ((unsigned long)MySensors[ParamID].Value)*60000;         }       }     }   } }  void initRF24(){   radio.begin();   radio.setRetries(15,15);   \/\/ \u043d\u043e\u043c\u0435\u0440 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 (\u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u0439)   radio.setChannel(100);   radio.openWritingPipe(pipes[0]);   radio.openReadingPipe(1,pipes[1]);   radio.startListening(); \/\/ \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438\u0451\u043c\u0430 }  void prepareFromEEPROM() {   \/\/ 4 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 = 4 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e 1 \u0431\u0430\u0439\u0442\u0443:      \/\/ 0 - \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0442\u044f\u0436\u043a\u0438 (\u043f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430), \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445   \/\/ 1 - \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0442\u044f\u0436\u043a\u0438 (\u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430), \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445   \/\/ 2 - \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 1 \u043a\u0430\u043d\u0430\u043b\u0435, \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445   \/\/ 3 - \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 2 \u043a\u0430\u043d\u0430\u043b\u0435, \u0432 \u043c\u0438\u043d\u0443\u0442\u0430\u0445      for(int i=0; i&lt;4; i++) {     MySensors[i+5].Value = EEPROM.read(i);   }      \/\/ \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0430\u0432\u0442\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f   for(int i=0; i&lt;CH; i++) {     MySwitch[i].auto_off = ((unsigned long)MySensors[i+7].Value)*60000;   } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u043d\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c. <\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"http:\/\/learn.adafruit.com\/usbtinyisp\">\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 USBtinyISP<\/a>.<\/p>\n<p>  \u041f\u0440\u043e\u0448\u0438\u043b, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u2014 \u0432\u0441\u0435 \u043e\u043a, \u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432 \u00ab\u0447\u0438\u0441\u0442\u043e\u043c\u00bb \u041c\u041a \u0432\u0441\u0435 \u0431\u0430\u0439\u0442\u044b EEPROM \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432 255, \u0447\u0442\u043e \u0434\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438. <\/p>\n<p>  \u041f\u043e \u043a\u043e\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0432\u044b\u0448\u0435, \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u0441\u0435\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b. \u041d\u043e \u043f\u0440\u043e \u00ab\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u00bb \u044f \u0435\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u00ab\u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u00bb \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443. <\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 EEPROM \u0438 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043d\u0438\u0445 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 (\u0431\u043e\u043b\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u044d\u043d\u0435\u0440\u0433\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a, \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c.   <\/p>\n<blockquote><p>\u0415\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044e \u0441\u0432\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043c\u043e\u0435\u0433\u043e \u00ab\u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430\u00bb: <i>\u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0446\u0435\u043b\u0438 \u0438 \u043e\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e<\/i>.<\/p><\/blockquote>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438 \u0433\u043e\u0442\u043e\u0432\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u044e \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e (\u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0430). \u041c\u043e\u0436\u043d\u043e \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u044f<\/h4>\n<p>  \u0420\u0430\u0434\u0438\u043e\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u044c \u0441\u0442\u0435\u043d\u044b \u0438\u0437 \u0433\u0438\u043f\u0441\u043e\u043a\u0430\u0440\u0442\u043e\u043d\u0430 \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043a\u043e\u0440\u043f\u0443\u0441 (\u0447\u0442\u043e\u0431\u044b \u0432 \u043d\u0435\u0433\u043e \u0432\u043b\u0435\u0437 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u0431\u043b\u043e\u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0438 \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0442 \u043a\u043e\u0440\u043f\u0443\u0441 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u043e\u043f\u0438\u0445\u043d\u0443\u0442\u044c \u0432 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0438).<\/p>\n<p>  \u041f\u043b\u0430\u0442\u0443 \u0431\u043b\u043e\u043a\u0430 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0432\u0437\u044f\u043b \u0442\u0430\u043c \u0436\u0435, \u0433\u0434\u0435 \u0438 <a href=\"http:\/\/habrahabr.ru\/post\/195884\/\">\u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437<\/a> \u2014 \u0440\u0430\u0441\u043f\u0438\u043b\u0438\u043b \u0431\u043b\u043e\u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0434\u043b\u044f iPhone. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c <a href=\"http:\/\/easyelectronics.ru\/kondensatornoe-pitanie.html\">\u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044f<\/a> \u0438\u043b\u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"http:\/\/www.aliexpress.com\/store\/group\/Single-Output-Power-Module\/208521_211361961.html\">\u0442\u0443\u0442<\/a>).<\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a (\u0442\u0443\u0442 \u0443\u0436\u0435 \u0432\u0441\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u0435\u0440\u0435\u0434 \u043c\u043e\u043d\u0442\u0430\u0436\u043e\u043c \u0432 \u0441\u0442\u0435\u043d\u0443):<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ca4\/f33\/68c\/ca4f3368cf462b7f12ba8ae3e149937e.jpg\"\/><\/p>\n<p>  \u041a\u043e\u0440\u043f\u0443\u0441 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u0432\u0430\u0442, \u043d\u043e \u0438\u043c\u0435\u044e\u0449\u0438\u0439\u0441\u044f \u0432 \u0445\u043e\u0437\u044f\u0439\u0441\u0442\u0432\u0435 \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043b\u043a\u0438\u0439 \u2014 \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u0435\u043b. <\/p>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u0431\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043e\u0440\u043f\u0443\u0441 \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434 \u043d\u0435\u0433\u043e, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u0441\u043e\u0431\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u00ab\u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c\u00bb.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u00ab\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435\u043c\u00bb \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u0441\u0442\u0435\u043d\u0443 (\u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443\u0432\u043b\u0435\u043a\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0438 \u0437\u0430\u0431\u044b\u043b \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435):  <\/p>\n<ul>\n<li>\u041e\u0431\u0435\u0441\u0442\u043e\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0446\u0435\u043f\u044c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f.<\/li>\n<li>\u0414\u0435\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0438\u043c\u0435\u044e\u0449\u0438\u0439\u0441\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c (\u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u044b \u0438\u0434\u0443\u0442 \u043d\u0430 \u0441\u0432\u0435\u0442, \u0430 \u043a\u0430\u043a\u0438\u0435 \u2014 \u043d\u0430 \u0432\u044b\u0442\u044f\u0436\u043a\u0443).<\/li>\n<li>\u0421\u043d\u0438\u043c\u0430\u0435\u043c \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0443\u044e \u043a\u043e\u0440\u043e\u0431\u043a\u0443<\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0430\u0434\u0438\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0430\u043c (\u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u044f\u0441\u044c \u043e\u0442 \u00ab\u0441\u043a\u0440\u0443\u0442\u043e\u043a\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u00ab\u0434\u043e\u0431\u0440\u044b\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u0438\u00bb).<\/li>\n<li>\u0410\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0437\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u0438 \u0440\u0430\u0434\u0438\u043e\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a \u043c\u0435\u0436\u0434\u0443 \u043b\u0438\u0441\u0442\u0430\u043c\u0438 \u0433\u0438\u043f\u0441\u043e\u043a\u0430\u0440\u0442\u043e\u043d\u0430 (\u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u044b\u0448\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438).<\/li>\n<li>\u0412\u044b\u0432\u043e\u0434\u0438\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043e\u0447\u043d\u044b\u0439 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 (\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u043b \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u043e\u0434\u043a\u0438 \u043a\u0430\u0431\u0435\u043b\u044c \u2014 \u041c\u0413\u0422\u0424, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0447\u0435\u0433\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u043a\u0443 \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0442\u0443\u0442 \u00ab\u0447\u0442\u043e-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435\u00bb \u0438 \u0441 \u044d\u0442\u0438\u043c \u043d\u0430\u0434\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f).<\/li>\n<li>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0443\u044e \u043a\u043e\u0440\u043e\u0431\u043a\u0443 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043e\u0447\u043d\u044b\u0439 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c.<\/li>\n<\/ul>\n<p>  \u0412\u0441\u0435, \u0433\u043e\u0442\u043e\u0432\u043e. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a, \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c.<\/p>\n<h4>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h4>\n<p>  \u0421\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u043e \u00ab\u0442\u0443\u043f\u043e\u0439\u00bb \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043a \u043d\u0435\u043c\u0443 \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u00ab\u0443\u043c\u0430\u00bb (\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u00ab\u0437\u0430\u0431\u044b\u0432\u0447\u0438\u0432\u043e\u0441\u0442\u0438\u00bb \u0445\u043e\u0437\u044f\u0435\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0442\u044f\u0436\u043a\u0438 \u0438 \u0442.\u043f.).<\/p>\n<p>  <b>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442&#8230;<\/b><\/p>\n<p>  <b>P.S.<\/b> \u0412 <a href=\"http:\/\/habrahabr.ru\/post\/211126\/#comment_7271760\">\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438<\/a> <a href=\"http:\/\/habrahabr.ru\/post\/211126\/\">\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430<\/a> \u0431\u044b\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0439 \u0431\u0430\u0437\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432.   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0432 \u0440\u0443\u043a\u0438 \u043c\u043d\u0435 \u043f\u043e\u043f\u0430\u043b \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0437\u0432\u0435\u0440\u0435\u043a:<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/786\/45c\/28f\/78645c28f1a80099a1904c369506a278.jpg\"\/><\/p>\n<p>  \u042d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0440\u0435\u043b\u0435 (\u043e\u0447\u0435\u043d\u044c \u0442\u0438\u0445\u043e\u0435) \u0441 \u0434\u0432\u0443\u043c\u044f \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u043a\u043e\u043c\u043c\u0443\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432. \u041c\u043e\u0436\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\/\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0446\u0435\u043f\u0438 \u043d\u0430 220\u0412 (\u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u043d\u043e \u0434\u043b\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043d\u044b\u0445 \u043b\u0430\u043c\u043f \u2014 \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442). \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f 5\u0412, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u0432\u044b\u0432\u043e\u0434\u0443 \u041c\u041a (\u0431\u0435\u0437 \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u0430). <\/p><\/div>\n<\/div>\n<p>  \u042d\u0442\u043e \u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043a \u0434\u043e\u0433\u043c\u0435 (\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u00ab\u043e\u0434\u0438\u043d \u0432 \u043e\u0434\u0438\u043d\u00bb) \u2014 \u0438\u0449\u0438\u0442\u0435, \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u044b\u0435 (\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438) \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0439\u0442\u0435!<\/p>\n<p>  <b>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/b>:  <\/p>\n<ul>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/189744\/\">Arduino watchdog \u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 RESET \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044f<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/171613\/\">\u0411\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u00ab\u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430\u00bb<\/a><\/li>\n<li><a href=\"http:\/\/easyelectronics.ru\/kondensatornoe-pitanie.html\">\u041a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u0435<\/a><\/li>\n<\/ul>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e <a href=\"http:\/\/habrahabr.ru\/users\/nikita_rogatnev\/\" class=\"user_link\">Nikita_Rogatnev<\/a> \u0437\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043a \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/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:\/\/habrahabr.ru\/post\/215177\/\"> http:\/\/habrahabr.ru\/post\/215177\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u0441\u0442\u0430\u0445 \u043c\u044b <a href=\"http:\/\/habrahabr.ru\/post\/211126\/\">\u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u0441\u0434\u0435\u043b\u0430\u043b\u0438<\/a> \u0438 \u0432\u0441\u0435\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/212785\/\">\u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438<\/a> \u0431\u043b\u043e\u043a \u0434\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0434\u0438\u043e\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ca4\/f33\/68c\/ca4f3368cf462b7f12ba8ae3e149937e.jpg\"\/><\/p>\n<p>  \u041d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u00ab\u0431\u0435\u0437\u0434\u0443\u0448\u043d\u0430\u044f \u0436\u0435\u043b\u0435\u0437\u043a\u0430\u00bb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0441\u044e \u0441\u0432\u043e\u044e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0449\u044c, \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u0432 \u041c\u041a, \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u043c\u0435\u0435\u0442.   <\/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-215177","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/215177","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=215177"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/215177\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=215177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=215177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=215177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}