{"id":280957,"date":"2016-11-15T04:20:05","date_gmt":"2016-11-15T01:20:05","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=280957"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=280957","title":{"rendered":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b FLProg"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f43\/c88\/08d\/f43c8808d99e492799e45c1150a92a6e.PNG\"\/><br \/>  \u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c. <br \/>  \u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 FLProg \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 2.1. \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0431\u043b\u043e\u043a\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043c\u0435\u043d\u044e. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. <br \/>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443. \u0421\u043e\u0431\u0435\u0440\u0451\u043c \u0431\u043b\u043e\u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u043d\u044e \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u043e\u0433\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u043c \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437:<br \/>  Arduino \u2013Uno<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/geektimes\/post_images\/1a0\/2c5\/d58\/1a02c5d586dc97b19e81533d1262933e.jpg\" alt=\"image\"\/><\/p>\n<p>  LCD Keypad Shield<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/geektimes\/post_images\/9d1\/f30\/180\/9d1f30180bf9320484e83bf1f82b9ddf.jpg\" alt=\"image\"\/><\/p>\n<p>  \u0434\u0432\u0443\u0445 \u0440\u0435\u043b\u0435\u0439\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b22\/785\/6ac\/b227856ac0bb4dffa0fc847e65a0d24a.jpg\"\/><\/p>\n<p>  \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0437\u0443\u043c\u043c\u0435\u0440\u0430<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a02\/c85\/3f9\/a02c853f9ed34ae7adeffeb192625770.jpg\"\/><\/p>\n<p>  \u0412\u043e\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/077\/827\/9ab\/0778279ab3d74ee2803788911f35bcf0.PNG\"\/><\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442.<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/geektimes\/post_images\/5b7\/28e\/f28\/5b728ef28a3cd2d15bc5cbbd7dc115cf.png\" alt=\"image\"\/><\/div>\n<\/div>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/00d\/c52\/7cf\/00dc527cfa24412a84a4c3d83682091d.png\"\/><\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c \u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0442 -20 \u0434\u043e 80. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u043b\u043e\u043a\u0430 Scale.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c92\/a17\/b1c\/c92a17b1cedd4e8bbbc3ac50c1df8dd1.PNG\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0f2\/868\/fdb\/0f2868fdb81d474eaac3afdeb4f1ff29.png\"\/><\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b \u043a\u043d\u043e\u043f\u043e\u043a LCD Keypad Shield \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b. \u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 5Bin1. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u043c <a href=\"http:\/\/flprog.ru\/video\/vip\/16\/video_lessons\/rabota_s_blokami_polzovatelja_v_programme_flprog_i_sozdanie_bloka_polzovatelja_na_jazyke_fbd\">\u0443\u0440\u043e\u043a\u0435<\/a>, \u0442\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0430 \u0448\u0438\u043b\u0434\u0435 \u043c\u0430\u043b\u043e\u0432\u0430\u0442\u043e, \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u201cSelect\u201d. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/725\/f59\/ea0\/725f59ea0ec9426f83114df9ddf3bd4a.png\"\/><\/p>\n<p>  \u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041f\u0440\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u00ab\u0417\u0430\u0439\u0442\u0438 \u0432 \u043c\u0435\u043d\u044e\u00bb, \u043f\u0440\u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c (\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 TON), \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u00ab\u0412\u044b\u0439\u0442\u0438 \u0438\u0437 \u043c\u0435\u043d\u044e\u00bb.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cbb\/b68\/442\/cbbb68442fc8415ba9d9b47a285051c5.png\"\/><\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043c\u0435\u043d\u044e. \u0422\u0430\u0439\u043c\u0435\u0440 TON \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<br \/>  \u041d\u0443 \u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043b\u0430\u0442\u0430 \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c \u043c\u0435\u043d\u044e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/ce5\/a61\/842\/ce5a61842ed346dcaa88522494dd44e7.png\"\/><\/p>\n<p>  \u0412 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0431\u043b\u043e\u043a\u0430 \u043c\u0435\u043d\u044e (\u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u00ab\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u00bb \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0431\u043b\u043e\u043a\u0430) \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0431\u043b\u043e\u043a\u0430. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u0441\u0442\u043e\u0439\u043a\u0438 \u0431\u043b\u043e\u043a\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435.<\/p>\n<p>  \u0412\u043a\u043b\u0430\u0434\u043a\u0430 \u2013 \u00ab\u0414\u0435\u0440\u0435\u0432\u043e \u043c\u0435\u043d\u044e\u00bb<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/7da\/fef\/f06\/7dafeff06ed3489f9771bcb53446222c.PNG\"\/><\/p>\n<p>  \u0414\u0435\u0440\u0435\u0432\u043e \u043c\u0435\u043d\u044e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u0440\u0443\u043f\u043f \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0432\u0443\u043a\u0430. \u0412\u043e\u043e\u0431\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u0435\u043d\u044e \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0447\u0442\u043e \u0431\u044b \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. <\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8ac\/e29\/30c\/8ace2930c093456996ea5482fddec803.PNG\"\/><\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/030\/040\/10f\/03004010fb70405d849563ed27b72a93.PNG\"\/><\/p>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0442\u043e\u0447\u043d\u044e \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 EEPROM. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0432 EEPROM \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440.<br \/>  \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u043d\u043a\u0442\u044b \u043c\u0435\u043d\u044e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u044d\u0442\u043e\u043c\u0443. <\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u043e\u043c<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b47\/504\/44c\/b4750444cf6745b7b5203be061930d3e.PNG\"\/><\/p>\n<p>  \u0422\u0435\u043a\u0441\u0442\u044b \u0434\u043b\u044f True \u0438 False \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 ValStr \u043f\u0440\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e.<\/p>\n<p>  \u0417\u0430\u043a\u043b\u0430\u0434\u043a\u0430 \u2013 \u00ab\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044e\u00bb<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/4ab\/dd6\/a85\/4abdd6a85aa140cf9eb6eccb4c773b77.PNG\"\/><\/p>\n<p>  \u0422\u0443\u0442 \u0432\u0440\u043e\u0434\u0435 \u0432\u0441\u0451 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/p>\n<p>  \u0417\u0430\u043a\u043b\u0430\u0434\u043a\u0430 \u2013 \u00ab\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c\u00bb<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3ce\/725\/db0\/3ce725db01654b6cbb77f666b5a0a772.PNG\"\/><\/p>\n<p>  \u0412 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043a\u0440\u0430\u0442\u043a\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430. \u0415\u0441\u043b\u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u0431\u043e\u043b\u0435\u0435 2 \u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u043a\u0430\u0436\u0434\u044b\u0435 \u043f\u043e\u043b\u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u0435\u0449\u0451 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 2 \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0435\u0440\u0438\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u0441\u044f \u0434\u043e 200 ms.<\/p>\n<p>  \u0417\u0430\u043a\u043b\u0430\u0434\u043a\u0430 \u00ab\u0412\u044b\u0445\u043e\u0434\u0430\u00bb<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/311\/021\/988\/311021988446400fbe031f33b8bf7e9e.PNG\"\/><\/p>\n<p>  \u0412\u044b\u0445\u043e\u0434 \u00ab\u0410\u043a\u0442\u0438\u0432\u043d\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e\u00bb \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u00ab\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043c\u0435\u043d\u044e\u00bb. <br \/>  \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0432\u0435 \u043f\u043b\u0430\u0442\u044b \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b, \u0438 \u0432 \u043e\u0441\u043e\u0431\u044b\u0445 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u0445 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a13\/8a1\/bac\/a138a1bac2f4401ba2a7f2dec99e2856.png\"\/><\/p>\n<p>  \u041e\u0431\u0440\u0430\u0449\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0432\u0445\u043e\u0434\u044b CanValUp \u0443 \u0431\u043b\u043e\u043a\u043e\u0432 MenuValue. \u041f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0445\u043e\u0434\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 Q \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e. \u041f\u043e \u0437\u0430\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0445\u043e\u0434\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u00ab\u0437\u0430\u043c\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00bb \u0434\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0445\u043e\u0434\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u0434\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u0435\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u0435\u043d\u044e).<\/p>\n<p>  \u041e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u043f\u043b\u0430\u0442\u044b \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u044b \u0438 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/123\/b94\/024\/123b940249bb41fe95f982bd73751cf3.png\"\/><\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>#include &lt;LiquidCrystal.h&gt; #include &lt;EEPROMex.h&gt; LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7); int _dispTempLength1 = 0; boolean _isNeedClearDisp1;   struct UB_142171746 {   bool ubo_101667604 = 0;   bool ubo_51674151 = 0;   bool ubo_137412502 = 0;   bool ubo_174461762 = 0;   bool ubo_157422683 = 0;   int _gtv1 = 0;   int _gtv2 = 0;   int _gtv3 = 0;   int _gtv4 = 0;   int _gtv5 = 0;   bool _bounse1S = 0;   bool _bounse1O = 0;   unsigned long _bounse1P = 0UL;   bool _bounse2S = 0;   bool _bounse2O = 0;   unsigned long _bounse2P = 0UL;   bool _bounse3S = 0;   bool _bounse3O = 0;   unsigned long _bounse3P = 0UL;   bool _bounse4S = 0;   bool _bounse4O = 0;   unsigned long _bounse4P = 0UL;   bool _bounse5S = 0;   bool _bounse5O = 0;   unsigned long _bounse5P = 0UL; }; UB_142171746 UB_142171746_Instance1; int UB_142171746_ubi_125089190 = 0; const byte _menuParametrsArray[]  PROGMEM =  {1, 0, 0, 4, 5, 0, 0, 0, 0, 0, 6, 9, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 7, 9, 0, 3, 3, 1, 0, 0, 0, 10, 11, 1, 8, 3, 0, 0, 4, 4, 4, 0, 0, 1, 0, 0, 1, 4, 5, 0, 8, 5, 4, 3, 0, 0, 1, 0, 0, 1, 4, 4, 0, 8, 6, 4, 2, 0, 0, 2, 0, 0, 1, 4, 2, 0, 8, 7, 4, 1, 0, 0, 2, 0, 0, 1, 4, 1, 0, 8}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[]  PROGMEM =  {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[]  PROGMEM =  {1}; const char _flprogMenuNameString1[] PROGMEM = &quot;Vent-Off&quot;; const char _flprogMenuNameString2[] PROGMEM = &quot;Vent-On&quot;; const char _flprogMenuNameString3[] PROGMEM = &quot;Sound&quot;; const char _flprogMenuNameString4[] PROGMEM = &quot;Heater-Off&quot;; const char _flprogMenuNameString5[] PROGMEM = &quot;Heater-On&quot;; const char _flprogMenuNameString6[] PROGMEM = &quot;HeaterSetting&quot;; const char _flprogMenuNameString7[] PROGMEM = &quot;Vent Setting&quot;; const char _flprogMenuNameString8[] PROGMEM = &quot;C&quot;; const char _flprogMenuNameString9[] PROGMEM = &quot;Enter to submenu&quot;; const char _flprogMenuNameString10[] PROGMEM = &quot;On&quot;; const char _flprogMenuNameString11[] PROGMEM = &quot;Off&quot;; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1,  _flprogMenuNameString2,  _flprogMenuNameString3,  _flprogMenuNameString4,  _flprogMenuNameString5,  _flprogMenuNameString6,  _flprogMenuNameString7,  _flprogMenuNameString8,  _flprogMenuNameString9,  _flprogMenuNameString10,  _flprogMenuNameString11}; struct _menuItemStricture {   int startInArrayIndex; }; struct _menuMainStricture {   byte startIndex;   byte stopIndex;   bool isSwitchMenuAroundRing;   _menuItemStricture  currentItem; }; _menuItemStricture _MenuItems[7]; _menuMainStricture _MainMenus[1]; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv6; bool _gtv7; bool _gtv8; bool _gtv9; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; String _swi2; String _swi1; bool _trgrt1 = 0; bool _trgrt1I = 0; int _disp1oldLength = 0; bool _trgrt2 = 0; bool _trgrt2I = 0; int _disp3oldLength = 0; int Menu_Value_4_TVD = 0; bool _trgrt3 = 0; bool _trgrt3I = 0; int Menu_Value_2_TVD = 0; int _disp4oldLength = 0; bool _trgr4 = 0; bool _trgr2 = 0; bool _trgr1 = 0; bool _trgr3 = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_OVUIS = 0; bool _MenuBlock_47814740_OVDIS = 0; unsigned long _MenuBlock_47814740_VUDST = 0UL; unsigned long _MenuBlock_47814740_VUDSPT = 0UL; byte _MenuBlock_47814740_VUDSM = 0; int _MenuBlock_47814740_VUDPT = 0; bool _MenuBlock_47814740_AMMO = 0; bool _tim2I = 0; bool _tim2O = 0; unsigned long _tim2P = 0UL; bool _tim3I = 0; bool _tim3O = 0; unsigned long _tim3P = 0UL; bool _tim1I = 0; bool _tim1O = 0; unsigned long _tim1P = 0UL; int _disp2oldLength = 0; int Menu_Value_3_TVD = 0; int Menu_Value_1_TVD = 0; void setup() {   if ((EEPROM.read(0)) != 98) {     EEPROM.write(0, 98) ;     EEPROM.updateInt(4, 40);     EEPROM.updateInt(2, 30);     EEPROM.updateBit(1, 0, 0);     EEPROM.updateInt(6, 25);     EEPROM.updateInt(8, 10);   }   pinMode(2, OUTPUT);   pinMode(3, OUTPUT);   pinMode(11, OUTPUT);    _lcd1.begin(16, 2);   _MenuItems[0].startInArrayIndex = 0;   _MenuItems[1].startInArrayIndex = 13;   _MenuItems[2].startInArrayIndex = 26;   _MenuItems[3].startInArrayIndex = 39;   _MenuItems[4].startInArrayIndex = 52;   _MenuItems[5].startInArrayIndex = 65;   _MenuItems[6].startInArrayIndex = 78;   _MainMenus[0].startIndex = 1;   _MainMenus[0].isSwitchMenuAroundRing = 1;   _MainMenus[0].stopIndex = 3;   _MainMenus[0].currentItem = _MenuItems[0];   _menuValueArray_int[0] = (EEPROM.readInt(2));   _menuValueArray_int[1] = (EEPROM.readInt(4));   _menuValueArray_bool[0] = (EEPROM.readBit(1, 0));   _menuValueArray_int[2] = (EEPROM.readInt(6));   _menuValueArray_int[3] = (EEPROM.readInt(8)); } void loop() { bool _tempVariable_bool;   byte _tempVariable_byte;   if (_isNeedClearDisp1) {     _lcd1.clear();     _isNeedClearDisp1 = 0;   }       _gtv11 = (map(( (analogRead (1))), (0), (1023), (-20), (80)));   UB_142171746_ubi_125089190 =  (analogRead (0));   UB_142171746_Instance1 = _func_UB_142171746(UB_142171746_Instance1, UB_142171746_ubi_125089190, 96, 250, 402, 635);   _gtv3 = UB_142171746_Instance1.ubo_101667604;   _gtv4 = UB_142171746_Instance1.ubo_51674151;   _gtv5 = UB_142171746_Instance1.ubo_137412502;   _gtv2 = UB_142171746_Instance1.ubo_174461762;   _gtv1 = UB_142171746_Instance1.ubo_157422683;   if (_gtv1)   {     if (_tim1I) {       if (_isTimer(_tim1P, 2000)) {         _tim1O = 1;       }     } else {       _tim1I = 1;       _tim1P = millis();     }   } else {     _tim1O = 0;     _tim1I = 0;   }   if (_tim2O) _trgr2 = 0;   if (_tim1O) _trgr2 = 1;   if (_trgr2) {     if (_trgrt3I) {       _trgrt3 = 0;     } else {       _trgrt3 = 1;       _trgrt3I = 1;     }   } else {     _trgrt3 = 0;     _trgrt3I = 0;   };   if (_trgrt1) {     _tim2O = 1;     _tim2I = 1;   } else {     if (_tim2I) {       _tim2I = 0;       _tim2P = millis();     } else {       if (_tim2O) {         if ( _isTimer(_tim2P, 200)) _tim2O = 0;       }     }   }   if (!(_gtv1)) {     if (_trgrt1I) {       _trgrt1 = 0;     } else {       _trgrt1 = 1;       _trgrt1I = 1;     }   } else {     _trgrt1 = 0;     _trgrt1I = 0;   };   _gtv8 = _trgrt3;   _gtv7 = ( (!(_trgr2)) && (_trgrt1) );   if (1)   {     if (_tim3I) {       if (_isTimer(_tim3P, 200)) {         _tim3O = 1;       }     } else {       _tim3I = 1;       _tim3P = millis();     }   } else {     _tim3O = 0;     _tim3I = 0;   }   if (!(_gtv7)) {     if (_trgrt2I) {       _trgrt2 = 0;     } else {       _trgrt2 = 1;       _trgrt2I = 1;     }   } else {     _trgrt2 = 0;     _trgrt2I = 0;   };   if (( (_gtv9) && (_gtv8) )) _trgr1 = 0;   if (( (_tim3O) && (_trgrt2) )) _trgr1 = 1;   _gtv6 = _trgr1;   if (_gtv6) {     _tempVariable_bool  =  1;     if ( ! _MenuBlock_47814740_OEIS ) {       _MenuBlock_47814740_OEIS = 1;       _MainMenus[0].currentItem = _MenuItems[0];     }     _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]);     _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     _MenuBlock_47814740_VNO = _menuOutputValueString (0);     _MenuBlock_47814740_AMMO = (pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 5]) ) == 0;     _tempVariable_byte  =  pgm_read_byte(&_menuParametrsArray[(((_MainMenus[0]).currentItem).startInArrayIndex) + 12]);     if (_tempVariable_byte == 0 ) {       _MenuBlock_47814740_ASO_1 =  &quot;&quot;;     } else {       _MenuBlock_47814740_ASO_1 =  _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     }   } else {     _tempVariable_bool  =  0;     if (_MenuBlock_47814740_OEIS) {       _MenuBlock_47814740_OEIS = 0;       _menuUpdateToEEpromItems();     }     _MenuBlock_47814740_AMMO = 0;     _MenuBlock_47814740_ASO_1 =  &quot;&quot;;     _MenuBlock_47814740_MNO = &quot;&quot;;     _MenuBlock_47814740_VNO = &quot;&quot;;   }   if (_gtv4) {     if ( ! _MenuBlock_47814740_OMUIS) {       _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) {         _menuUpEvents(0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OMUIS = 0;   }   if (_gtv5) {     if ( ! _MenuBlock_47814740_OMDIS) {       _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) {         _menuDownEvents(0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OMDIS = 0;   }   if (( (_gtv7) && (_gtv6) )) {     if ( ! _MenuBlock_47814740_OEMIS) {       _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) {         _menuEnterTheMenuEvents (0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OEMIS = 0;   }   if (_gtv8) {     if ( ! _MenuBlock_47814740_OExFMIS) {       _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) {         _menuExitFromMenuEvents (0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OExFMIS = 0;   }   if (_gtv3) {     if ( ! _MenuBlock_47814740_OVUIS) {       _MenuBlock_47814740_OVUIS = 1;       if (_tempVariable_bool) {         _valueUpEvents(0);         _MenuBlock_47814740_VUDST = millis();       }     } if (_tempVariable_bool) {       if (_MenuBlock_47814740_VUDSM == 0) {         if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) {           _MenuBlock_47814740_VUDSM = 1;           _MenuBlock_47814740_VUDSPT = millis();           _MenuBlock_47814740_VUDPT  = 500;         }       }  else {         if (_MenuBlock_47814740_VUDSM == 1) {           if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) {             _MenuBlock_47814740_VUDSM = 2;             _MenuBlock_47814740_VUDPT  = 200;           }         } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) {           _valueUpEvents(0);           _MenuBlock_47814740_VUDSPT = millis();         }       }     }   } else {     _MenuBlock_47814740_OVUIS = 0;     if ( ! ( _gtv2)) {       _MenuBlock_47814740_VUDSM = 0;     }   }   if (_gtv2) {     if ( ! _MenuBlock_47814740_OVDIS) {       _MenuBlock_47814740_OVDIS = 1;       if (_tempVariable_bool) {         _valueDownEvents(0);         _MenuBlock_47814740_VUDST = millis();       }     } if (_tempVariable_bool) {       if (_MenuBlock_47814740_VUDSM == 0) {         if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) {           _MenuBlock_47814740_VUDSM = 1;           _MenuBlock_47814740_VUDSPT = millis();           _MenuBlock_47814740_VUDPT  = 500;         }       }  else {         if (_MenuBlock_47814740_VUDSM == 1) {           if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) {             _MenuBlock_47814740_VUDSM = 2;             _MenuBlock_47814740_VUDPT  = 200;           }         } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) {           _valueDownEvents(0);           _MenuBlock_47814740_VUDSPT = millis();         }       }     }   } else {     _MenuBlock_47814740_OVDIS = 0;     if ( ! ( _gtv3)) {       _MenuBlock_47814740_VUDSM = 0;     }   }   if (_gtv6) {     _dispTempLength1 = ((_MenuBlock_47814740_MNO)).length();     if (_disp2oldLength &gt; _dispTempLength1) {       _isNeedClearDisp1 = 1;     }     _disp2oldLength = _dispTempLength1;     _lcd1.setCursor(int((16 - _dispTempLength1) \/ 2), 0);     _lcd1.print((_MenuBlock_47814740_MNO));   } else {     if (_disp2oldLength &gt; 0) {       _isNeedClearDisp1 = 1;       _disp2oldLength = 0;     }   }   if (_gtv6) {     _dispTempLength1 = ((((_MenuBlock_47814740_VNO) + (String(&quot; &quot;)) + (_MenuBlock_47814740_ASO_1)))).length();     if (_disp1oldLength &gt; _dispTempLength1) {       _isNeedClearDisp1 = 1;     }     _disp1oldLength = _dispTempLength1;     _lcd1.setCursor(int((16 - _dispTempLength1) \/ 2), 1);     _lcd1.print((((_MenuBlock_47814740_VNO) + (String(&quot; &quot;)) + (_MenuBlock_47814740_ASO_1))));   } else {     if (_disp1oldLength &gt; 0) {       _isNeedClearDisp1 = 1;       _disp1oldLength = 0;     }   }   _gtv9 = _MenuBlock_47814740_AMMO;   if ((_gtv11) &gt; (Menu_Value_2_TVD)) _trgr3 = 0;   if ((_gtv11) &lt; (Menu_Value_1_TVD)) _trgr3 = 1;   digitalWrite(2, !(_trgr3));   if (!(_gtv6)) {     Menu_Value_1_TVD = _menuValueArray_int[3];   }   _gtv10 = _trgr3;   if (!(_gtv6)) {     Menu_Value_2_TVD = _menuValueArray_int[2];   }   if ((_gtv11) &lt; (Menu_Value_4_TVD)) _trgr4 = 0;   if ((_gtv11) &gt; (Menu_Value_3_TVD)) _trgr4 = 1;   if (!(_gtv6)) {     Menu_Value_3_TVD = _menuValueArray_int[1];   }   digitalWrite(3, !(_trgr4));   _gtv12 = _trgr4;   if (!(_gtv6)) {     Menu_Value_4_TVD = _menuValueArray_int[0];   }   digitalWrite(11, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) ));   if (_gtv10)   {     _swi1 = String(&quot;H - ON&quot;);   }   else   {     _swi1 = String(&quot;H - OFF&quot;);   }   if (_gtv12)   {     _swi2 = String(&quot;V - ON&quot;);   }   else   {     _swi2 = String(&quot;V - OFF&quot;);   }   if (!(_gtv6)) {     _dispTempLength1 = ((((String(&quot;Temp - &quot;)) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(&quot; C&quot;))))).length();     if (_disp3oldLength &gt; _dispTempLength1) {       _isNeedClearDisp1 = 1;     }     _disp3oldLength = _dispTempLength1;     _lcd1.setCursor(int((16 - _dispTempLength1) \/ 2), 0);     _lcd1.print((((String(&quot;Temp - &quot;)) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(&quot; C&quot;)))));   } else {     if (_disp3oldLength &gt; 0) {       _isNeedClearDisp1 = 1;       _disp3oldLength = 0;     }   }   if (!(_gtv6)) {     _dispTempLength1 = ((((_swi1) + (String(&quot;  &quot;)) + (_swi2)))).length();     if (_disp4oldLength &gt; _dispTempLength1) {       _isNeedClearDisp1 = 1;     }     _disp4oldLength = _dispTempLength1;     _lcd1.setCursor(int((16 - _dispTempLength1) \/ 2), 1);     _lcd1.print((((_swi1) + (String(&quot;  &quot;)) + (_swi2))));   } else {     if (_disp4oldLength &gt; 0) {       _isNeedClearDisp1 = 1;       _disp4oldLength = 0;     }   }     } String  _floatToStringWitRaz(float value, int raz) {    return String(value, raz); } bool _isTimer(unsigned long startTime, unsigned long period ) {   unsigned long currentTime;   currentTime = millis();   if (currentTime &gt;= startTime) {     return (currentTime &gt;= (startTime + period));   } else {     return (currentTime &gt;= (4294967295 - startTime + period));   } } void _menuUpEvents (byte menuIndex) {   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   byte parentStartIndex;   byte parentStopIndex;   if (parIndex == 0) {     parentStartIndex = (_MainMenus[menuIndex]).startIndex;     parentStopIndex = (_MainMenus[menuIndex]).stopIndex;   }   else {     parentStartIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 3]);     parentStopIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 4]);   }   if (tempIndex == parentStartIndex) {     if ((_MainMenus[menuIndex]).isSwitchMenuAroundRing) {       (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStopIndex - 1];       return;     } else {       return;     }   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex - 2];   return; } void _menuDownEvents (byte menuIndex) {   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   byte parentStartIndex;   byte parentStopIndex;   if (parIndex == 0) {     parentStartIndex = (_MainMenus[menuIndex]).startIndex;     parentStopIndex = (_MainMenus[menuIndex]).stopIndex;   }   else {     parentStartIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 3]);     parentStopIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex - 1]).startInArrayIndex) + 4]);   }   if (tempIndex == parentStopIndex) {     if ((_MainMenus[menuIndex]).isSwitchMenuAroundRing) {       (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStartIndex - 1];       return;     } else {       return;     }   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex];   return; } void _valueUpEvents (byte menuIndex) {   byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]);   byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]);   if (itemType == 3) {     _menuValueArray_bool[valIndex - 1 ] = 1;     return;   }   if (itemType == 4) {     _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] + (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1]));   } } void _valueDownEvents (byte menuIndex) {    byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]);   byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]);   if (itemType == 3) {     _menuValueArray_bool[valIndex - 1] = 0;     return;   }   if (itemType == 4) {     _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] - (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1]));   } } void _menuEnterTheMenuEvents (byte menuIndex) {   byte itemType =  pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   if (!(itemType == 0)) {     return;   }   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]);   if (newIndex == 0) {     return;   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1];   return; } void _menuExitFromMenuEvents (byte menuIndex) {   byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   if (parIndex == 0) {     return;   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1];   return; } String _menuOutputValueString (byte menuIndex) {   byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]);   if (itemType == 0) {     if ( valueStrIndex == 0) {       return &quot;&quot;;     } else {       return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1])));     }   }   byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]);   byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]);   if ( valIndex == 0) {     return &quot;&quot;;   }   byte convFormat = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 9]);   if (itemType == 3) {     return _convertBoolean(itemType, convFormat, valIndex, indexMax, indexMin);   }   if (itemType == 4) {     return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin);   }   return &quot;&quot;; } void _menuUpdateToEEpromItems() {   EEPROM.updateInt(2, (_menuValueArray_int[0]));   EEPROM.updateInt(4, (_menuValueArray_int[1]));   EEPROM.updateBit(1, 0, (_menuValueArray_bool[0]));   EEPROM.updateInt(6, (_menuValueArray_int[2]));   EEPROM.updateInt(8, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) {   String result = String(&quot;&quot;);   while (pgm_read_byte(string) != '\\0')   {     result = result + char(pgm_read_byte(string));     string++;   }   return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte indexMin) {   if (itemType == 4) {     if (convFormat == 4) {       return String((_menuValueArray_int[valIndex - 1 ]), DEC);     }     if (convFormat == 5) {       return String((_menuValueArray_int[valIndex - 1]), HEX);     }     if (convFormat == 6) {       return String((_menuValueArray_int[valIndex - 1]), BIN);     }   } } String _convertBoolean(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte indexMin) {   if (convFormat == 1) {     if (_menuValueArray_bool[valIndex - 1]) {       return &quot;1&quot;;     } else {       return &quot;0&quot;;     }   }   if (convFormat == 2) {     if (_menuValueArray_bool[valIndex - 1]) {       return &quot;True&quot;;     } else {       return &quot;False&quot;;     }   }   if (convFormat == 3) {     if (_menuValueArray_bool[valIndex - 1 ]) {       return &quot;\u0414\u0430&quot;;     } else {       return &quot;\u041d\u0435\u0442&quot;;     }   }   if (_menuValueArray_bool[valIndex - 1]) {     return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMax - 1])));   } else {     return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMin - 1])));   } } struct UB_142171746 _func_UB_142171746(struct UB_142171746 _ubInstans, int ubi_125089190, int ubpar_125440348, int ubpar_79146376, int ubpar_175158211, int ubpar_40719224) {   bool ubo_101667604 = _ubInstans.ubo_101667604;   bool ubo_51674151 = _ubInstans.ubo_51674151;   bool ubo_137412502 = _ubInstans.ubo_137412502;   bool ubo_174461762 = _ubInstans.ubo_174461762;   bool ubo_157422683 = _ubInstans.ubo_157422683;   int _gtv1 = _ubInstans._gtv1;   int _gtv2 = _ubInstans._gtv2;   int _gtv3 = _ubInstans._gtv3;   int _gtv4 = _ubInstans._gtv4;   int _gtv5 = _ubInstans._gtv5;   bool _bounse1S = _ubInstans._bounse1S;   bool _bounse1O = _ubInstans._bounse1O;   unsigned long _bounse1P = _ubInstans._bounse1P;   bool _bounse2S = _ubInstans._bounse2S;   bool _bounse2O = _ubInstans._bounse2O;   unsigned long _bounse2P = _ubInstans._bounse2P;   bool _bounse3S = _ubInstans._bounse3S;   bool _bounse3O = _ubInstans._bounse3O;   unsigned long _bounse3P = _ubInstans._bounse3P;   bool _bounse4S = _ubInstans._bounse4S;   bool _bounse4O = _ubInstans._bounse4O;   unsigned long _bounse4P = _ubInstans._bounse4P;   bool _bounse5S = _ubInstans._bounse5S;   bool _bounse5O = _ubInstans._bounse5O;   unsigned long _bounse5P = _ubInstans._bounse5P;   bool   _bounceTmpD1 = (ubi_125089190) &lt; (_gtv1);    if (_bounse1S)   {     if (millis() &gt;= (_bounse1P + 40))     {       _bounse1O =  _bounceTmpD1;       _bounse1S = 0;     }   }   else   {     if ( _bounceTmpD1 != _bounse1O )     {       _bounse1S = 1;       _bounse1P = millis();     }   }   bool   _bounceTmpD2 = ( ((ubi_125089190) &gt; (_gtv1)) && ((ubi_125089190) &lt; (_gtv2)) );    if (_bounse2S)   {     if (millis() &gt;= (_bounse2P + 40))     {       _bounse2O =  _bounceTmpD2;       _bounse2S = 0;     }   }   else   {     if ( _bounceTmpD2 != _bounse2O )     {       _bounse2S = 1;       _bounse2P = millis();     }   }   bool   _bounceTmpD3 = ( ((ubi_125089190) &gt; (_gtv2)) && ((ubi_125089190) &lt; (_gtv3)) );    if (_bounse3S)   {     if (millis() &gt;= (_bounse3P + 40))     {       _bounse3O =  _bounceTmpD3;       _bounse3S = 0;     }   }   else   {     if ( _bounceTmpD3 != _bounse3O )     {       _bounse3S = 1;       _bounse3P = millis();     }   }   bool   _bounceTmpD4 = ( ((ubi_125089190) &gt; (_gtv3)) && ((ubi_125089190) &lt; (_gtv4)) );    if (_bounse4S)   {     if (millis() &gt;= (_bounse4P + 40))     {       _bounse4O =  _bounceTmpD4;       _bounse4S = 0;     }   }   else   {     if ( _bounceTmpD4 != _bounse4O )     {       _bounse4S = 1;       _bounse4P = millis();     }   }   bool   _bounceTmpD5 = ( ((ubi_125089190) &gt; (_gtv4)) && ((ubi_125089190) &lt; (_gtv5)) );    if (_bounse5S)   {     if (millis() &gt;= (_bounse5P + 40))     {       _bounse5O =  _bounceTmpD5;       _bounse5S = 0;     }   }   else   {     if ( _bounceTmpD5 != _bounse5O )     {       _bounse5S = 1;       _bounse5P = millis();     }   }   _gtv1 = (ubpar_125440348) \/ (2);   _gtv2 = (((ubpar_79146376) - (ubpar_125440348)) \/ (2)) + (ubpar_125440348);   _gtv3 = (((ubpar_175158211) - (ubpar_79146376)) \/ (2)) + (ubpar_79146376);   _gtv4 = (((ubpar_40719224) - (ubpar_175158211)) \/ (2)) + (ubpar_175158211);   _gtv5 = (((1023) - (ubpar_40719224)) \/ (2)) + (ubpar_40719224);   ubo_101667604 = _bounse1O;   ubo_51674151 = _bounse2O;   ubo_137412502 = _bounse3O;   ubo_174461762 = _bounse4O;   ubo_157422683 = _bounse5O;   _ubInstans.ubo_101667604 = ubo_101667604;   _ubInstans.ubo_51674151 = ubo_51674151;   _ubInstans.ubo_137412502 = ubo_137412502;   _ubInstans.ubo_174461762 = ubo_174461762;   _ubInstans.ubo_157422683 = ubo_157422683;   _ubInstans._gtv1 = _gtv1;   _ubInstans._gtv2 = _gtv2;   _ubInstans._gtv3 = _gtv3;   _ubInstans._gtv4 = _gtv4;   _ubInstans._gtv5 = _gtv5;   _ubInstans._bounse1S = _bounse1S;   _ubInstans._bounse1O = _bounse1O;   _ubInstans._bounse1P = _bounse1P;   _ubInstans._bounse2S = _bounse2S;   _ubInstans._bounse2O = _bounse2O;   _ubInstans._bounse2P = _bounse2P;   _ubInstans._bounse3S = _bounse3S;   _ubInstans._bounse3O = _bounse3O;   _ubInstans._bounse3P = _bounse3P;   _ubInstans._bounse4S = _bounse4S;   _ubInstans._bounse4O = _bounse4O;   _ubInstans._bounse4P = _bounse4P;   _ubInstans._bounse5S = _bounse5S;   _ubInstans._bounse5O = _bounse5O;   _ubInstans._bounse5P = _bounse5P;   return _ubInstans; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u00ab\u043f\u0440\u043e\u043a\u0430\u0447\u0430\u0435\u043c\u00bb \u043f\u0440\u043e\u0435\u043a\u0442. \u0417\u0430\u043c\u0435\u043d\u0438\u043c LCD Keypad Shield \u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u0443\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 4\u04454 \u0438 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 4\u044520 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e I2C. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cd4\/910\/72e\/cd491072edea4cd4a125c4005b8b4b7c.jpg\"\/><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/597\/341\/716\/5973417169884d4baa7152526d9d44c1.jpg\"\/><\/p>\n<p>  \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e, \u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0432\u0432\u043e\u0434\u043e\u043c \u0446\u0438\u0444\u0440. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0445\u043e\u0434 \u0432 \u043c\u0435\u043d\u044e \u043f\u043e \u043f\u0430\u0440\u043e\u043b\u044e. <br \/>  \u0418\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/799\/0cc\/dac\/7990ccdacf32435da978383aaf5be14d.PNG\"\/><\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0426\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442.<\/b><\/p>\n<div class=\"spoiler_text\"> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/geektimes\/post_images\/723\/f04\/e03\/723f04e0365256f84baa1e649aea10cf.png\" alt=\"image\"\/><\/div>\n<\/div>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0c4\/485\/da4\/0c4485da465643a885d7cda17f372f09.png\"\/><\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043e\u043f\u0440\u043e\u0441\u0430 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/5d4\/3a5\/a7f\/5d43a5a7f03b4818ab72c040a26760fb.png\"\/><\/p>\n<p>  \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u00ab*\u00bb \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044e. \u0422\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e, \u0430 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u043e\u043b\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/002\/c6f\/fbd\/002c6ffbd3a54452aa7d86de333175be.png\"\/><\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f23\/022\/b34\/f23022b344dc401b971b07a4bdbcdd03.PNG\"\/><\/p>\n<p>  \u0414\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430, \u0441\u043b\u0443\u0436\u0430\u0449\u0435\u0433\u043e \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u043e\u043b\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0442\u0438\u043f Long Integer \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u0430\u0440\u043e\u043b\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/371\/70d\/e96\/37170de96fa64d3da2e2c9d14cdcb0ee.png\"\/><\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u043e\u043b\u044f. \u041f\u0440\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0433\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e. \u041f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 \u043c\u0435\u043d\u044e \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f 0 (\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0432\u0432\u043e\u0434\u0443)<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/45f\/946\/cc5\/45f946cc581b42809bf0b642ab6b6951.png\"\/><\/p>\n<p>  \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u043c\u0435\u043d\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043f\u0443\u043d\u043a\u0442 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/741\/c98\/565\/741c985659864e57a3f1c624d530b2bc.PNG\"\/><\/p>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0441\u043d\u0443\u043b\u0438\u0441\u044c \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0438 \u00ab\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c\u00bb<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/111\/d33\/5ee\/111d335ee4574e3ca3a40c47057866b1.PNG\"\/><\/p>\n<p>  \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u0432\u043e\u0434 \u0446\u0438\u0444\u0440.<br \/>  \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>#include &lt;Wire.h&gt; #include &lt;EEPROMex.h&gt; #include &lt;LiquidCrystal_I2C.h&gt; LiquidCrystal_I2C _lcd2(0x27, 20, 4); int _dispTempLength2 = 0; boolean _isNeedClearDisp2;    const byte _menuParametrsArray[]  PROGMEM =  {1, 5, 1, 0, 0, 0, 0, 0, 1, 4, 1, 0, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 8, 11, 0, 3, 0, 0, 8, 9, 0, 0, 0, 0, 0, 6, 11, 0, 4, 3, 1, 0, 0, 0, 12, 13, 1, 8, 3, 0, 0, 5, 5, 2, 0, 0, 0, 0, 0, 1, 4, 2, 0, 0, 6, 4, 2, 0, 0, 2, 0, 0, 1, 4, 5, 0, 10, 7, 4, 4, 0, 0, 2, 0, 0, 1, 4, 9, 0, 10, 8, 4, 3, 0, 0, 3, 0, 0, 1, 4, 7, 0, 10, 9, 4, 1, 0, 0, 3, 0, 0, 1, 4, 4, 0, 10}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[]  PROGMEM =  {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[]  PROGMEM =  {1}; long _menuValueArray_long[2]; const long _menuConstantValuesArray_long[]  PROGMEM =  {1}; const char _flprogMenuNameString1[] PROGMEM = &quot;Enter Password&quot;; const char _flprogMenuNameString2[] PROGMEM = &quot;ChangePassword&quot;; const char _flprogMenuNameString3[] PROGMEM = &quot;Sound&quot;; const char _flprogMenuNameString4[] PROGMEM = &quot;Vent-Off&quot;; const char _flprogMenuNameString5[] PROGMEM = &quot;Heater-On&quot;; const char _flprogMenuNameString6[] PROGMEM = &quot;Vent Setting&quot;; const char _flprogMenuNameString7[] PROGMEM = &quot;Vent-On&quot;; const char _flprogMenuNameString8[] PROGMEM = &quot;HeaterSetting&quot;; const char _flprogMenuNameString9[] PROGMEM = &quot;Heater-Off&quot;; const char _flprogMenuNameString10[] PROGMEM = &quot;C&quot;; const char _flprogMenuNameString11[] PROGMEM = &quot;Enter to submenu&quot;; const char _flprogMenuNameString12[] PROGMEM = &quot;On&quot;; const char _flprogMenuNameString13[] PROGMEM = &quot;Off&quot;; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1,  _flprogMenuNameString2,  _flprogMenuNameString3,  _flprogMenuNameString4,  _flprogMenuNameString5,  _flprogMenuNameString6,  _flprogMenuNameString7,  _flprogMenuNameString8,  _flprogMenuNameString9,  _flprogMenuNameString10,  _flprogMenuNameString11,  _flprogMenuNameString12,  _flprogMenuNameString13}; struct _menuItemStricture {   int startInArrayIndex; }; struct _menuMainStricture {   String tempString;   byte startIndex;   byte stopIndex;   bool isSwitchMenuAroundRing;   _menuItemStricture  currentItem; }; _menuItemStricture _MenuItems[9]; _menuMainStricture _MainMenus[2]; bool _gtv6; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv13; bool _gtv14; bool _gtv15; bool _gtv16; bool _gtv17; bool _gtv18; bool _gtv19; bool _gtv20; bool _gtv21; bool _gtv22; bool _gtv23; bool _gtv7; bool _gtv8; int _disp1oldLength = 0; int Menu_Value_4_TVD = 0; int Menu_Value_2_TVD = 0; bool _trgr4 = 0; String _swi1; bool _trgr1 = 0; bool _trgr3 = 0; int _disp2oldLength = 0; bool _trgt1 = 0; bool _trgt1I = 0; int Menu_Value_3_TVD = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_IDI_0 = 0; bool _MenuBlock_47814740_IDI_1 = 0; bool _MenuBlock_47814740_IDI_2 = 0; bool _MenuBlock_47814740_IDI_3 = 0; bool _MenuBlock_47814740_IDI_4 = 0; bool _MenuBlock_47814740_IDI_5 = 0; bool _MenuBlock_47814740_IDI_6 = 0; bool _MenuBlock_47814740_IDI_7 = 0; bool _MenuBlock_47814740_IDI_8 = 0; bool _MenuBlock_47814740_IDI_9 = 0; bool _MenuBlock_47814740MinusIOS = 0; int Menu_Value_1_TVD = 0; bool _mkb1C1xP1 = 0; bool _mkb1C1xP2 = 0; bool _mkb1C1xP3 = 0; bool _mkb1C1xP4 = 0; bool _mkb1C2xP1 = 0; bool _mkb1C2xP2 = 0; bool _mkb1C2xP3 = 0; bool _mkb1C2xP4 = 0; bool _mkb1C3xP1 = 0; bool _mkb1C3xP2 = 0; bool _mkb1C3xP3 = 0; bool _mkb1C3xP4 = 0; bool _mkb1C4xP1 = 0; bool _mkb1C4xP2 = 0; bool _mkb1C4xP3 = 0; bool _mkb1C4xP4 = 0; bool _trgrt1 = 0; bool _trgrt1I = 0; int _disp6oldLength = 0; int _disp4oldLength = 0; int _disp5oldLength = 0; String _MenuBlock_360159546_MNO; String _MenuBlock_360159546_VNO; bool _MenuBlock_360159546_OEIS = 0; bool _MenuBlock_360159546_IDI_0 = 0; bool _MenuBlock_360159546_IDI_1 = 0; bool _MenuBlock_360159546_IDI_2 = 0; bool _MenuBlock_360159546_IDI_3 = 0; bool _MenuBlock_360159546_IDI_4 = 0; bool _MenuBlock_360159546_IDI_5 = 0; bool _MenuBlock_360159546_IDI_6 = 0; bool _MenuBlock_360159546_IDI_7 = 0; bool _MenuBlock_360159546_IDI_8 = 0; bool _MenuBlock_360159546_IDI_9 = 0; int _disp7oldLength = 0; int _disp3oldLength = 0; String _swi2; void setup() {   if ((EEPROM.read(0)) != 99) {     EEPROM.write(0, 99) ;     EEPROM.updateInt(12, 25);     EEPROM.updateLong(2, 123456);     EEPROM.updateInt(6, 30);     EEPROM.updateInt(10, 40);     EEPROM.updateBit(1, 0, 0);     EEPROM.updateInt(8, 10);   }   Wire.begin();   pinMode(16, OUTPUT);   pinMode(15, OUTPUT);   pinMode(17, OUTPUT);    _lcd2.init();   _lcd2.backlight();   pinMode(6, INPUT);   digitalWrite(6, HIGH);   pinMode(7, INPUT);   digitalWrite(7, HIGH);   pinMode(8, INPUT);   digitalWrite(8, HIGH);   pinMode(9, INPUT);   digitalWrite(9, HIGH);   pinMode(2, OUTPUT);   digitalWrite(2, HIGH);   pinMode(3, OUTPUT);   digitalWrite(3, HIGH);   pinMode(4, OUTPUT);   digitalWrite(4, HIGH);   pinMode(5, OUTPUT);   digitalWrite(5, HIGH);   _MenuItems[0].startInArrayIndex = 0;   _MenuItems[1].startInArrayIndex = 13;   _MenuItems[2].startInArrayIndex = 26;   _MenuItems[3].startInArrayIndex = 39;   _MenuItems[4].startInArrayIndex = 52;   _MenuItems[5].startInArrayIndex = 65;   _MenuItems[6].startInArrayIndex = 78;   _MenuItems[7].startInArrayIndex = 91;   _MenuItems[8].startInArrayIndex = 104;   _MainMenus[0].tempString = &quot;&quot;;   _MainMenus[0].startIndex = 1;   _MainMenus[0].isSwitchMenuAroundRing = 0;   _MainMenus[0].stopIndex = 1;   _MainMenus[0].currentItem = _MenuItems[0];   _MainMenus[1].tempString = &quot;&quot;;   _MainMenus[1].startIndex = 2;   _MainMenus[1].isSwitchMenuAroundRing = 1;   _MainMenus[1].stopIndex = 5;   _MainMenus[1].currentItem = _MenuItems[1];   _menuValueArray_long[1] = (EEPROM.readLong(2));   _menuValueArray_bool[0] = (EEPROM.readBit(1, 0));   _menuValueArray_int[0] = (EEPROM.readInt(6));   _menuValueArray_int[1] = (EEPROM.readInt(8));   _menuValueArray_int[2] = (EEPROM.readInt(10));   _menuValueArray_int[3] = (EEPROM.readInt(12)); } void loop() { bool _tempVariable_bool;   byte _tempVariable_byte;   if (_isNeedClearDisp2) {     _lcd2.clear();     _isNeedClearDisp2 = 0;   }       _gtv11 = (map(( (analogRead (0))), (0), (1023), (-20), (80)));   digitalWrite(2, 0);   _mkb1C1xP1 = ! (digitalRead(6));   _mkb1C1xP2 = ! (digitalRead(7));   _mkb1C1xP3 = ! (digitalRead(8));   _mkb1C1xP4 = ! (digitalRead(9));   digitalWrite(2, 1);   digitalWrite(3, 0);   _mkb1C2xP1 = ! (digitalRead(6));   _mkb1C2xP2 = ! (digitalRead(7));   _mkb1C2xP3 = ! (digitalRead(8));   _mkb1C2xP4 = ! (digitalRead(9));   digitalWrite(3, 1);   digitalWrite(4, 0);   _mkb1C3xP1 = ! (digitalRead(6));   _mkb1C3xP2 = ! (digitalRead(7));   _mkb1C3xP3 = ! (digitalRead(8));   _mkb1C3xP4 = ! (digitalRead(9));   digitalWrite(4, 1);   digitalWrite(5, 0);   _mkb1C4xP1 = ! (digitalRead(6));   _mkb1C4xP2 = ! (digitalRead(7));   _mkb1C4xP3 = ! (digitalRead(8));   _mkb1C4xP4 = ! (digitalRead(9));   digitalWrite(5, 1);   _gtv1 = _mkb1C1xP1;   _gtv2 = _mkb1C1xP2;   _gtv3 = _mkb1C1xP3;   _gtv18 = _mkb1C1xP4;   _gtv4 = _mkb1C2xP1;   _gtv5 = _mkb1C2xP2;   _gtv13 = _mkb1C2xP3;   _gtv19 = _mkb1C2xP4;   _gtv14 = _mkb1C3xP1;   _gtv15 = _mkb1C3xP2;   _gtv16 = _mkb1C3xP3;   _gtv20 = _mkb1C3xP4;   _gtv23 = _mkb1C4xP1;   _gtv17 = _mkb1C4xP2;   _gtv22 = _mkb1C4xP3;   _gtv21 = _mkb1C4xP4;   bool  _tmp1 = _gtv23;   if (_tmp1)  {     if (! _trgt1I) _trgt1 = ! _trgt1;   }   _trgt1I = _tmp1;   _gtv6 = _trgt1;   if (_gtv7) {     _tempVariable_bool  =  1;     if ( ! _MenuBlock_360159546_OEIS ) {       _MenuBlock_360159546_OEIS = 1;       (_MainMenus[0]).tempString = &quot;&quot;;     }     _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]);     _MenuBlock_360159546_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     _MenuBlock_360159546_VNO = _menuOutputValueString (0);   } else {     _tempVariable_bool  =  0;     if (_MenuBlock_360159546_OEIS) {       _MenuBlock_360159546_OEIS = 0;       _menuUpdateToEEpromItems();     }     _MenuBlock_360159546_MNO = &quot;&quot;;     _MenuBlock_360159546_VNO = &quot;&quot;;   }   if (_gtv17) {     if ( ! _MenuBlock_360159546_IDI_0) {       _MenuBlock_360159546_IDI_0 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '0');       }     }   } else {     _MenuBlock_360159546_IDI_0 = 0;   }   if (_gtv1) {     if ( ! _MenuBlock_360159546_IDI_1) {       _MenuBlock_360159546_IDI_1 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '1');       }     }   } else {     _MenuBlock_360159546_IDI_1 = 0;   }   if (_gtv2) {     if ( ! _MenuBlock_360159546_IDI_2) {       _MenuBlock_360159546_IDI_2 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '2');       }     }   } else {     _MenuBlock_360159546_IDI_2 = 0;   }   if (_gtv3) {     if ( ! _MenuBlock_360159546_IDI_3) {       _MenuBlock_360159546_IDI_3 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '3');       }     }   } else {     _MenuBlock_360159546_IDI_3 = 0;   }   if (_gtv4) {     if ( ! _MenuBlock_360159546_IDI_4) {       _MenuBlock_360159546_IDI_4 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '4');       }     }   } else {     _MenuBlock_360159546_IDI_4 = 0;   }   if (_gtv5) {     if ( ! _MenuBlock_360159546_IDI_5) {       _MenuBlock_360159546_IDI_5 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '5');       }     }   } else {     _MenuBlock_360159546_IDI_5 = 0;   }   if (_gtv13) {     if ( ! _MenuBlock_360159546_IDI_6) {       _MenuBlock_360159546_IDI_6 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '6');       }     }   } else {     _MenuBlock_360159546_IDI_6 = 0;   }   if (_gtv14) {     if ( ! _MenuBlock_360159546_IDI_7) {       _MenuBlock_360159546_IDI_7 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '7');       }     }   } else {     _MenuBlock_360159546_IDI_7 = 0;   }   if (_gtv15) {     if ( ! _MenuBlock_360159546_IDI_8) {       _MenuBlock_360159546_IDI_8 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '8');       }     }   } else {     _MenuBlock_360159546_IDI_8 = 0;   }   if (_gtv16) {     if ( ! _MenuBlock_360159546_IDI_9) {       _MenuBlock_360159546_IDI_9 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '9');       }     }   } else {     _MenuBlock_360159546_IDI_9 = 0;   }   if (_gtv7) {     _dispTempLength2 = ((_MenuBlock_360159546_MNO)).length();     if (_disp6oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp6oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 0);     _lcd2.print((_MenuBlock_360159546_MNO));   } else {     if (_disp6oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp6oldLength = 0;     }   }   if (_gtv7) {     _dispTempLength2 = ((_MenuBlock_360159546_VNO)).length();     if (_disp7oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp7oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 1);     _lcd2.print((_MenuBlock_360159546_VNO));   } else {     if (_disp7oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp7oldLength = 0;     }   }   if (_trgrt1) _trgr1 = 0;   if (((_menuValueArray_long[0])) == ((_menuValueArray_long[1]))) _trgr1 = 1;   if (!(_gtv6)) {     if (_trgrt1I) {       _trgrt1 = 0;     } else {       _trgrt1 = 1;       _trgrt1I = 1;     }   } else {     _trgrt1 = 0;     _trgrt1I = 0;   };   _gtv7 = ( (_gtv6) && (!(_trgr1)) );   _gtv8 = ( (_trgr1) && (_gtv6) );   if (_trgrt1) {     _menuValueArray_long[0] = 0L;   }   if (_gtv8) {     _tempVariable_bool  =  1;     if ( ! _MenuBlock_47814740_OEIS ) {       _MenuBlock_47814740_OEIS = 1;       _MainMenus[1].currentItem = _MenuItems[1];       (_MainMenus[1]).tempString = &quot;&quot;;     }     _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[1].currentItem ).startInArrayIndex) + 10]);     _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     _MenuBlock_47814740_VNO = _menuOutputValueString (1);     _tempVariable_byte  =  pgm_read_byte(&_menuParametrsArray[(((_MainMenus[1]).currentItem).startInArrayIndex) + 12]);     if (_tempVariable_byte == 0 ) {       _MenuBlock_47814740_ASO_1 =  &quot;&quot;;     } else {       _MenuBlock_47814740_ASO_1 =  _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     }   } else {     _tempVariable_bool  =  0;     if (_MenuBlock_47814740_OEIS) {       _MenuBlock_47814740_OEIS = 0;       _menuUpdateToEEpromItems();     }     _MenuBlock_47814740_ASO_1 =  &quot;&quot;;     _MenuBlock_47814740_MNO = &quot;&quot;;     _MenuBlock_47814740_VNO = &quot;&quot;;   }   if (_gtv20) {     if ( ! _MenuBlock_47814740_OMUIS) {       _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) {         _menuUpEvents(1);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OMUIS = 0;   }   if (_gtv21) {     if ( ! _MenuBlock_47814740_OMDIS) {       _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) {         _menuDownEvents(1);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OMDIS = 0;   }   if (_gtv18) {     if ( ! _MenuBlock_47814740_OEMIS) {       _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) {         _menuEnterTheMenuEvents (1);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OEMIS = 0;   }   if (_gtv19) {     if ( ! _MenuBlock_47814740_OExFMIS) {       _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) {         _menuExitFromMenuEvents (1);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OExFMIS = 0;   }   if (_gtv17) {     if ( ! _MenuBlock_47814740_IDI_0) {       _MenuBlock_47814740_IDI_0 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '0');       }     }   } else {     _MenuBlock_47814740_IDI_0 = 0;   }   if (_gtv1) {     if ( ! _MenuBlock_47814740_IDI_1) {       _MenuBlock_47814740_IDI_1 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '1');       }     }   } else {     _MenuBlock_47814740_IDI_1 = 0;   }   if (_gtv2) {     if ( ! _MenuBlock_47814740_IDI_2) {       _MenuBlock_47814740_IDI_2 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '2');       }     }   } else {     _MenuBlock_47814740_IDI_2 = 0;   }   if (_gtv3) {     if ( ! _MenuBlock_47814740_IDI_3) {       _MenuBlock_47814740_IDI_3 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '3');       }     }   } else {     _MenuBlock_47814740_IDI_3 = 0;   }   if (_gtv4) {     if ( ! _MenuBlock_47814740_IDI_4) {       _MenuBlock_47814740_IDI_4 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '4');       }     }   } else {     _MenuBlock_47814740_IDI_4 = 0;   }   if (_gtv5) {     if ( ! _MenuBlock_47814740_IDI_5) {       _MenuBlock_47814740_IDI_5 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '5');       }     }   } else {     _MenuBlock_47814740_IDI_5 = 0;   }   if (_gtv13) {     if ( ! _MenuBlock_47814740_IDI_6) {       _MenuBlock_47814740_IDI_6 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '6');       }     }   } else {     _MenuBlock_47814740_IDI_6 = 0;   }   if (_gtv14) {     if ( ! _MenuBlock_47814740_IDI_7) {       _MenuBlock_47814740_IDI_7 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '7');       }     }   } else {     _MenuBlock_47814740_IDI_7 = 0;   }   if (_gtv15) {     if ( ! _MenuBlock_47814740_IDI_8) {       _MenuBlock_47814740_IDI_8 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '8');       }     }   } else {     _MenuBlock_47814740_IDI_8 = 0;   }   if (_gtv16) {     if ( ! _MenuBlock_47814740_IDI_9) {       _MenuBlock_47814740_IDI_9 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '9');       }     }   } else {     _MenuBlock_47814740_IDI_9 = 0;   }   if (_gtv22) {     if ( ! _MenuBlock_47814740MinusIOS) {       _MenuBlock_47814740MinusIOS = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '-' );       }     }   } else {     _MenuBlock_47814740MinusIOS = 0;   }   if (_gtv8) {     _dispTempLength2 = ((_MenuBlock_47814740_MNO)).length();     if (_disp2oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp2oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 0);     _lcd2.print((_MenuBlock_47814740_MNO));   } else {     if (_disp2oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp2oldLength = 0;     }   }   if (_gtv8) {     _dispTempLength2 = ((((_MenuBlock_47814740_VNO) + (String(&quot; &quot;)) + (_MenuBlock_47814740_ASO_1)))).length();     if (_disp1oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp1oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 1);     _lcd2.print((((_MenuBlock_47814740_VNO) + (String(&quot; &quot;)) + (_MenuBlock_47814740_ASO_1))));   } else {     if (_disp1oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp1oldLength = 0;     }   }   if ((_gtv11) &gt; (Menu_Value_2_TVD)) _trgr3 = 0;   if ((_gtv11) &lt; (Menu_Value_1_TVD)) _trgr3 = 1;   digitalWrite(16, !(_trgr3));   if (!(_gtv6)) {     Menu_Value_1_TVD = _menuValueArray_int[1];   }   _gtv10 = _trgr3;   if (!(_gtv6)) {     Menu_Value_2_TVD = _menuValueArray_int[3];   }   if ((_gtv11) &lt; (Menu_Value_4_TVD)) _trgr4 = 0;   if ((_gtv11) &gt; (Menu_Value_3_TVD)) _trgr4 = 1;   if (!(_gtv6)) {     Menu_Value_3_TVD = _menuValueArray_int[2];   }   digitalWrite(15, !(_trgr4));   _gtv12 = _trgr4;   if (!(_gtv6)) {     Menu_Value_4_TVD = _menuValueArray_int[0];   }   digitalWrite(17, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) ));   if (_gtv10)   {     _swi1 = String(&quot;Heater - ON&quot;);   }   else   {     _swi1 = String(&quot;Heater - OFF&quot;);   }   if (_gtv12)   {     _swi2 = String(&quot;Ventilation - ON&quot;);   }   else   {     _swi2 = String(&quot;Ventilation - OFF&quot;);   }   if (!(_gtv6)) {     _dispTempLength2 = ((((String(&quot;Temp - &quot;)) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(&quot; C&quot;))))).length();     if (_disp3oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp3oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 0);     _lcd2.print((((String(&quot;Temp - &quot;)) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(&quot; C&quot;)))));   } else {     if (_disp3oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp3oldLength = 0;     }   }   if (!(_gtv6)) {     _dispTempLength2 = ((_swi1)).length();     if (_disp4oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp4oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 1);     _lcd2.print((_swi1));   } else {     if (_disp4oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp4oldLength = 0;     }   }   if (!(_gtv6)) {     _dispTempLength2 = ((_swi2)).length();     if (_disp5oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp5oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 2);     _lcd2.print((_swi2));   } else {     if (_disp5oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp5oldLength = 0;     }   }     } String  _floatToStringWitRaz(float value, int raz) {    return String(value, raz); } void _menuUpEvents (byte menuIndex) {   (_MainMenus[menuIndex]).tempString = &quot;&quot;;   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   byte parentStartIndex;   byte parentStopIndex;   if (parIndex == 0) {     parentStartIndex = (_MainMenus[menuIndex]).startIndex;     parentStopIndex = (_MainMenus[menuIndex]).stopIndex;   }   else {     parentStartIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 3]);     parentStopIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 4]);   }   if (tempIndex == parentStartIndex) {     if ((_MainMenus[menuIndex]).isSwitchMenuAroundRing) {       (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStopIndex - 1];       return;     } else {       return;     }   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex - 2];   return; } void _menuDownEvents (byte menuIndex) {   (_MainMenus[menuIndex]).tempString = &quot;&quot;;   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   byte parentStartIndex;   byte parentStopIndex;   if (parIndex == 0) {     parentStartIndex = (_MainMenus[menuIndex]).startIndex;     parentStopIndex = (_MainMenus[menuIndex]).stopIndex;   }   else {     parentStartIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 3]);     parentStopIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex - 1]).startInArrayIndex) + 4]);   }   if (tempIndex == parentStopIndex) {     if ((_MainMenus[menuIndex]).isSwitchMenuAroundRing) {       (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStartIndex - 1];       return;     } else {       return;     }   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex];   return; } void _menuEnterTheMenuEvents (byte menuIndex) {   byte itemType =  pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   if (!(itemType == 0)) {     return;   }   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]);   if (newIndex == 0) {     return;   }   (_MainMenus[menuIndex]).tempString = &quot;&quot;;   (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1];   return; } void _menuExitFromMenuEvents (byte menuIndex) {   byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   if (parIndex == 0) {     return;   }   (_MainMenus[menuIndex]).tempString = &quot;&quot;;   (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1];   return; } String _menuOutputValueString (byte menuIndex) {   byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]);   if (itemType == 0) {     if ( valueStrIndex == 0) {       return &quot;&quot;;     } else {       return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1])));     }   }   byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]);   byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]);   if ( valIndex == 0) {     return &quot;&quot;;   }   byte convFormat = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 9]);   if (itemType == 3) {     return _convertBoolean(itemType, convFormat, valIndex, indexMax, indexMin);   }   if (itemType == 4) {     return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin);   }   if (itemType == 5) {     return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin);   }   return &quot;&quot;; } void _menuDirectInputKeyPressEvents(byte menuIndex, char inputSymbol) {   byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte temp;   if (valIndex == 0) {     return;   }   byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   if (itemType == 7) {     return;   }   if (itemType == 3) {     (_MainMenus[menuIndex]).tempString = &quot;&quot;;   }   if (inputSymbol == '-') {     temp = ((_MainMenus[menuIndex]).tempString).length() ;  if (temp == 0) {       (_MainMenus[menuIndex]).tempString = &quot;-&quot;;     } else     { if (((_MainMenus[menuIndex]).tempString).charAt(0)  == '-') {         (_MainMenus[menuIndex]).tempString = ((_MainMenus[menuIndex]).tempString).substring(1);       } else       {         (_MainMenus[menuIndex]).tempString = &quot;-&quot; + (_MainMenus[menuIndex]).tempString;       }     }   } else {     (_MainMenus[menuIndex]).tempString = (_MainMenus[menuIndex]).tempString + inputSymbol;   }   if (itemType == 3) {     _menuValueArray_bool[valIndex - 1]  =  ((((_MainMenus[menuIndex]).tempString )).toInt());   }   if (itemType == 4) {     _menuValueArray_int[valIndex - 1]  =  (((_MainMenus[menuIndex]).tempString )).toInt();   }   if (itemType == 5) {     _menuValueArray_long[valIndex - 1]  =  (((_MainMenus[menuIndex]).tempString ).toInt());   } } void _menuUpdateToEEpromItems() {   EEPROM.updateLong(2, (_menuValueArray_long[1]));   EEPROM.updateBit(1, 0, (_menuValueArray_bool[0]));   EEPROM.updateInt(6, (_menuValueArray_int[0]));   EEPROM.updateInt(8, (_menuValueArray_int[1]));   EEPROM.updateInt(10, (_menuValueArray_int[2]));   EEPROM.updateInt(12, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) {   String result = String(&quot;&quot;);   while (pgm_read_byte(string) != '\\0')   {     result = result + char(pgm_read_byte(string));     string++;   }   return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte indexMin) {   if (itemType == 4) {     if (convFormat == 4) {       return String((_menuValueArray_int[valIndex - 1 ]), DEC);     }     if (convFormat == 5) {       return String((_menuValueArray_int[valIndex - 1]), HEX);     }     if (convFormat == 6) {       return String((_menuValueArray_int[valIndex - 1]), BIN);     }   }   if (itemType == 5) {     if (convFormat == 4) {       return String((_menuValueArray_long[valIndex - 1 ]), DEC);     }     if (convFormat == 5) {       return String((_menuValueArray_long[valIndex - 1]), HEX);     }     if (convFormat == 6) {       return String((_menuValueArray_long[valIndex - 1]), BIN);     }   } } String _convertBoolean(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte indexMin) {   if (convFormat == 1) {     if (_menuValueArray_bool[valIndex - 1]) {       return &quot;1&quot;;     } else {       return &quot;0&quot;;     }   }   if (convFormat == 2) {     if (_menuValueArray_bool[valIndex - 1]) {       return &quot;True&quot;;     } else {       return &quot;False&quot;;     }   }   if (convFormat == 3) {     if (_menuValueArray_bool[valIndex - 1 ]) {       return &quot;\u0414\u0430&quot;;     } else {       return &quot;\u041d\u0435\u0442&quot;;     }   }   if (_menuValueArray_bool[valIndex - 1]) {     return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMax - 1])));   } else {     return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMin - 1])));   } }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b DS18B20. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u0432 \u043e\u0431\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cdf\/10e\/b42\/cdf10eb42c224027bf64a8dd155fec2d.png\"\/><\/p>\n<p>  \u0411\u043b\u043e\u043a \u00abScanOneWare\u00bb \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u0430\u0442\u0447\u0438\u043a\u0430. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\u0421\u0445\u0435\u043c\u0430 \u0441 LCD Keypad Shield.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/af8\/682\/41e\/af868241e16447838452318cd2ab7df3.PNG\"\/><\/p>\n<p>  \u0421\u0445\u0435\u043c\u0430 \u0441 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0c1\/cd8\/e81\/0c1cd8e8102443249bd8d2e8240305d4.PNG\"\/>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u0445\u0435\u043c\u044b \u0441  LCD Keypad Shield.<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>#include &lt;EEPROMex.h&gt; #include &lt;LiquidCrystal.h&gt; #include &lt;OneWire.h&gt; LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7); int _dispTempLength1 = 0; boolean _isNeedClearDisp1;   struct UB_142171746 {   bool ubo_101667604 = 0;   bool ubo_51674151 = 0;   bool ubo_137412502 = 0;   bool ubo_174461762 = 0;   bool ubo_157422683 = 0;   int _gtv1 = 0;   int _gtv2 = 0;   int _gtv3 = 0;   int _gtv4 = 0;   int _gtv5 = 0;   bool _bounse1S = 0;   bool _bounse1O = 0;   unsigned long _bounse1P = 0UL;   bool _bounse2S = 0;   bool _bounse2O = 0;   unsigned long _bounse2P = 0UL;   bool _bounse3S = 0;   bool _bounse3O = 0;   unsigned long _bounse3P = 0UL;   bool _bounse4S = 0;   bool _bounse4O = 0;   unsigned long _bounse4P = 0UL;   bool _bounse5S = 0;   bool _bounse5O = 0;   unsigned long _bounse5P = 0UL; }; UB_142171746 UB_142171746_Instance1; int UB_142171746_ubi_125089190 = 0; OneWire  _ow12(12); byte _FLPArray27618413[9]; const byte _menuParametrsArray[]  PROGMEM =  {1, 0, 0, 4, 5, 0, 0, 0, 0, 0, 1, 9, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 6, 9, 0, 3, 3, 1, 0, 0, 0, 10, 11, 1, 8, 3, 0, 0, 4, 4, 2, 0, 0, 1, 0, 0, 1, 4, 4, 0, 8, 5, 4, 4, 0, 0, 1, 0, 0, 1, 4, 7, 0, 8, 6, 4, 1, 0, 0, 2, 0, 0, 1, 4, 2, 0, 8, 7, 4, 3, 0, 0, 2, 0, 0, 1, 4, 5, 0, 8}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[]  PROGMEM =  {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[]  PROGMEM =  {1}; const char _flprogMenuNameString1[] PROGMEM = &quot;HeaterSetting&quot;; const char _flprogMenuNameString2[] PROGMEM = &quot;Vent-On&quot;; const char _flprogMenuNameString3[] PROGMEM = &quot;Sound&quot;; const char _flprogMenuNameString4[] PROGMEM = &quot;Heater-On&quot;; const char _flprogMenuNameString5[] PROGMEM = &quot;Vent-Off&quot;; const char _flprogMenuNameString6[] PROGMEM = &quot;Vent Setting&quot;; const char _flprogMenuNameString7[] PROGMEM = &quot;Heater-Off&quot;; const char _flprogMenuNameString8[] PROGMEM = &quot;C&quot;; const char _flprogMenuNameString9[] PROGMEM = &quot;Enter to submenu&quot;; const char _flprogMenuNameString10[] PROGMEM = &quot;On&quot;; const char _flprogMenuNameString11[] PROGMEM = &quot;Off&quot;; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1,  _flprogMenuNameString2,  _flprogMenuNameString3,  _flprogMenuNameString4,  _flprogMenuNameString5,  _flprogMenuNameString6,  _flprogMenuNameString7,  _flprogMenuNameString8,  _flprogMenuNameString9,  _flprogMenuNameString10,  _flprogMenuNameString11}; struct _menuItemStricture {   int startInArrayIndex; }; struct _menuMainStricture {   byte startIndex;   byte stopIndex;   bool isSwitchMenuAroundRing;   _menuItemStricture  currentItem; }; _menuItemStricture _MenuItems[7]; _menuMainStricture _MainMenus[1]; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv6; bool _gtv7; bool _gtv8; bool _gtv9; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; int Menu_Value_3_TVD = 0; int Menu_Value_1_TVD = 0; String _swi2; bool _trgrt4 = 0; bool _trgrt4I = 0; String _swi1; bool _trgrt1 = 0; bool _trgrt1I = 0; int _disp1oldLength = 0; bool _trgrt2 = 0; bool _trgrt2I = 0; int _disp3oldLength = 0; bool _sowb1_needScan = 0; bool _sowb1_ost = 0; bool _sowb1_FLPArray27618413 = 0; int Menu_Value_4_TVD = 0; bool _trgrt3 = 0; bool _trgrt3I = 0; int Menu_Value_2_TVD = 0; int _disp4oldLength = 0; bool _trgr4 = 0; bool _trgr2 = 0; bool _trgr1 = 0; bool _trgr3 = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_OVUIS = 0; bool _MenuBlock_47814740_OVDIS = 0; unsigned long _MenuBlock_47814740_VUDST = 0UL; unsigned long _MenuBlock_47814740_VUDSPT = 0UL; byte _MenuBlock_47814740_VUDSM = 0; int _MenuBlock_47814740_VUDPT = 0; bool _MenuBlock_47814740_AMMO = 0; bool _tim2I = 0; bool _tim2O = 0; unsigned long _tim2P = 0UL; bool _tim3I = 0; bool _tim3O = 0; unsigned long _tim3P = 0UL; bool _tim1I = 0; bool _tim1O = 0; unsigned long _tim1P = 0UL; unsigned long _d18x2x1Tti = 0UL; float _d18x2x1O = 0.00; int _disp2oldLength = 0; void setup() {   if ((EEPROM.read(0)) != 97) {     EEPROM.write(0, 97) ;     EEPROM.updateInt(8, 25);     EEPROM.updateBit(1, 0, 0);     EEPROM.updateInt(4, 10);     EEPROM.updateInt(6, 30);     EEPROM.updateInt(2, 40);   }   pinMode(2, OUTPUT);   pinMode(3, OUTPUT);   pinMode(11, OUTPUT);    _lcd1.begin(16, 2);   _MenuItems[0].startInArrayIndex = 0;   _MenuItems[1].startInArrayIndex = 13;   _MenuItems[2].startInArrayIndex = 26;   _MenuItems[3].startInArrayIndex = 39;   _MenuItems[4].startInArrayIndex = 52;   _MenuItems[5].startInArrayIndex = 65;   _MenuItems[6].startInArrayIndex = 78;   _MainMenus[0].startIndex = 1;   _MainMenus[0].isSwitchMenuAroundRing = 1;   _MainMenus[0].stopIndex = 3;   _MainMenus[0].currentItem = _MenuItems[0];   _menuValueArray_int[0] = (EEPROM.readInt(2));   _menuValueArray_bool[0] = (EEPROM.readBit(1, 0));   _menuValueArray_int[1] = (EEPROM.readInt(4));   _menuValueArray_int[2] = (EEPROM.readInt(6));   _menuValueArray_int[3] = (EEPROM.readInt(8)); } void loop() { bool _tempVariable_bool;   byte _tempVariable_byte;   if (_isNeedClearDisp1) {     _lcd1.clear();     _isNeedClearDisp1 = 0;   }       if (1) {     if (_trgrt4I) {       _trgrt4 = 0;     } else {       _trgrt4 = 1;       _trgrt4I = 1;     }   } else {     _trgrt4 = 0;     _trgrt4I = 0;   };   if (_isTimer(_d18x2x1Tti, 1000)) {     _d18x2x1Tti = millis();     _d18x2x1O =  _readDS18_ow12(_FLPArray27618413, _FLPArray27618413[8]);   }   if (_sowb1_needScan) {     if ( _oneWireSeach (_FLPArray27618413, _ow12)) {       _sowb1_FLPArray27618413 = 1;     }     _ow12.reset_search();     _sowb1_needScan = 0;   }   if (_trgrt4) {     if (! _sowb1_ost) {       _sowb1_ost = 1;       _sowb1_needScan = 1;       _sowb1_FLPArray27618413 = 0;     }   } else {     _sowb1_ost = 0;   }   _gtv11 = (_d18x2x1O);   UB_142171746_ubi_125089190 =  (analogRead (0));   UB_142171746_Instance1 = _func_UB_142171746(UB_142171746_Instance1, UB_142171746_ubi_125089190, 96, 250, 402, 635);   _gtv3 = UB_142171746_Instance1.ubo_101667604;   _gtv4 = UB_142171746_Instance1.ubo_51674151;   _gtv5 = UB_142171746_Instance1.ubo_137412502;   _gtv2 = UB_142171746_Instance1.ubo_174461762;   _gtv1 = UB_142171746_Instance1.ubo_157422683;   if (_gtv1)   {     if (_tim1I) {       if (_isTimer(_tim1P, 2000)) {         _tim1O = 1;       }     } else {       _tim1I = 1;       _tim1P = millis();     }   } else {     _tim1O = 0;     _tim1I = 0;   }   if (_tim2O) _trgr2 = 0;   if (_tim1O) _trgr2 = 1;   if (_trgr2) {     if (_trgrt3I) {       _trgrt3 = 0;     } else {       _trgrt3 = 1;       _trgrt3I = 1;     }   } else {     _trgrt3 = 0;     _trgrt3I = 0;   };   if (_trgrt1) {     _tim2O = 1;     _tim2I = 1;   } else {     if (_tim2I) {       _tim2I = 0;       _tim2P = millis();     } else {       if (_tim2O) {         if ( _isTimer(_tim2P, 200)) _tim2O = 0;       }     }   }   if (!(_gtv1)) {     if (_trgrt1I) {       _trgrt1 = 0;     } else {       _trgrt1 = 1;       _trgrt1I = 1;     }   } else {     _trgrt1 = 0;     _trgrt1I = 0;   };   _gtv8 = _trgrt3;   _gtv7 = ( (!(_trgr2)) && (_trgrt1) );   if (1)   {     if (_tim3I) {       if (_isTimer(_tim3P, 200)) {         _tim3O = 1;       }     } else {       _tim3I = 1;       _tim3P = millis();     }   } else {     _tim3O = 0;     _tim3I = 0;   }   if (!(_gtv7)) {     if (_trgrt2I) {       _trgrt2 = 0;     } else {       _trgrt2 = 1;       _trgrt2I = 1;     }   } else {     _trgrt2 = 0;     _trgrt2I = 0;   };   if (( (_gtv9) && (_gtv8) )) _trgr1 = 0;   if (( (_tim3O) && (_trgrt2) )) _trgr1 = 1;   _gtv6 = _trgr1;   if (_gtv6) {     _tempVariable_bool  =  1;     if ( ! _MenuBlock_47814740_OEIS ) {       _MenuBlock_47814740_OEIS = 1;       _MainMenus[0].currentItem = _MenuItems[0];     }     _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]);     _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     _MenuBlock_47814740_VNO = _menuOutputValueString (0);     _MenuBlock_47814740_AMMO = (pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 5]) ) == 0;     _tempVariable_byte  =  pgm_read_byte(&_menuParametrsArray[(((_MainMenus[0]).currentItem).startInArrayIndex) + 12]);     if (_tempVariable_byte == 0 ) {       _MenuBlock_47814740_ASO_1 =  &quot;&quot;;     } else {       _MenuBlock_47814740_ASO_1 =  _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     }   } else {     _tempVariable_bool  =  0;     if (_MenuBlock_47814740_OEIS) {       _MenuBlock_47814740_OEIS = 0;       _menuUpdateToEEpromItems();     }     _MenuBlock_47814740_AMMO = 0;     _MenuBlock_47814740_ASO_1 =  &quot;&quot;;     _MenuBlock_47814740_MNO = &quot;&quot;;     _MenuBlock_47814740_VNO = &quot;&quot;;   }   if (_gtv4) {     if ( ! _MenuBlock_47814740_OMUIS) {       _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) {         _menuUpEvents(0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OMUIS = 0;   }   if (_gtv5) {     if ( ! _MenuBlock_47814740_OMDIS) {       _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) {         _menuDownEvents(0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OMDIS = 0;   }   if (( (_gtv7) && (_gtv6) )) {     if ( ! _MenuBlock_47814740_OEMIS) {       _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) {         _menuEnterTheMenuEvents (0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OEMIS = 0;   }   if (_gtv8) {     if ( ! _MenuBlock_47814740_OExFMIS) {       _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) {         _menuExitFromMenuEvents (0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OExFMIS = 0;   }   if (_gtv3) {     if ( ! _MenuBlock_47814740_OVUIS) {       _MenuBlock_47814740_OVUIS = 1;       if (_tempVariable_bool) {         _valueUpEvents(0);         _MenuBlock_47814740_VUDST = millis();       }     } if (_tempVariable_bool) {       if (_MenuBlock_47814740_VUDSM == 0) {         if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) {           _MenuBlock_47814740_VUDSM = 1;           _MenuBlock_47814740_VUDSPT = millis();           _MenuBlock_47814740_VUDPT  = 500;         }       }  else {         if (_MenuBlock_47814740_VUDSM == 1) {           if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) {             _MenuBlock_47814740_VUDSM = 2;             _MenuBlock_47814740_VUDPT  = 200;           }         } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) {           _valueUpEvents(0);           _MenuBlock_47814740_VUDSPT = millis();         }       }     }   } else {     _MenuBlock_47814740_OVUIS = 0;     if ( ! ( _gtv2)) {       _MenuBlock_47814740_VUDSM = 0;     }   }   if (_gtv2) {     if ( ! _MenuBlock_47814740_OVDIS) {       _MenuBlock_47814740_OVDIS = 1;       if (_tempVariable_bool) {         _valueDownEvents(0);         _MenuBlock_47814740_VUDST = millis();       }     } if (_tempVariable_bool) {       if (_MenuBlock_47814740_VUDSM == 0) {         if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) {           _MenuBlock_47814740_VUDSM = 1;           _MenuBlock_47814740_VUDSPT = millis();           _MenuBlock_47814740_VUDPT  = 500;         }       }  else {         if (_MenuBlock_47814740_VUDSM == 1) {           if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) {             _MenuBlock_47814740_VUDSM = 2;             _MenuBlock_47814740_VUDPT  = 200;           }         } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) {           _valueDownEvents(0);           _MenuBlock_47814740_VUDSPT = millis();         }       }     }   } else {     _MenuBlock_47814740_OVDIS = 0;     if ( ! ( _gtv3)) {       _MenuBlock_47814740_VUDSM = 0;     }   }   if (_gtv6) {     _dispTempLength1 = ((_MenuBlock_47814740_MNO)).length();     if (_disp2oldLength &gt; _dispTempLength1) {       _isNeedClearDisp1 = 1;     }     _disp2oldLength = _dispTempLength1;     _lcd1.setCursor(int((16 - _dispTempLength1) \/ 2), 0);     _lcd1.print((_MenuBlock_47814740_MNO));   } else {     if (_disp2oldLength &gt; 0) {       _isNeedClearDisp1 = 1;       _disp2oldLength = 0;     }   }   if (_gtv6) {     _dispTempLength1 = ((((_MenuBlock_47814740_VNO) + (String(&quot; &quot;)) + (_MenuBlock_47814740_ASO_1)))).length();     if (_disp1oldLength &gt; _dispTempLength1) {       _isNeedClearDisp1 = 1;     }     _disp1oldLength = _dispTempLength1;     _lcd1.setCursor(int((16 - _dispTempLength1) \/ 2), 1);     _lcd1.print((((_MenuBlock_47814740_VNO) + (String(&quot; &quot;)) + (_MenuBlock_47814740_ASO_1))));   } else {     if (_disp1oldLength &gt; 0) {       _isNeedClearDisp1 = 1;       _disp1oldLength = 0;     }   }   _gtv9 = _MenuBlock_47814740_AMMO;   if ((_gtv11) &gt; (Menu_Value_2_TVD)) _trgr3 = 0;   if ((_gtv11) &lt; (Menu_Value_1_TVD)) _trgr3 = 1;   digitalWrite(2, !(_trgr3));   if (!(_gtv6)) {     Menu_Value_1_TVD = _menuValueArray_int[1];   }   _gtv10 = _trgr3;   if (!(_gtv6)) {     Menu_Value_2_TVD = _menuValueArray_int[3];   }   if ((_gtv11) &lt; (Menu_Value_4_TVD)) _trgr4 = 0;   if ((_gtv11) &gt; (Menu_Value_3_TVD)) _trgr4 = 1;   if (!(_gtv6)) {     Menu_Value_3_TVD = _menuValueArray_int[0];   }   digitalWrite(3, !(_trgr4));   _gtv12 = _trgr4;   if (!(_gtv6)) {     Menu_Value_4_TVD = _menuValueArray_int[2];   }   digitalWrite(11, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) ));   if (_gtv10)   {     _swi1 = String(&quot;H - ON&quot;);   }   else   {     _swi1 = String(&quot;H - OFF&quot;);   }   if (_gtv12)   {     _swi2 = String(&quot;V - ON&quot;);   }   else   {     _swi2 = String(&quot;V - OFF&quot;);   }   if (!(_gtv6)) {     _dispTempLength1 = ((((String(&quot;Temp - &quot;)) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(&quot; C&quot;))))).length();     if (_disp3oldLength &gt; _dispTempLength1) {       _isNeedClearDisp1 = 1;     }     _disp3oldLength = _dispTempLength1;     _lcd1.setCursor(int((16 - _dispTempLength1) \/ 2), 0);     _lcd1.print((((String(&quot;Temp - &quot;)) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(&quot; C&quot;)))));   } else {     if (_disp3oldLength &gt; 0) {       _isNeedClearDisp1 = 1;       _disp3oldLength = 0;     }   }   if (!(_gtv6)) {     _dispTempLength1 = ((((_swi1) + (String(&quot;  &quot;)) + (_swi2)))).length();     if (_disp4oldLength &gt; _dispTempLength1) {       _isNeedClearDisp1 = 1;     }     _disp4oldLength = _dispTempLength1;     _lcd1.setCursor(int((16 - _dispTempLength1) \/ 2), 1);     _lcd1.print((((_swi1) + (String(&quot;  &quot;)) + (_swi2))));   } else {     if (_disp4oldLength &gt; 0) {       _isNeedClearDisp1 = 1;       _disp4oldLength = 0;     }   }     } String  _floatToStringWitRaz(float value, int raz) {    return String(value, raz); } bool _isTimer(unsigned long startTime, unsigned long period ) {   unsigned long currentTime;   currentTime = millis();   if (currentTime &gt;= startTime) {     return (currentTime &gt;= (startTime + period));   } else {     return (currentTime &gt;= (4294967295 - startTime + period));   } } void _menuUpEvents (byte menuIndex) {   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   byte parentStartIndex;   byte parentStopIndex;   if (parIndex == 0) {     parentStartIndex = (_MainMenus[menuIndex]).startIndex;     parentStopIndex = (_MainMenus[menuIndex]).stopIndex;   }   else {     parentStartIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 3]);     parentStopIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 4]);   }   if (tempIndex == parentStartIndex) {     if ((_MainMenus[menuIndex]).isSwitchMenuAroundRing) {       (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStopIndex - 1];       return;     } else {       return;     }   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex - 2];   return; } void _menuDownEvents (byte menuIndex) {   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   byte parentStartIndex;   byte parentStopIndex;   if (parIndex == 0) {     parentStartIndex = (_MainMenus[menuIndex]).startIndex;     parentStopIndex = (_MainMenus[menuIndex]).stopIndex;   }   else {     parentStartIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 3]);     parentStopIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex - 1]).startInArrayIndex) + 4]);   }   if (tempIndex == parentStopIndex) {     if ((_MainMenus[menuIndex]).isSwitchMenuAroundRing) {       (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStartIndex - 1];       return;     } else {       return;     }   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex];   return; } void _valueUpEvents (byte menuIndex) {   byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]);   byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]);   if (itemType == 3) {     _menuValueArray_bool[valIndex - 1 ] = 1;     return;   }   if (itemType == 4) {     _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] + (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1]));   } } void _valueDownEvents (byte menuIndex) {    byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]);   byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]);   if (itemType == 3) {     _menuValueArray_bool[valIndex - 1] = 0;     return;   }   if (itemType == 4) {     _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] - (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1]));   } } void _menuEnterTheMenuEvents (byte menuIndex) {   byte itemType =  pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   if (!(itemType == 0)) {     return;   }   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]);   if (newIndex == 0) {     return;   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1];   return; } void _menuExitFromMenuEvents (byte menuIndex) {   byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   if (parIndex == 0) {     return;   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1];   return; } String _menuOutputValueString (byte menuIndex) {   byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]);   if (itemType == 0) {     if ( valueStrIndex == 0) {       return &quot;&quot;;     } else {       return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1])));     }   }   byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]);   byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]);   if ( valIndex == 0) {     return &quot;&quot;;   }   byte convFormat = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 9]);   if (itemType == 3) {     return _convertBoolean(itemType, convFormat, valIndex, indexMax, indexMin);   }   if (itemType == 4) {     return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin);   }   return &quot;&quot;; } void _menuUpdateToEEpromItems() {   EEPROM.updateInt(2, (_menuValueArray_int[0]));   EEPROM.updateBit(1, 0, (_menuValueArray_bool[0]));   EEPROM.updateInt(4, (_menuValueArray_int[1]));   EEPROM.updateInt(6, (_menuValueArray_int[2]));   EEPROM.updateInt(8, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) {   String result = String(&quot;&quot;);   while (pgm_read_byte(string) != '\\0')   {     result = result + char(pgm_read_byte(string));     string++;   }   return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte indexMin) {   if (itemType == 4) {     if (convFormat == 4) {       return String((_menuValueArray_int[valIndex - 1 ]), DEC);     }     if (convFormat == 5) {       return String((_menuValueArray_int[valIndex - 1]), HEX);     }     if (convFormat == 6) {       return String((_menuValueArray_int[valIndex - 1]), BIN);     }   } } String _convertBoolean(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte indexMin) {   if (convFormat == 1) {     if (_menuValueArray_bool[valIndex - 1]) {       return &quot;1&quot;;     } else {       return &quot;0&quot;;     }   }   if (convFormat == 2) {     if (_menuValueArray_bool[valIndex - 1]) {       return &quot;True&quot;;     } else {       return &quot;False&quot;;     }   }   if (convFormat == 3) {     if (_menuValueArray_bool[valIndex - 1 ]) {       return &quot;\u0414\u0430&quot;;     } else {       return &quot;\u041d\u0435\u0442&quot;;     }   }   if (_menuValueArray_bool[valIndex - 1]) {     return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMax - 1])));   } else {     return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMin - 1])));   } } float _convertDS18x2xData(byte type_s, byte data[12]) {   int16_t raw = (data[1] &lt;&lt; 8) | data[0];   if (type_s)   {     raw = raw &lt;&lt; 3;     if (data[7] == 0x10) {       raw = (raw & 0xFFF0) + 12 - data[6];     }   }   else   {     byte cfg = (data[4] & 0x60);     if (cfg == 0x00) raw = raw & ~7;   else if (cfg == 0x20) raw = raw & ~3;  else if (cfg == 0x40) raw = raw & ~1;   }   return  (float)raw \/ 16.0; } float _readDS18_ow12(byte addr[8], byte type_s) { byte data[12];   byte i;   _ow12.reset();   _ow12.select(addr);   _ow12.write(0xBE);   for ( i = 0; i &lt; 9; i++) {     data[i] = _ow12.read();   }   _ow12.reset();   _ow12.select(addr);   _ow12.write(0x44, 1);   return _convertDS18x2xData(type_s, data); } bool _oneWireSeach (byte array[], OneWire ow ) {   byte temp[8];   byte i;   if ( !ow.search(temp)) {     return false;   }   if (OneWire::crc8(temp, 7) != temp[7]) {     return false;   }    switch (temp[0]) {     case 0x10:       array[8] = 1;       break;     case 0x28:       array[8] = 0;       break;     case 0x22:       array[8] = 0;       break;     default:       return false;   }    for ( i = 0; i &lt; 8; i++) {     array[i] = temp[i];   }   return true; } struct UB_142171746 _func_UB_142171746(struct UB_142171746 _ubInstans, int ubi_125089190, int ubpar_125440348, int ubpar_79146376, int ubpar_175158211, int ubpar_40719224) {   bool ubo_101667604 = _ubInstans.ubo_101667604;   bool ubo_51674151 = _ubInstans.ubo_51674151;   bool ubo_137412502 = _ubInstans.ubo_137412502;   bool ubo_174461762 = _ubInstans.ubo_174461762;   bool ubo_157422683 = _ubInstans.ubo_157422683;   int _gtv1 = _ubInstans._gtv1;   int _gtv2 = _ubInstans._gtv2;   int _gtv3 = _ubInstans._gtv3;   int _gtv4 = _ubInstans._gtv4;   int _gtv5 = _ubInstans._gtv5;   bool _bounse1S = _ubInstans._bounse1S;   bool _bounse1O = _ubInstans._bounse1O;   unsigned long _bounse1P = _ubInstans._bounse1P;   bool _bounse2S = _ubInstans._bounse2S;   bool _bounse2O = _ubInstans._bounse2O;   unsigned long _bounse2P = _ubInstans._bounse2P;   bool _bounse3S = _ubInstans._bounse3S;   bool _bounse3O = _ubInstans._bounse3O;   unsigned long _bounse3P = _ubInstans._bounse3P;   bool _bounse4S = _ubInstans._bounse4S;   bool _bounse4O = _ubInstans._bounse4O;   unsigned long _bounse4P = _ubInstans._bounse4P;   bool _bounse5S = _ubInstans._bounse5S;   bool _bounse5O = _ubInstans._bounse5O;   unsigned long _bounse5P = _ubInstans._bounse5P;   bool   _bounceTmpD1 = (ubi_125089190) &lt; (_gtv1);    if (_bounse1S)   {     if (millis() &gt;= (_bounse1P + 40))     {       _bounse1O =  _bounceTmpD1;       _bounse1S = 0;     }   }   else   {     if ( _bounceTmpD1 != _bounse1O )     {       _bounse1S = 1;       _bounse1P = millis();     }   }   bool   _bounceTmpD2 = ( ((ubi_125089190) &gt; (_gtv1)) && ((ubi_125089190) &lt; (_gtv2)) );    if (_bounse2S)   {     if (millis() &gt;= (_bounse2P + 40))     {       _bounse2O =  _bounceTmpD2;       _bounse2S = 0;     }   }   else   {     if ( _bounceTmpD2 != _bounse2O )     {       _bounse2S = 1;       _bounse2P = millis();     }   }   bool   _bounceTmpD3 = ( ((ubi_125089190) &gt; (_gtv2)) && ((ubi_125089190) &lt; (_gtv3)) );    if (_bounse3S)   {     if (millis() &gt;= (_bounse3P + 40))     {       _bounse3O =  _bounceTmpD3;       _bounse3S = 0;     }   }   else   {     if ( _bounceTmpD3 != _bounse3O )     {       _bounse3S = 1;       _bounse3P = millis();     }   }   bool   _bounceTmpD4 = ( ((ubi_125089190) &gt; (_gtv3)) && ((ubi_125089190) &lt; (_gtv4)) );    if (_bounse4S)   {     if (millis() &gt;= (_bounse4P + 40))     {       _bounse4O =  _bounceTmpD4;       _bounse4S = 0;     }   }   else   {     if ( _bounceTmpD4 != _bounse4O )     {       _bounse4S = 1;       _bounse4P = millis();     }   }   bool   _bounceTmpD5 = ( ((ubi_125089190) &gt; (_gtv4)) && ((ubi_125089190) &lt; (_gtv5)) );    if (_bounse5S)   {     if (millis() &gt;= (_bounse5P + 40))     {       _bounse5O =  _bounceTmpD5;       _bounse5S = 0;     }   }   else   {     if ( _bounceTmpD5 != _bounse5O )     {       _bounse5S = 1;       _bounse5P = millis();     }   }   _gtv1 = (ubpar_125440348) \/ (2);   _gtv2 = (((ubpar_79146376) - (ubpar_125440348)) \/ (2)) + (ubpar_125440348);   _gtv3 = (((ubpar_175158211) - (ubpar_79146376)) \/ (2)) + (ubpar_79146376);   _gtv4 = (((ubpar_40719224) - (ubpar_175158211)) \/ (2)) + (ubpar_175158211);   _gtv5 = (((1023) - (ubpar_40719224)) \/ (2)) + (ubpar_40719224);   ubo_101667604 = _bounse1O;   ubo_51674151 = _bounse2O;   ubo_137412502 = _bounse3O;   ubo_174461762 = _bounse4O;   ubo_157422683 = _bounse5O;   _ubInstans.ubo_101667604 = ubo_101667604;   _ubInstans.ubo_51674151 = ubo_51674151;   _ubInstans.ubo_137412502 = ubo_137412502;   _ubInstans.ubo_174461762 = ubo_174461762;   _ubInstans.ubo_157422683 = ubo_157422683;   _ubInstans._gtv1 = _gtv1;   _ubInstans._gtv2 = _gtv2;   _ubInstans._gtv3 = _gtv3;   _ubInstans._gtv4 = _gtv4;   _ubInstans._gtv5 = _gtv5;   _ubInstans._bounse1S = _bounse1S;   _ubInstans._bounse1O = _bounse1O;   _ubInstans._bounse1P = _bounse1P;   _ubInstans._bounse2S = _bounse2S;   _ubInstans._bounse2O = _bounse2O;   _ubInstans._bounse2P = _bounse2P;   _ubInstans._bounse3S = _bounse3S;   _ubInstans._bounse3O = _bounse3O;   _ubInstans._bounse3P = _bounse3P;   _ubInstans._bounse4S = _bounse4S;   _ubInstans._bounse4O = _bounse4O;   _ubInstans._bounse4P = _bounse4P;   _ubInstans._bounse5S = _bounse5S;   _ubInstans._bounse5O = _bounse5O;   _ubInstans._bounse5P = _bounse5P;   return _ubInstans; }<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>#include &lt;Wire.h&gt; #include &lt;EEPROMex.h&gt; #include &lt;OneWire.h&gt; #include &lt;LiquidCrystal_I2C.h&gt;  LiquidCrystal_I2C _lcd2(0x27, 20, 4); int _dispTempLength2 = 0; boolean _isNeedClearDisp2;   OneWire  _ow12(12); byte _FLPArray27618413[9]; const byte _menuParametrsArray[]  PROGMEM =  {1, 5, 1, 0, 0, 0, 0, 0, 1, 4, 1, 0, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 9, 11, 0, 3, 0, 0, 8, 9, 0, 0, 0, 0, 0, 7, 11, 0, 4, 3, 1, 0, 0, 0, 12, 13, 1, 8, 4, 0, 0, 5, 5, 2, 0, 0, 0, 0, 0, 1, 4, 2, 0, 0, 6, 4, 4, 0, 0, 2, 0, 0, 1, 4, 8, 0, 10, 7, 4, 2, 0, 0, 2, 0, 0, 1, 4, 5, 0, 10, 8, 4, 3, 0, 0, 3, 0, 0, 1, 4, 6, 0, 10, 9, 4, 1, 0, 0, 3, 0, 0, 1, 4, 3, 0, 10}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[]  PROGMEM =  {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[]  PROGMEM =  {1}; long _menuValueArray_long[2]; const long _menuConstantValuesArray_long[]  PROGMEM =  {1}; const char _flprogMenuNameString1[] PROGMEM = &quot;Enter Password&quot;; const char _flprogMenuNameString2[] PROGMEM = &quot;ChangePassword&quot;; const char _flprogMenuNameString3[] PROGMEM = &quot;Vent-Off&quot;; const char _flprogMenuNameString4[] PROGMEM = &quot;Sound&quot;; const char _flprogMenuNameString5[] PROGMEM = &quot;Heater-Off&quot;; const char _flprogMenuNameString6[] PROGMEM = &quot;Vent-On&quot;; const char _flprogMenuNameString7[] PROGMEM = &quot;Vent Setting&quot;; const char _flprogMenuNameString8[] PROGMEM = &quot;Heater-On&quot;; const char _flprogMenuNameString9[] PROGMEM = &quot;HeaterSetting&quot;; const char _flprogMenuNameString10[] PROGMEM = &quot;C&quot;; const char _flprogMenuNameString11[] PROGMEM = &quot;Enter to submenu&quot;; const char _flprogMenuNameString12[] PROGMEM = &quot;On&quot;; const char _flprogMenuNameString13[] PROGMEM = &quot;Off&quot;; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1,  _flprogMenuNameString2,  _flprogMenuNameString3,  _flprogMenuNameString4,  _flprogMenuNameString5,  _flprogMenuNameString6,  _flprogMenuNameString7,  _flprogMenuNameString8,  _flprogMenuNameString9,  _flprogMenuNameString10,  _flprogMenuNameString11,  _flprogMenuNameString12,  _flprogMenuNameString13}; struct _menuItemStricture {   int startInArrayIndex; }; struct _menuMainStricture {   String tempString;   byte startIndex;   byte stopIndex;   bool isSwitchMenuAroundRing;   _menuItemStricture  currentItem; }; _menuItemStricture _MenuItems[9]; _menuMainStricture _MainMenus[2]; bool _gtv6; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv13; bool _gtv14; bool _gtv15; bool _gtv16; bool _gtv17; bool _gtv18; bool _gtv19; bool _gtv20; bool _gtv21; bool _gtv22; bool _gtv23; bool _gtv7; bool _gtv8; bool _trgr4 = 0; int Menu_Value_1_TVD = 0; bool _trgrt2 = 0; bool _trgrt2I = 0; bool _trgt1 = 0; bool _trgt1I = 0; int _disp4oldLength = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_OVUIS = 0; bool _MenuBlock_47814740_OVDIS = 0; unsigned long _MenuBlock_47814740_VUDST = 0UL; unsigned long _MenuBlock_47814740_VUDSPT = 0UL; byte _MenuBlock_47814740_VUDSM = 0; int _MenuBlock_47814740_VUDPT = 0; bool _MenuBlock_47814740_IDI_0 = 0; bool _MenuBlock_47814740_IDI_1 = 0; bool _MenuBlock_47814740_IDI_2 = 0; bool _MenuBlock_47814740_IDI_3 = 0; bool _MenuBlock_47814740_IDI_4 = 0; bool _MenuBlock_47814740_IDI_5 = 0; bool _MenuBlock_47814740_IDI_6 = 0; bool _MenuBlock_47814740_IDI_7 = 0; bool _MenuBlock_47814740_IDI_8 = 0; bool _MenuBlock_47814740_IDI_9 = 0; bool _MenuBlock_47814740MinusIOS = 0; bool _trgr1 = 0; bool _trgr3 = 0; bool _mkb1C1xP1 = 0; bool _mkb1C1xP2 = 0; bool _mkb1C1xP3 = 0; bool _mkb1C1xP4 = 0; bool _mkb1C2xP1 = 0; bool _mkb1C2xP2 = 0; bool _mkb1C2xP3 = 0; bool _mkb1C2xP4 = 0; bool _mkb1C3xP1 = 0; bool _mkb1C3xP2 = 0; bool _mkb1C3xP3 = 0; bool _mkb1C3xP4 = 0; bool _mkb1C4xP1 = 0; bool _mkb1C4xP2 = 0; bool _mkb1C4xP3 = 0; bool _mkb1C4xP4 = 0; bool _trgrt1 = 0; bool _trgrt1I = 0; int Menu_Value_4_TVD = 0; int _disp7oldLength = 0; String _swi2; int _disp2oldLength = 0; String _MenuBlock_360159546_MNO; String _MenuBlock_360159546_VNO; bool _MenuBlock_360159546_OEIS = 0; bool _MenuBlock_360159546_OMUIS = 0; bool _MenuBlock_360159546_OMDIS = 0; bool _MenuBlock_360159546_OVUIS = 0; bool _MenuBlock_360159546_OVDIS = 0; bool _MenuBlock_360159546_IDI_0 = 0; bool _MenuBlock_360159546_IDI_1 = 0; bool _MenuBlock_360159546_IDI_2 = 0; bool _MenuBlock_360159546_IDI_3 = 0; bool _MenuBlock_360159546_IDI_4 = 0; bool _MenuBlock_360159546_IDI_5 = 0; bool _MenuBlock_360159546_IDI_6 = 0; bool _MenuBlock_360159546_IDI_7 = 0; bool _MenuBlock_360159546_IDI_8 = 0; bool _MenuBlock_360159546_IDI_9 = 0; int Menu_Value_3_TVD = 0; int Menu_Value_2_TVD = 0; String _swi1; int _disp1oldLength = 0; int _disp3oldLength = 0; int _disp6oldLength = 0; unsigned long _d18x2x1Tti = 0UL; float _d18x2x1O = 0.00; int _disp5oldLength = 0; bool _sowb1_needScan = 0; bool _sowb1_ost = 0; bool _sowb1_FLPArray27618413 = 0; void setup() {   if ((EEPROM.read(0)) != 99) {     EEPROM.write(0, 99) ;     EEPROM.updateInt(10, 40);     EEPROM.updateBit(1, 0, 0);     EEPROM.updateInt(6, 30);     EEPROM.updateInt(12, 10);     EEPROM.updateLong(2, 123456);     EEPROM.updateInt(8, 25);   }   Wire.begin();   pinMode(16, OUTPUT);   pinMode(15, OUTPUT);   pinMode(17, OUTPUT);    _lcd2.init();   _lcd2.backlight();   pinMode(6, INPUT);   digitalWrite(6, HIGH);   pinMode(7, INPUT);   digitalWrite(7, HIGH);   pinMode(8, INPUT);   digitalWrite(8, HIGH);   pinMode(9, INPUT);   digitalWrite(9, HIGH);   pinMode(2, OUTPUT);   digitalWrite(2, HIGH);   pinMode(3, OUTPUT);   digitalWrite(3, HIGH);   pinMode(4, OUTPUT);   digitalWrite(4, HIGH);   pinMode(5, OUTPUT);   digitalWrite(5, HIGH);   _MenuItems[0].startInArrayIndex = 0;   _MenuItems[1].startInArrayIndex = 13;   _MenuItems[2].startInArrayIndex = 26;   _MenuItems[3].startInArrayIndex = 39;   _MenuItems[4].startInArrayIndex = 52;   _MenuItems[5].startInArrayIndex = 65;   _MenuItems[6].startInArrayIndex = 78;   _MenuItems[7].startInArrayIndex = 91;   _MenuItems[8].startInArrayIndex = 104;   _MainMenus[0].tempString = &quot;&quot;;   _MainMenus[0].startIndex = 1;   _MainMenus[0].isSwitchMenuAroundRing = 0;   _MainMenus[0].stopIndex = 1;   _MainMenus[0].currentItem = _MenuItems[0];   _MainMenus[1].tempString = &quot;&quot;;   _MainMenus[1].startIndex = 2;   _MainMenus[1].isSwitchMenuAroundRing = 1;   _MainMenus[1].stopIndex = 5;   _MainMenus[1].currentItem = _MenuItems[1];   _menuValueArray_long[1] = (EEPROM.readLong(2));   _menuValueArray_int[0] = (EEPROM.readInt(6));   _menuValueArray_bool[0] = (EEPROM.readBit(1, 0));   _menuValueArray_int[1] = (EEPROM.readInt(8));   _menuValueArray_int[2] = (EEPROM.readInt(10));   _menuValueArray_int[3] = (EEPROM.readInt(12)); } void loop() { bool _tempVariable_bool;   byte _tempVariable_byte;   if (_isNeedClearDisp2) {     _lcd2.clear();     _isNeedClearDisp2 = 0;   }       if (1) {     if (_trgrt2I) {       _trgrt2 = 0;     } else {       _trgrt2 = 1;       _trgrt2I = 1;     }   } else {     _trgrt2 = 0;     _trgrt2I = 0;   };   if (_isTimer(_d18x2x1Tti, 1000)) {     _d18x2x1Tti = millis();     _d18x2x1O =  _readDS18_ow12(_FLPArray27618413, _FLPArray27618413[8]);   }   if (_sowb1_needScan) {     if ( _oneWireSeach (_FLPArray27618413, _ow12)) {       _sowb1_FLPArray27618413 = 1;     }     _ow12.reset_search();     _sowb1_needScan = 0;   }   if (_trgrt2) {     if (! _sowb1_ost) {       _sowb1_ost = 1;       _sowb1_needScan = 1;       _sowb1_FLPArray27618413 = 0;     }   } else {     _sowb1_ost = 0;   }   _gtv11 = (_d18x2x1O);   digitalWrite(2, 0);   _mkb1C1xP1 = ! (digitalRead(6));   _mkb1C1xP2 = ! (digitalRead(7));   _mkb1C1xP3 = ! (digitalRead(8));   _mkb1C1xP4 = ! (digitalRead(9));   digitalWrite(2, 1);   digitalWrite(3, 0);   _mkb1C2xP1 = ! (digitalRead(6));   _mkb1C2xP2 = ! (digitalRead(7));   _mkb1C2xP3 = ! (digitalRead(8));   _mkb1C2xP4 = ! (digitalRead(9));   digitalWrite(3, 1);   digitalWrite(4, 0);   _mkb1C3xP1 = ! (digitalRead(6));   _mkb1C3xP2 = ! (digitalRead(7));   _mkb1C3xP3 = ! (digitalRead(8));   _mkb1C3xP4 = ! (digitalRead(9));   digitalWrite(4, 1);   digitalWrite(5, 0);   _mkb1C4xP1 = ! (digitalRead(6));   _mkb1C4xP2 = ! (digitalRead(7));   _mkb1C4xP3 = ! (digitalRead(8));   _mkb1C4xP4 = ! (digitalRead(9));   digitalWrite(5, 1);   _gtv1 = _mkb1C1xP1;   _gtv2 = _mkb1C1xP2;   _gtv3 = _mkb1C1xP3;   _gtv18 = _mkb1C1xP4;   _gtv4 = _mkb1C2xP1;   _gtv5 = _mkb1C2xP2;   _gtv13 = _mkb1C2xP3;   _gtv19 = _mkb1C2xP4;   _gtv14 = _mkb1C3xP1;   _gtv15 = _mkb1C3xP2;   _gtv16 = _mkb1C3xP3;   _gtv20 = _mkb1C3xP4;   _gtv23 = _mkb1C4xP1;   _gtv17 = _mkb1C4xP2;   _gtv22 = _mkb1C4xP3;   _gtv21 = _mkb1C4xP4;   bool  _tmp1 = _gtv23;   if (_tmp1)  {     if (! _trgt1I) _trgt1 = ! _trgt1;   }   _trgt1I = _tmp1;   _gtv6 = _trgt1;   if (_gtv7) {     _tempVariable_bool  =  1;     if ( ! _MenuBlock_360159546_OEIS ) {       _MenuBlock_360159546_OEIS = 1;       (_MainMenus[0]).tempString = &quot;&quot;;     }     _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]);     _MenuBlock_360159546_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     _MenuBlock_360159546_VNO = _menuOutputValueString (0);   } else {     _tempVariable_bool  =  0;     if (_MenuBlock_360159546_OEIS) {       _MenuBlock_360159546_OEIS = 0;       _menuUpdateToEEpromItems();     }     _MenuBlock_360159546_MNO = &quot;&quot;;     _MenuBlock_360159546_VNO = &quot;&quot;;   }   if (0) {     if ( ! _MenuBlock_360159546_OMUIS) {       _MenuBlock_360159546_OMUIS = 1; if (_tempVariable_bool) {         _menuUpEvents(0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_360159546_OMUIS = 0;   }   if (0) {     if ( ! _MenuBlock_360159546_OMDIS) {       _MenuBlock_360159546_OMDIS = 1; if (_tempVariable_bool) {         _menuDownEvents(0);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_360159546_OMDIS = 0;   }   if (0) {     if ( ! _MenuBlock_360159546_OVUIS) {       _MenuBlock_360159546_OVUIS = 1;       if (_tempVariable_bool) {         _valueUpEvents(0);       }     }   } else {     _MenuBlock_360159546_OVUIS = 0;   }   if (0) {     if ( ! _MenuBlock_360159546_OVDIS) {       _MenuBlock_360159546_OVDIS = 1;       if (_tempVariable_bool) {         _valueDownEvents(0);       }     }   } else {     _MenuBlock_360159546_OVDIS = 0;   }   if (_gtv17) {     if ( ! _MenuBlock_360159546_IDI_0) {       _MenuBlock_360159546_IDI_0 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '0');       }     }   } else {     _MenuBlock_360159546_IDI_0 = 0;   }   if (_gtv1) {     if ( ! _MenuBlock_360159546_IDI_1) {       _MenuBlock_360159546_IDI_1 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '1');       }     }   } else {     _MenuBlock_360159546_IDI_1 = 0;   }   if (_gtv2) {     if ( ! _MenuBlock_360159546_IDI_2) {       _MenuBlock_360159546_IDI_2 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '2');       }     }   } else {     _MenuBlock_360159546_IDI_2 = 0;   }   if (_gtv3) {     if ( ! _MenuBlock_360159546_IDI_3) {       _MenuBlock_360159546_IDI_3 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '3');       }     }   } else {     _MenuBlock_360159546_IDI_3 = 0;   }   if (_gtv4) {     if ( ! _MenuBlock_360159546_IDI_4) {       _MenuBlock_360159546_IDI_4 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '4');       }     }   } else {     _MenuBlock_360159546_IDI_4 = 0;   }   if (_gtv5) {     if ( ! _MenuBlock_360159546_IDI_5) {       _MenuBlock_360159546_IDI_5 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '5');       }     }   } else {     _MenuBlock_360159546_IDI_5 = 0;   }   if (_gtv13) {     if ( ! _MenuBlock_360159546_IDI_6) {       _MenuBlock_360159546_IDI_6 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '6');       }     }   } else {     _MenuBlock_360159546_IDI_6 = 0;   }   if (_gtv14) {     if ( ! _MenuBlock_360159546_IDI_7) {       _MenuBlock_360159546_IDI_7 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '7');       }     }   } else {     _MenuBlock_360159546_IDI_7 = 0;   }   if (_gtv15) {     if ( ! _MenuBlock_360159546_IDI_8) {       _MenuBlock_360159546_IDI_8 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '8');       }     }   } else {     _MenuBlock_360159546_IDI_8 = 0;   }   if (_gtv16) {     if ( ! _MenuBlock_360159546_IDI_9) {       _MenuBlock_360159546_IDI_9 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(0, '9');       }     }   } else {     _MenuBlock_360159546_IDI_9 = 0;   }   if (_gtv7) {     _dispTempLength2 = ((_MenuBlock_360159546_MNO)).length();     if (_disp6oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp6oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 0);     _lcd2.print((_MenuBlock_360159546_MNO));   } else {     if (_disp6oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp6oldLength = 0;     }   }   if (_gtv7) {     _dispTempLength2 = ((_MenuBlock_360159546_VNO)).length();     if (_disp7oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp7oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 1);     _lcd2.print((_MenuBlock_360159546_VNO));   } else {     if (_disp7oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp7oldLength = 0;     }   }   if (_trgrt1) _trgr1 = 0;   if (((_menuValueArray_long[0])) == ((_menuValueArray_long[1]))) _trgr1 = 1;   if (!(_gtv6)) {     if (_trgrt1I) {       _trgrt1 = 0;     } else {       _trgrt1 = 1;       _trgrt1I = 1;     }   } else {     _trgrt1 = 0;     _trgrt1I = 0;   };   _gtv7 = ( (_gtv6) && (!(_trgr1)) );   _gtv8 = ( (_trgr1) && (_gtv6) );   if (_trgrt1) {     _menuValueArray_long[0] = 0L;   }   if (_gtv8) {     _tempVariable_bool  =  1;     if ( ! _MenuBlock_47814740_OEIS ) {       _MenuBlock_47814740_OEIS = 1;       _MainMenus[1].currentItem = _MenuItems[1];       (_MainMenus[1]).tempString = &quot;&quot;;     }     _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[1].currentItem ).startInArrayIndex) + 10]);     _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     _MenuBlock_47814740_VNO = _menuOutputValueString (1);     _tempVariable_byte  =  pgm_read_byte(&_menuParametrsArray[(((_MainMenus[1]).currentItem).startInArrayIndex) + 12]);     if (_tempVariable_byte == 0 ) {       _MenuBlock_47814740_ASO_1 =  &quot;&quot;;     } else {       _MenuBlock_47814740_ASO_1 =  _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));     }   } else {     _tempVariable_bool  =  0;     if (_MenuBlock_47814740_OEIS) {       _MenuBlock_47814740_OEIS = 0;       _menuUpdateToEEpromItems();     }     _MenuBlock_47814740_ASO_1 =  &quot;&quot;;     _MenuBlock_47814740_MNO = &quot;&quot;;     _MenuBlock_47814740_VNO = &quot;&quot;;   }   if (_gtv20) {     if ( ! _MenuBlock_47814740_OMUIS) {       _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) {         _menuUpEvents(1);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OMUIS = 0;   }   if (_gtv21) {     if ( ! _MenuBlock_47814740_OMDIS) {       _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) {         _menuDownEvents(1);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OMDIS = 0;   }   if (_gtv18) {     if ( ! _MenuBlock_47814740_OEMIS) {       _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) {         _menuEnterTheMenuEvents (1);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OEMIS = 0;   }   if (_gtv19) {     if ( ! _MenuBlock_47814740_OExFMIS) {       _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) {         _menuExitFromMenuEvents (1);         _menuUpdateToEEpromItems();       }     }   } else {     _MenuBlock_47814740_OExFMIS = 0;   }   if (0) {     if ( ! _MenuBlock_47814740_OVUIS) {       _MenuBlock_47814740_OVUIS = 1;       if (_tempVariable_bool) {         _valueUpEvents(1);         _MenuBlock_47814740_VUDST = millis();       }     } if (_tempVariable_bool) {       if (_MenuBlock_47814740_VUDSM == 0) {         if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) {           _MenuBlock_47814740_VUDSM = 1;           _MenuBlock_47814740_VUDSPT = millis();           _MenuBlock_47814740_VUDPT  = 500;         }       }  else {         if (_MenuBlock_47814740_VUDSM == 1) {           if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) {             _MenuBlock_47814740_VUDSM = 2;             _MenuBlock_47814740_VUDPT  = 200;           }         } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) {           _valueUpEvents(1);           _MenuBlock_47814740_VUDSPT = millis();         }       }     }   } else {     _MenuBlock_47814740_OVUIS = 0;     if ( ! ( 0)) {       _MenuBlock_47814740_VUDSM = 0;     }   }   if (0) {     if ( ! _MenuBlock_47814740_OVDIS) {       _MenuBlock_47814740_OVDIS = 1;       if (_tempVariable_bool) {         _valueDownEvents(1);         _MenuBlock_47814740_VUDST = millis();       }     } if (_tempVariable_bool) {       if (_MenuBlock_47814740_VUDSM == 0) {         if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) {           _MenuBlock_47814740_VUDSM = 1;           _MenuBlock_47814740_VUDSPT = millis();           _MenuBlock_47814740_VUDPT  = 500;         }       }  else {         if (_MenuBlock_47814740_VUDSM == 1) {           if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) {             _MenuBlock_47814740_VUDSM = 2;             _MenuBlock_47814740_VUDPT  = 200;           }         } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) {           _valueDownEvents(1);           _MenuBlock_47814740_VUDSPT = millis();         }       }     }   } else {     _MenuBlock_47814740_OVDIS = 0;     if ( ! ( 0)) {       _MenuBlock_47814740_VUDSM = 0;     }   }   if (_gtv17) {     if ( ! _MenuBlock_47814740_IDI_0) {       _MenuBlock_47814740_IDI_0 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '0');       }     }   } else {     _MenuBlock_47814740_IDI_0 = 0;   }   if (_gtv1) {     if ( ! _MenuBlock_47814740_IDI_1) {       _MenuBlock_47814740_IDI_1 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '1');       }     }   } else {     _MenuBlock_47814740_IDI_1 = 0;   }   if (_gtv2) {     if ( ! _MenuBlock_47814740_IDI_2) {       _MenuBlock_47814740_IDI_2 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '2');       }     }   } else {     _MenuBlock_47814740_IDI_2 = 0;   }   if (_gtv3) {     if ( ! _MenuBlock_47814740_IDI_3) {       _MenuBlock_47814740_IDI_3 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '3');       }     }   } else {     _MenuBlock_47814740_IDI_3 = 0;   }   if (_gtv4) {     if ( ! _MenuBlock_47814740_IDI_4) {       _MenuBlock_47814740_IDI_4 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '4');       }     }   } else {     _MenuBlock_47814740_IDI_4 = 0;   }   if (_gtv5) {     if ( ! _MenuBlock_47814740_IDI_5) {       _MenuBlock_47814740_IDI_5 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '5');       }     }   } else {     _MenuBlock_47814740_IDI_5 = 0;   }   if (_gtv13) {     if ( ! _MenuBlock_47814740_IDI_6) {       _MenuBlock_47814740_IDI_6 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '6');       }     }   } else {     _MenuBlock_47814740_IDI_6 = 0;   }   if (_gtv14) {     if ( ! _MenuBlock_47814740_IDI_7) {       _MenuBlock_47814740_IDI_7 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '7');       }     }   } else {     _MenuBlock_47814740_IDI_7 = 0;   }   if (_gtv15) {     if ( ! _MenuBlock_47814740_IDI_8) {       _MenuBlock_47814740_IDI_8 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '8');       }     }   } else {     _MenuBlock_47814740_IDI_8 = 0;   }   if (_gtv16) {     if ( ! _MenuBlock_47814740_IDI_9) {       _MenuBlock_47814740_IDI_9 = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '9');       }     }   } else {     _MenuBlock_47814740_IDI_9 = 0;   }   if (_gtv22) {     if ( ! _MenuBlock_47814740MinusIOS) {       _MenuBlock_47814740MinusIOS = 1;       if (_tempVariable_bool) {         _menuDirectInputKeyPressEvents(1, '-' );       }     }   } else {     _MenuBlock_47814740MinusIOS = 0;   }   if (_gtv8) {     _dispTempLength2 = ((_MenuBlock_47814740_MNO)).length();     if (_disp2oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp2oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 0);     _lcd2.print((_MenuBlock_47814740_MNO));   } else {     if (_disp2oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp2oldLength = 0;     }   }   if (_gtv8) {     _dispTempLength2 = ((((_MenuBlock_47814740_VNO) + (String(&quot; &quot;)) + (_MenuBlock_47814740_ASO_1)))).length();     if (_disp1oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp1oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 1);     _lcd2.print((((_MenuBlock_47814740_VNO) + (String(&quot; &quot;)) + (_MenuBlock_47814740_ASO_1))));   } else {     if (_disp1oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp1oldLength = 0;     }   }   if ((_gtv11) &gt; (Menu_Value_2_TVD)) _trgr3 = 0;   if ((_gtv11) &lt; (Menu_Value_1_TVD)) _trgr3 = 1;   digitalWrite(16, !(_trgr3));   if (!(_gtv6)) {     Menu_Value_1_TVD = _menuValueArray_int[3];   }   _gtv10 = _trgr3;   if (!(_gtv6)) {     Menu_Value_2_TVD = _menuValueArray_int[1];   }   if ((_gtv11) &lt; (Menu_Value_4_TVD)) _trgr4 = 0;   if ((_gtv11) &gt; (Menu_Value_3_TVD)) _trgr4 = 1;   if (!(_gtv6)) {     Menu_Value_3_TVD = _menuValueArray_int[2];   }   digitalWrite(15, !(_trgr4));   _gtv12 = _trgr4;   if (!(_gtv6)) {     Menu_Value_4_TVD = _menuValueArray_int[0];   }   digitalWrite(17, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) ));   if (_gtv10)   {     _swi1 = String(&quot;Heater - ON&quot;);   }   else   {     _swi1 = String(&quot;Heater - OFF&quot;);   }   if (_gtv12)   {     _swi2 = String(&quot;Ventilation - ON&quot;);   }   else   {     _swi2 = String(&quot;Ventilation - OFF&quot;);   }   if (!(_gtv6)) {     _dispTempLength2 = ((((String(&quot;Temp - &quot;)) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(&quot; C&quot;))))).length();     if (_disp3oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp3oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 0);     _lcd2.print((((String(&quot;Temp - &quot;)) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(&quot; C&quot;)))));   } else {     if (_disp3oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp3oldLength = 0;     }   }   if (!(_gtv6)) {     _dispTempLength2 = ((_swi1)).length();     if (_disp4oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp4oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 1);     _lcd2.print((_swi1));   } else {     if (_disp4oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp4oldLength = 0;     }   }   if (!(_gtv6)) {     _dispTempLength2 = ((_swi2)).length();     if (_disp5oldLength &gt; _dispTempLength2) {       _isNeedClearDisp2 = 1;     }     _disp5oldLength = _dispTempLength2;     _lcd2.setCursor(int((20 - _dispTempLength2) \/ 2), 2);     _lcd2.print((_swi2));   } else {     if (_disp5oldLength &gt; 0) {       _isNeedClearDisp2 = 1;       _disp5oldLength = 0;     }   }     } String  _floatToStringWitRaz(float value, int raz) {    return String(value, raz); } bool _isTimer(unsigned long startTime, unsigned long period ) {   unsigned long currentTime;   currentTime = millis();   if (currentTime &gt;= startTime) {     return (currentTime &gt;= (startTime + period));   } else {     return (currentTime &gt;= (4294967295 - startTime + period));   } } void _menuUpEvents (byte menuIndex) {   (_MainMenus[menuIndex]).tempString = &quot;&quot;;   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   byte parentStartIndex;   byte parentStopIndex;   if (parIndex == 0) {     parentStartIndex = (_MainMenus[menuIndex]).startIndex;     parentStopIndex = (_MainMenus[menuIndex]).stopIndex;   }   else {     parentStartIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 3]);     parentStopIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 4]);   }   if (tempIndex == parentStartIndex) {     if ((_MainMenus[menuIndex]).isSwitchMenuAroundRing) {       (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStopIndex - 1];       return;     } else {       return;     }   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex - 2];   return; } void _menuDownEvents (byte menuIndex) {   (_MainMenus[menuIndex]).tempString = &quot;&quot;;   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   byte parentStartIndex;   byte parentStopIndex;   if (parIndex == 0) {     parentStartIndex = (_MainMenus[menuIndex]).startIndex;     parentStopIndex = (_MainMenus[menuIndex]).stopIndex;   }   else {     parentStartIndex = pgm_read_byte(&_menuParametrsArray[( (_MenuItems[parIndex - 1]).startInArrayIndex) + 3]);     parentStopIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex - 1]).startInArrayIndex) + 4]);   }   if (tempIndex == parentStopIndex) {     if ((_MainMenus[menuIndex]).isSwitchMenuAroundRing) {       (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStartIndex - 1];       return;     } else {       return;     }   }   (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex];   return; } void _valueUpEvents (byte menuIndex) {   byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]);   byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]);   if (itemType == 3) {     _menuValueArray_bool[valIndex - 1 ] = 1;     return;   }   if (itemType == 4) {     _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] + (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1]));   }   if (itemType == 5) {     _menuValueArray_long[valIndex - 1] = _menuValueArray_long[valIndex - 1] + (pgm_read_dword(&_menuConstantValuesArray_long[indexStep - 1]));   } } void _valueDownEvents (byte menuIndex) {    byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]);   byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]);   if (itemType == 3) {     _menuValueArray_bool[valIndex - 1] = 0;     return;   }   if (itemType == 4) {     _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] - (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1]));   }   if (itemType == 5) {     _menuValueArray_long[valIndex - 1] = _menuValueArray_long[valIndex - 1] - (pgm_read_dword(&_menuConstantValuesArray_long[indexStep - 1]));   } } void _menuEnterTheMenuEvents (byte menuIndex) {   byte itemType =  pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   if (!(itemType == 0)) {     return;   }   byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);   byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]);   if (newIndex == 0) {     return;   }   (_MainMenus[menuIndex]).tempString = &quot;&quot;;   (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1];   return; } void _menuExitFromMenuEvents (byte menuIndex) {   byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]);   if (parIndex == 0) {     return;   }   (_MainMenus[menuIndex]).tempString = &quot;&quot;;   (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1];   return; } String _menuOutputValueString (byte menuIndex) {   byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]);   if (itemType == 0) {     if ( valueStrIndex == 0) {       return &quot;&quot;;     } else {       return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1])));     }   }   byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]);   byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]);   if ( valIndex == 0) {     return &quot;&quot;;   }   byte convFormat = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 9]);   if (itemType == 3) {     return _convertBoolean(itemType, convFormat, valIndex, indexMax, indexMin);   }   if (itemType == 4) {     return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin);   }   if (itemType == 5) {     return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin);   }   return &quot;&quot;; } void _menuDirectInputKeyPressEvents(byte menuIndex, char inputSymbol) {   byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]);   byte temp;   if (valIndex == 0) {     return;   }   byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]);   if (itemType == 7) {     return;   }   if (itemType == 3) {     (_MainMenus[menuIndex]).tempString = &quot;&quot;;   }   if (inputSymbol == '-') {     temp = ((_MainMenus[menuIndex]).tempString).length() ;  if (temp == 0) {       (_MainMenus[menuIndex]).tempString = &quot;-&quot;;     } else     { if (((_MainMenus[menuIndex]).tempString).charAt(0)  == '-') {         (_MainMenus[menuIndex]).tempString = ((_MainMenus[menuIndex]).tempString).substring(1);       } else       {         (_MainMenus[menuIndex]).tempString = &quot;-&quot; + (_MainMenus[menuIndex]).tempString;       }     }   } else {     (_MainMenus[menuIndex]).tempString = (_MainMenus[menuIndex]).tempString + inputSymbol;   }   if (itemType == 3) {     _menuValueArray_bool[valIndex - 1]  =  ((((_MainMenus[menuIndex]).tempString )).toInt());   }   if (itemType == 4) {     _menuValueArray_int[valIndex - 1]  =  (((_MainMenus[menuIndex]).tempString )).toInt();   }   if (itemType == 5) {     _menuValueArray_long[valIndex - 1]  =  (((_MainMenus[menuIndex]).tempString ).toInt());   } } void _menuUpdateToEEpromItems() {   EEPROM.updateLong(2, (_menuValueArray_long[1]));   EEPROM.updateInt(6, (_menuValueArray_int[0]));   EEPROM.updateBit(1, 0, (_menuValueArray_bool[0]));   EEPROM.updateInt(8, (_menuValueArray_int[1]));   EEPROM.updateInt(10, (_menuValueArray_int[2]));   EEPROM.updateInt(12, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) {   String result = String(&quot;&quot;);   while (pgm_read_byte(string) != '\\0')   {     result = result + char(pgm_read_byte(string));     string++;   }   return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte indexMin) {   if (itemType == 4) {     if (convFormat == 4) {       return String((_menuValueArray_int[valIndex - 1 ]), DEC);     }     if (convFormat == 5) {       return String((_menuValueArray_int[valIndex - 1]), HEX);     }     if (convFormat == 6) {       return String((_menuValueArray_int[valIndex - 1]), BIN);     }   }   if (itemType == 5) {     if (convFormat == 4) {       return String((_menuValueArray_long[valIndex - 1 ]), DEC);     }     if (convFormat == 5) {       return String((_menuValueArray_long[valIndex - 1]), HEX);     }     if (convFormat == 6) {       return String((_menuValueArray_long[valIndex - 1]), BIN);     }   } } String _convertBoolean(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte indexMin) {   if (convFormat == 1) {     if (_menuValueArray_bool[valIndex - 1]) {       return &quot;1&quot;;     } else {       return &quot;0&quot;;     }   }   if (convFormat == 2) {     if (_menuValueArray_bool[valIndex - 1]) {       return &quot;True&quot;;     } else {       return &quot;False&quot;;     }   }   if (convFormat == 3) {     if (_menuValueArray_bool[valIndex - 1 ]) {       return &quot;\u0414\u0430&quot;;     } else {       return &quot;\u041d\u0435\u0442&quot;;     }   }   if (_menuValueArray_bool[valIndex - 1]) {     return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMax - 1])));   } else {     return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMin - 1])));   } } float _convertDS18x2xData(byte type_s, byte data[12]) {   int16_t raw = (data[1] &lt;&lt; 8) | data[0];   if (type_s)   {     raw = raw &lt;&lt; 3;     if (data[7] == 0x10) {       raw = (raw & 0xFFF0) + 12 - data[6];     }   }   else   {     byte cfg = (data[4] & 0x60);     if (cfg == 0x00) raw = raw & ~7;   else if (cfg == 0x20) raw = raw & ~3;  else if (cfg == 0x40) raw = raw & ~1;   }   return  (float)raw \/ 16.0; } float _readDS18_ow12(byte addr[8], byte type_s) { byte data[12];   byte i;   _ow12.reset();   _ow12.select(addr);   _ow12.write(0xBE);   for ( i = 0; i &lt; 9; i++) {     data[i] = _ow12.read();   }   _ow12.reset();   _ow12.select(addr);   _ow12.write(0x44, 1);   return _convertDS18x2xData(type_s, data); } bool _oneWireSeach (byte array[], OneWire ow ) {   byte temp[8];   byte i;   if ( !ow.search(temp)) {     return false;   }   if (OneWire::crc8(temp, 7) != temp[7]) {     return false;   }    switch (temp[0]) {     case 0x10:       array[8] = 1;       break;     case 0x28:       array[8] = 0;       break;     case 0x22:       array[8] = 0;       break;     default:       return false;   }    for ( i = 0; i &lt; 8; i++) {     array[i] = temp[i];   }   return true; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432<\/p>\n<p>  <a href=\"https:\/\/yadi.sk\/d\/CaNPsyNaydcxm\">\u0421\u0445\u0435\u043c\u0430 \u0441 LCD Keypad Shield \u0438 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u043c<\/a><\/p>\n<p>  <a href=\"https:\/\/yadi.sk\/d\/VGkm8y-Gydcxhhttp:\/\/\">\u0421\u0445\u0435\u043c\u0430 \u0441 LCD Keypad Shield \u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c<\/a><\/p>\n<p>  <a href=\"https:\/\/yadi.sk\/d\/MQzLMr00ydcy2\">\u0421\u0445\u0435\u043c\u0430 \u0441 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 \u0438 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u043c<\/a><\/p>\n<p>  <a href=\"https:\/\/yadi.sk\/d\/KAkYG-cxydcxx\">\u0421\u0445\u0435\u043c\u0430 \u0441 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 \u0438 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c<\/a><\/p>\n<p>  \u041d\u0443, \u0432\u043e\u0442 \u0438 \u0432\u0441\u0451, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e \u0442\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0437\u0430\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u2014 \u043e\u0442\u0432\u0435\u0447\u0443.<\/p>\n<p>  .<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/geektimes.ru\/post\/282608\/\"> https:\/\/geektimes.ru\/post\/282608\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f43\/c88\/08d\/f43c8808d99e492799e45c1150a92a6e.PNG\"\/><br \/>  \u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c. <br \/>  \u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 FLProg \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 2.1. \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0431\u043b\u043e\u043a\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043c\u0435\u043d\u044e. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. <br \/>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443. \u0421\u043e\u0431\u0435\u0440\u0451\u043c \u0431\u043b\u043e\u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u043d\u044e \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u043e\u0433\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u043c \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430.  <\/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-280957","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280957","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=280957"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280957\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=280957"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=280957"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=280957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}