{"id":1225,"date":"2022-08-28T14:18:31","date_gmt":"2022-08-28T12:18:31","guid":{"rendered":"https:\/\/chebanlianka.com\/2022\/08\/28\/%d1%86%d0%bf%d0%ba-%d0%b4%d0%b8%d1%81%d0%bf%d0%bb%d0%b5%d0%b9-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%96%d0%b2-%d0%b4%d0%bb%d1%8f-%d0%bf%d0%be%d0%b2%d0%b5%d1%80%d0%bf%d0%b0%d0%ba%d1%83-cat\/"},"modified":"2023-06-05T07:59:55","modified_gmt":"2023-06-05T05:59:55","slug":"%d1%86%d0%bf%d0%ba-%d0%b4%d0%b8%d1%81%d0%bf%d0%bb%d0%b5%d0%b9-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%96%d0%b2-%d0%b4%d0%bb%d1%8f-%d0%bf%d0%be%d0%b2%d0%b5%d1%80%d0%bf%d0%b0%d0%ba%d1%83-cat","status":"publish","type":"post","link":"https:\/\/chebanlianka.com\/uk\/2022\/08\/28\/%d1%86%d0%bf%d0%ba-%d0%b4%d0%b8%d1%81%d0%bf%d0%bb%d0%b5%d0%b9-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%96%d0%b2-%d0%b4%d0%bb%d1%8f-%d0%bf%d0%be%d0%b2%d0%b5%d1%80%d0%bf%d0%b0%d0%ba%d1%83-cat\/","title":{"rendered":"\u0426\u041f\u041a \u0414\u0418\u0421\u041f\u041b\u0415\u0419 \u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420\u0406\u0412 \u0414\u041b\u042f \u041f\u041e\u0412\u0415\u0420\u041f\u0410\u041a\u0423 CATERPILLAR"},"content":{"rendered":"\n<p> \u0414\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f, \u0434\u043e\u0440\u043e\u0433\u0456 \u0434\u0440\u0443\u0437\u0456! \u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 \u044f \u0445\u043e\u0442\u0456\u0432 \u0431\u0438 \u043f\u043e\u0434\u0456\u043b\u0438\u0442\u0438\u0441\u044f \u0437 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0457\u043c \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c &#8211; \u043c\u043e\u043d\u0456\u0442\u043e\u0440\u043e\u043c CAN J1939 \u0434\u043b\u044f \u0441\u0443\u0434\u043d\u043e\u0432\u043e\u0457 \u0441\u0438\u043b\u043e\u0432\u043e\u0457 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 \u0431\u0430\u0437\u0456 \u0434\u0432\u0438\u0433\u0443\u043d\u0430 Caterpillar 3512B, \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e\u0457 \u0432 40-\u0444\u0443\u0442\u043e\u0432\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0456. \u041c\u043e\u043d\u0456\u0442\u043e\u0440 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c\u0443 \u0432\u0456\u0434\u0434\u0456\u043b\u0435\u043d\u043d\u0456, \u0434\u043e\u0432\u0436\u0438\u043d\u0430 \u043a\u0430\u0431\u0435\u043b\u044e \u0434\u043e \u0441\u0438\u043b\u043e\u0432\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0443 60 \u043c\u0435\u0442\u0440\u0456\u0432. \u042f \u0442\u0430\u043a\u043e\u0436 \u0441\u0442\u0432\u043e\u0440\u0438\u0432 \u0456 \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0432 \u0434\u0440\u0443\u0433\u0438\u0439 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439, \u044f\u043a\u0438\u0439 \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u0454 \u0437\u0434\u0456\u0439\u0441\u043d\u044e\u0432\u0430\u0442\u0438 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0456\u0439\u043d\u0438\u0439 \u043d\u0435\u0437\u0430\u043b\u0435\u0436\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0440\u0456\u0432\u043d\u044f \u043f\u0430\u043b\u0438\u0432\u0430 \u0432 \u0431\u0430\u043a\u0443, \u044f\u043a\u0438\u0439 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 \u0442\u043e\u043c\u0443 \u0436 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0456, \u0431\u0456\u043b\u044f \u0434\u0432\u0438\u0433\u0443\u043d\u0430 CAT.<\/p>\n\n\n\n<p> \u041d\u0430\u0436\u0430\u043b\u044c, \u0443 \u043c\u0435\u043d\u0435 \u043d\u0435\u043c\u0430\u0454 \u0447\u0430\u0441\u0443 \u043d\u0430 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u043d\u044f \u0432\u0441\u044c\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0443 \u0440\u043e\u0437\u0440\u043e\u0431\u043a\u0438. \u042f\u043a\u0449\u043e \u0443 \u0432\u0430\u0441 \u0454 \u043f\u0438\u0442\u0430\u043d\u043d\u044f \u0430\u0431\u043e \u0432\u0438 \u043d\u0435 \u0440\u043e\u0437\u0443\u043c\u0456\u0454\u0442\u0435 \u0434\u0435\u044f\u043a\u0456 \u0447\u0430\u0441\u0442\u0438\u043d\u0438 \u043a\u043e\u0434\u0443, \u0432\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043f\u0438\u0442\u0430\u0442\u0438 \u043c\u0435\u043d\u0435 \u0437\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u044e \u043f\u043e\u0448\u0442\u043e\u044e.<\/p>\n\n\n\n<p> \u041f\u043b\u0430\u043d \u0440\u043e\u0431\u0456\u0442, \u0432\u0456\u0434\u0435\u043e, \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0456\u0457 \u0442\u0430 \u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435.<\/p>\n\n\n\n<p class=\"has-text-align-center has-medium-font-size\"><strong>\u0415\u0422\u0410\u041f\u0418 \u0420\u041e\u0411\u041e\u0422\u0418:<\/strong><\/p>\n\n\n\n<ol>\n<li>\u0412\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043c\u043e\u0436\u043b\u0438\u0432\u043e\u0441\u0442\u0456 \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0434\u043e \u0448\u0438\u043d\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0456 \u0440\u043e\u0431\u043e\u0447\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0456\u0432 D\/G \u0434\u0430\u0442\u0447\u0438\u043a\u0456\u0432 (RS-232, RS-485, CAN, \u0406\u043d\u0448\u0435).<\/li>\n\n\n\n<li>\u0417\u0430\u043c\u043e\u0432\u043b\u044f\u044e \u043e\u0431\u043b\u0430\u0434\u043d\u0430\u043d\u043d\u044f, \u044f\u043a\u043e\u0433\u043e \u043d\u0435 \u0432\u0438\u0441\u0442\u0430\u0447\u0430\u0454.<\/li>\n\n\n\n<li>\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u043d\u0435\u043e\u0431\u0445\u0456\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u0434\u043d\u0430\u043d\u043d\u044f, \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0434\u043e \u0448\u0438\u043d\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0456 \u0434\u0430\u043d\u0438\u0445.<\/li>\n\n\n\n<li>\u0417\u0447\u0438\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0438\u0445 \u043a\u043e\u0434\u0456\u0432 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0456\u0437\u0443 \u043d\u0435\u043e\u0431\u0445\u0456\u0434\u043d\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0456\u0432.<\/li>\n\n\n\n<li>\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u043d\u0456\u0442\u043e\u0440\u0438\u043d\u0433\u0443 \u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0456\u043d\u043d\u044f.<\/li>\n\n\n\n<li>\u041f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e (F\/D) &#8220;\u043d\u0430 \u043c\u0456\u0441\u0446\u0456&#8221;, \u0442\u0435\u0441\u0442\u0443\u0432\u0430\u043d\u043d\u044f.<\/li>\n\n\n\n<li>\u041f\u0440\u043e\u043a\u043b\u0430\u0434\u0430\u043d\u043d\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u0430\u0431\u0435\u043b\u044e \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u0435 \u0432\u0456\u0434\u0434\u0456\u043b\u0435\u043d\u043d\u044f.<\/li>\n\n\n\n<li>\u041f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f F\/D \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c\u0443 \u0432\u0456\u0434\u0434\u0456\u043b\u0435\u043d\u043d\u0456.<\/li>\n\n\n\n<li>\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u0440\u043e\u0431\u043e\u0442\u0438 F\/D &#8220;\u043d\u0430 \u0432\u0456\u0434\u0441\u0442\u0430\u043d\u0456&#8221;, \u0443\u0441\u0443\u043d\u0435\u043d\u043d\u044f \u043c\u043e\u0436\u043b\u0438\u0432\u0438\u0445 \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a \u0456 \u0435\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u0448\u043a\u043e\u0434.<\/li>\n\n\n\n<li>\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0432 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0443 \u043f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0456\u043d\u043d\u044f.<\/li>\n\n\n\n<li>\u041e\u0441\u0442\u0430\u043d\u043d\u044f \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430.<\/li>\n\n\n\n<li>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043e\u0431\u043b\u0430\u0434\u043d\u0430\u043d\u043d\u044f.<\/li>\n<\/ol>\n\n\n\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u043d\u0435\u043e\u0431\u0445\u0456\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u0434\u043d\u0430\u043d\u043d\u044f:<br>\u0414\u0438\u0441\u043f\u043b\u0435\u0439 TFT 3.5&#8242; 480&#215;320 px.<br>\u041f\u043b\u0430\u0442\u0438 \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043d\u0430 \u043c\u0456\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430\u0445 ATmega2560 \u0442\u0430 ATmega328P (Arduino)<br>\u041f\u0435\u0440\u0435\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u0447 \u0456\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 CAN\/SPI<br>\u0415\u043a\u0440\u0430\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u043a\u0430\u0431\u0435\u043b\u044c<br>\u0410\u0434\u0430\u043f\u0442\u0435\u0440 \u0436\u0438\u0432\u043b\u0435\u043d\u043d\u044f \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0456\u043d\u043d\u044f 12V \/ 0.5A &#8211; 1 \u0448\u0442.<\/p>\n\n\n\n<p class=\"has-text-align-center has-medium-font-size\"><strong>\u0423 \u0432\u0438\u0445\u0456\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0456 \u043c\u043e\u0436\u0443\u0442\u044c \u0431\u0443\u0442\u0438 \u043f\u043e\u043c\u0438\u043b\u043a\u0438 \u0442\u0430 \u043d\u0435\u0434\u043e\u043b\u0456\u043a\u0438. \u041d\u0435 \u0441\u0443\u0434\u0456\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e! \u0420\u043e\u0431\u043e\u0442\u0430 \u0442\u0440\u0438\u0432\u0430\u0454.<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center has-medium-font-size\"><strong>\u041a\u041e\u0420\u041e\u0422\u041a\u0415 \u0412\u0406\u0414\u0415\u041e<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Auxiliary system for monitoring parameters and control of deviation. D\/G Caterpillar 3512B\" width=\"750\" height=\"422\" src=\"https:\/\/www.youtube.com\/embed\/7Dwb3JLOHs4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\nngg_shortcode_0_placeholder\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-61fca2b2-4b75-4a9c-a0a5-e12ba8937e9d\" href=\"https:\/\/chebanlianka.com\/wp-content\/uploads\/2022\/04\/fw_version_2021.09.28.zip\">fw_version_2021.09.28<\/a><a href=\"https:\/\/chebanlianka.com\/wp-content\/uploads\/2022\/04\/fw_version_2021.09.28.zip\" class=\"wp-block-file__button wp-element-button\" download=\"\" aria-describedby=\"wp-block-file--media-61fca2b2-4b75-4a9c-a0a5-e12ba8937e9d\">\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u043a\u043e\u0434<\/a><\/div>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-6b541c13-71a2-4aad-806d-6ec867744448\" href=\"https:\/\/chebanlianka.com\/wp-content\/uploads\/2022\/04\/tank_level_alarm.zip\">tank_level_alarm<\/a><a href=\"https:\/\/chebanlianka.com\/wp-content\/uploads\/2022\/04\/tank_level_alarm.zip\" class=\"wp-block-file__button wp-element-button\" download=\"\" aria-describedby=\"wp-block-file--media-6b541c13-71a2-4aad-806d-6ec867744448\">\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u043a\u043e\u0434<\/a><\/div>\n\n\n\n<p class=\"has-text-align-center has-medium-font-size\"><strong>\u041f\u0420\u041e\u0413\u0420\u0410\u041c\u041d\u0418\u0419 \u041a\u041e\u0414 \u041f\u0420\u0418\u0421\u0422\u0420\u041e\u042e \u041a\u041e\u041d\u0422\u0420\u041e\u041b\u042f \u0420\u041e\u0411\u041e\u0427\u0418\u0425 \u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420\u0406\u0412<\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  Caterpillar Can-Bus Monitor   \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/         Protocol: J1939        \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  Engine Model: GEN-SET 3512B   \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/    Oleksandr Cheban-Lianka     \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/      www.chebanlianka.com      \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/   oleksandr@chebanlianka.com   \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n#include &lt;SPI.h&gt;\n#include &lt;MCUFRIEND_kbv.h&gt;\n#include &quot;Adafruit_GFX.h&quot;\n#include &lt;mcp2515.h&gt;\n#include &lt;can.h&gt;\n#include &lt;lib.h&gt;\n#define LCD_RD A0\n#define LCD_WR A1\n#define LCD_CD A2\n#define LCD_CS A3\n#define LCD_RESET A4\n#define BME_CS 10\n#define BME_MOSI 11\n#define BME_MISO 12\n#define BME_SCK 13\n\n\/\/ \u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0446\u0432\u0435\u0442\u0430\n\n#define BLACK 0x0000\n#define NAVY 0x000F\n#define DARKGREEN 0x03E0\n#define DARKCYAN 0x03EF\n#define MAROON 0x7800\n#define PURPLE 0x780F\n#define OLIVE 0x7BE0\n#define LIGHTGREY 0xC618\n#define DARKGREY 0x7BEF\n#define GREEN 0x07E0\n#define CYAN 0x07FF\n#define RED 0xF800\n#define MAGENTA 0xF81F\n#define YELLOW 0xFFE0\n#define WHITE 0xFFFF\n#define ORANGE 0xFD20\n#define GREENYELLOW 0xAFE5\n#define PINK 0xF81F\n#define BGRD 0x686400\n\/\/#define BLUE 0x001F\n#define BLUE 0x0000FF\n#define DBLUE 0x006F\n#define GREY 0xC618\n#define DGREY 0x7BEF\n\n\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0438\n\nMCUFRIEND_kbv tft;\nMCP2515 mcp2515(10);\n\n\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\n\nboolean buzzerEnabled = false; \/\/ \u0414\u043b\u044f \u0411\u0443\u0437\u0435\u0440\u0430\nboolean resetButton = true;\n\nboolean singleNodataSwitch = true;\n\nboolean commonInAlarm = false;\nboolean commonInNormal = false;\nboolean commonStatus = true;\n\nboolean leakageInAlarm = false;\nboolean leakageInNormal = false;\nboolean leakageStatus = true;\n\nboolean ventInAlarm = false;\nboolean ventInNormal = false;\nboolean ventStatus = true;\n\nboolean folowInAlarm = false;\nboolean folowInNormal = false;\nboolean folowStatus = true;\n\nboolean fohighInAlarm = false;\nboolean fohighInNormal = false;\nboolean fohighStatus = true;\n\nint canid;\nint data&#x5B;8];\n\nuint32_t pgnID = 0;\nuint32_t nodataDelayTimer;\n\/\/uint32_t delayTimer500;\n\/\/uint32_t delayTimer1000;\n\nconst int SPI_CS_PIN = 10;\nconst int INT_PIN = 2;\n\nstruct can_frame canMsg;\n\nstatic const uint8_t logoblack&#x5B;] PROGMEM = {\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x03, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x03, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfe, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0x80, 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x80, 0x3f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xc0, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x01, 0x80, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xe0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x0f, 0xe0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3f, 0xf8, 0x00, 0x00,\n  0x00, 0x00, 0x10, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xf8, 0x00, 0x00,\n  0x00, 0x00, 0x3c, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0xfc, 0x00, 0x00,\n  0x00, 0x00, 0x7f, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x00, 0x00,\n  0x00, 0x00, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,\n  0x00, 0x01, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,\n  0x00, 0x01, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,\n  0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,\n  0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,\n  0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x2b, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,\n  0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,\n  0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,\n  0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,\n  0x00, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfe, 0x00, 0x00,\n  0x00, 0x0f, 0xff, 0xff, 0xff, 0xf8, 0x40, 0x01, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xfc, 0x00, 0x00,\n  0x00, 0x07, 0xff, 0xff, 0xff, 0xe0, 0xf1, 0xe3, 0xc7, 0x87, 0x87, 0xff, 0xff, 0xfc, 0x00, 0x00,\n  0x00, 0x03, 0xff, 0xff, 0xff, 0xc0, 0xe1, 0xe3, 0xc3, 0xc7, 0x83, 0xff, 0xff, 0xf8, 0x00, 0x00,\n  0x00, 0x03, 0xff, 0xff, 0xff, 0x81, 0xf1, 0xe3, 0xc7, 0x87, 0x81, 0xff, 0xff, 0xf8, 0x00, 0x00,\n  0x00, 0x01, 0xff, 0xff, 0xfe, 0x00, 0xe1, 0xe3, 0xc3, 0x87, 0x80, 0x7f, 0xff, 0xf0, 0x00, 0x00,\n  0x00, 0x00, 0xff, 0xff, 0xfc, 0x00, 0xf1, 0xe3, 0xc7, 0x87, 0x80, 0x3f, 0xff, 0xe0, 0x00, 0x00,\n  0x00, 0x00, 0x7f, 0xff, 0xf8, 0x00, 0xe1, 0xe3, 0xc3, 0x87, 0x80, 0x1f, 0xff, 0xf0, 0x00, 0x00,\n  0x00, 0x00, 0x7f, 0xff, 0xf0, 0x01, 0xe1, 0xc3, 0x87, 0xc7, 0x80, 0x0f, 0xff, 0xf0, 0x00, 0x00,\n  0x00, 0x00, 0x3f, 0xff, 0xf0, 0x00, 0xa0, 0xa0, 0x82, 0x81, 0x00, 0x0f, 0xff, 0xf8, 0x00, 0x00,\n  0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf8, 0x00, 0x00,\n  0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xfc, 0x00, 0x00,\n  0x00, 0x00, 0x3f, 0xff, 0x80, 0x0a, 0xad, 0xaa, 0xaa, 0xaa, 0xa0, 0x01, 0xff, 0xff, 0xd4, 0x00,\n  0x00, 0x00, 0x3f, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x01, 0xff, 0xff, 0xff, 0xf8,\n  0x00, 0x00, 0x7f, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xff, 0xff, 0xf8,\n  0x00, 0x00, 0x7f, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xff, 0xfc,\n  0x00, 0x00, 0x7f, 0xfe, 0x00, 0x1d, 0x24, 0x49, 0x29, 0x24, 0xf8, 0x10, 0x7f, 0xff, 0xff, 0xfc,\n  0x00, 0x01, 0xff, 0xfc, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0x3f, 0xff, 0xff, 0xfc,\n  0x00, 0x1f, 0xff, 0xfc, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0x3f, 0xff, 0xff, 0xfc,\n  0x05, 0xff, 0xff, 0xf8, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x79, 0xff, 0x1f, 0xff, 0xff, 0xfe,\n  0x3f, 0xff, 0xff, 0xf8, 0xfd, 0x3c, 0x00, 0x00, 0x00, 0x40, 0x78, 0x54, 0x1f, 0xff, 0xff, 0xfe,\n  0x7f, 0xff, 0xff, 0xf8, 0x00, 0x1e, 0x00, 0x00, 0x01, 0xf0, 0x78, 0x00, 0x0f, 0xff, 0xff, 0xfe,\n  0x7f, 0xff, 0xff, 0xf0, 0x00, 0x3c, 0x00, 0x00, 0x03, 0xf0, 0x78, 0x00, 0x0f, 0xff, 0xff, 0xfe,\n  0x7f, 0xff, 0xff, 0xf0, 0x00, 0x1c, 0x00, 0x00, 0x03, 0xf8, 0x78, 0x00, 0x0f, 0xff, 0xff, 0xfe,\n  0x7f, 0xff, 0xff, 0xf0, 0xaa, 0x3c, 0x00, 0x00, 0x07, 0xf8, 0x78, 0xb6, 0x0f, 0xff, 0xff, 0xff,\n  0x7f, 0xff, 0xff, 0xe0, 0xff, 0x3c, 0x00, 0x00, 0x03, 0xf8, 0x78, 0xff, 0x07, 0xff, 0xff, 0xff,\n  0x7f, 0xff, 0xff, 0xe0, 0xff, 0x1c, 0x00, 0x00, 0x01, 0xf0, 0x78, 0xfe, 0x07, 0xff, 0xff, 0xff,\n  0xff, 0xff, 0xff, 0xe0, 0xff, 0x3e, 0x00, 0x00, 0x00, 0xc0, 0x78, 0xff, 0x07, 0xff, 0xff, 0xfe,\n  0xff, 0xff, 0xff, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x07, 0xff, 0xff, 0xf8,\n  0xff, 0xff, 0xff, 0xe0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x07, 0xff, 0xff, 0xe0,\n  0xff, 0xff, 0xff, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x07, 0xff, 0xff, 0x80,\n  0xff, 0xff, 0xff, 0xe0, 0xb5, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x48, 0x03, 0xff, 0xfc, 0x00,\n  0xff, 0xff, 0xff, 0xc0, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0x07, 0xff, 0xf4, 0x00,\n  0xff, 0xff, 0xff, 0xe0, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0x03, 0xff, 0xe0, 0x00,\n  0x1f, 0xff, 0xff, 0xc0, 0xfe, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x70, 0xff, 0x07, 0xff, 0xe0, 0x00,\n  0x07, 0xff, 0xff, 0xe0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xaa, 0x03, 0xff, 0xe0, 0x00,\n  0x00, 0xff, 0xff, 0xe0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x07, 0xff, 0xc0, 0x00,\n  0x00, 0x1f, 0xff, 0xc0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0xff, 0xe0, 0x00,\n  0x00, 0x07, 0xff, 0xe0, 0x24, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x07, 0xff, 0xc0, 0x00,\n  0x00, 0x03, 0xff, 0xe0, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0x07, 0xff, 0xe0, 0x00,\n  0x00, 0x03, 0xff, 0xe0, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0x07, 0xff, 0xe0, 0x00,\n  0x00, 0x03, 0xff, 0xe0, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0x07, 0xff, 0xf0, 0x00,\n  0x00, 0x01, 0xff, 0xf0, 0xaa, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfa, 0x07, 0xff, 0xfc, 0x00,\n  0x00, 0x03, 0xff, 0xf0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x0f, 0xff, 0xfe, 0x00,\n  0x00, 0x01, 0xff, 0xf0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x0f, 0xff, 0xff, 0x80,\n  0x00, 0x01, 0xff, 0xf0, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x0f, 0xff, 0xff, 0x80,\n  0x00, 0x01, 0xff, 0xf8, 0xaa, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xf6, 0x1f, 0xff, 0xff, 0xe0,\n  0x00, 0x01, 0xff, 0xf8, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0x1f, 0xff, 0xff, 0xf8,\n  0x00, 0x03, 0xff, 0xf8, 0xff, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0x1f, 0xff, 0xff, 0xfc,\n  0x00, 0x07, 0xff, 0xfc, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0x3f, 0xff, 0xff, 0xfc,\n  0x00, 0x1f, 0xff, 0xfe, 0x00, 0x1c, 0x40, 0x00, 0x00, 0x00, 0x78, 0x00, 0x3f, 0xff, 0xff, 0xfc,\n  0x00, 0x1f, 0xff, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xff, 0xfc,\n  0x00, 0x7f, 0xff, 0xfe, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xff, 0xf8,\n  0x00, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0xff, 0xff, 0xff, 0xf8,\n  0x01, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xa0, 0x01, 0xff, 0xff, 0xff, 0xf8,\n  0x03, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xf0,\n  0x07, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xf0,\n  0x07, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xe0,\n  0x07, 0xff, 0xff, 0xff, 0xf0, 0x00, 0xe1, 0xe1, 0xc3, 0x87, 0x00, 0x07, 0xff, 0xff, 0xff, 0xe0,\n  0x03, 0xff, 0xff, 0xff, 0xf8, 0x01, 0xe1, 0xc3, 0xc3, 0x87, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xe0,\n  0x03, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xe1, 0xe1, 0xc7, 0x87, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xc0,\n  0x01, 0xff, 0xff, 0xff, 0xfc, 0x01, 0xe1, 0xe3, 0xc3, 0x87, 0x80, 0x7f, 0xff, 0xe0, 0x0b, 0xc0,\n  0x01, 0xff, 0xff, 0xff, 0xff, 0x01, 0xe1, 0xc1, 0xc7, 0x87, 0x80, 0xff, 0xff, 0xc0, 0x00, 0x00,\n  0x00, 0xff, 0xff, 0xff, 0xff, 0x80, 0xe1, 0xe3, 0xc3, 0xc7, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,\n  0x00, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe1, 0xe1, 0xc7, 0x87, 0x83, 0xff, 0xff, 0x00, 0x00, 0x00,\n  0x00, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0xe0, 0xa3, 0xc3, 0x87, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x00,\n  0x00, 0x7f, 0xf0, 0x3f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x00, 0x00,\n  0x00, 0x3e, 0x80, 0x1f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0x00, 0x00, 0x00,\n  0x00, 0x10, 0x00, 0x1f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfa, 0xaf, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xf0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xff, 0xe0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xfe, 0x00, 0x7f, 0xff, 0x80, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x0f, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x3f, 0xff, 0xf8, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x0f, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x0f, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n};\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/PROGRAM SETUP\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nvoid setup() {\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ALARM SYSTEM SETUP BEGIN\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  pinMode(34, OUTPUT); \/\/ Buzzer Output\n  pinMode(22, INPUT_PULLUP); \/\/ Buzzer OFF Button\n  pinMode(24, INPUT_PULLUP); \/\/ Common Alarm Input\n  pinMode(26, INPUT_PULLUP); \/\/ Leakage Alarm Input\n  pinMode(28, INPUT_PULLUP); \/\/ Vent Alarm Input\n  pinMode(30, INPUT_PULLUP); \/\/ F.O. Level Low Input\n  pinMode(32, INPUT_PULLUP); \/\/ F.O. Level High Input\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ALARM SYSTEM SETUP END\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  Serial.begin(115200);\n  while (!Serial);\n  SPI.begin();\n\n  \/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 CAN \u043c\u043e\u0434\u0443\u043b\u044f\n  mcp2515.reset();\n  mcp2515.setBitrate(CAN_250KBPS, MCP_16MHZ);\n\n  mcp2515.setConfigMode();\n\n  mcp2515.setFilterMask(MCP2515::MASK0, true, 0x00FF0000); \/\/ \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0443\u043b\u0438, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u0432\u0441\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043d\u0438\u0436\u0435! \u0415\u0441\u043b\u0438 FF, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 ID.\n  mcp2515.setFilter(MCP2515::RXF0, true, 0x00FE0000);\n  mcp2515.setFilter(MCP2515::RXF1, true, 0x00FE0000);\n\n  mcp2515.setFilterMask(MCP2515::MASK1, true, 0x00FFFF00); \/\/ \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0443\u043b\u0438, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u0432\u0441\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043d\u0438\u0436\u0435! \u0415\u0441\u043b\u0438 FF, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 ID.\n  mcp2515.setFilter(MCP2515::RXF2, true, 0x00F00300); \/\/ Load At Current Speed\n  mcp2515.setFilter(MCP2515::RXF3, true, 0x00F00400); \/\/ L.O. Pressure, F.O. Pressure\n  mcp2515.setFilter(MCP2515::RXF4, true, 0x00FE0000);\n  mcp2515.setFilter(MCP2515::RXF5, true, 0x00FE0000);\n\n  mcp2515.setNormalMode();\n\n  \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u043f\u043e\u0440\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0434\u0438\u0441\u043f\u043b\u0435\u0435\n  Serial.println();\n  uint16_t ID = tft.readID();\n  Serial.print(&quot;TFT DISPLAY ID = 0x&quot;);\n  Serial.println(ID, HEX);\n  Serial.print(&quot;DISPLAY Height = &quot;);\n  Serial.println(tft.height());\n  Serial.print(&quot;DISPLAY Width = &quot;);\n  Serial.println(tft.width());\n\n  \/\/ \u041f\u0435\u0447\u0430\u0442\u0430\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a CAN-\u0448\u0438\u043d\u044b\n  Serial.println(&quot;------CAN-BUS Read OK!------&quot;);\n  Serial.println(&quot;Can ID ----- DLC  ----- DATA&quot;);\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/Hello Message\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  tft.begin(ID);\n  tft.setRotation(1); \/\/\u041f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u044d\u043a\u0440\u0430\u043d 0 = 0\u00b0, 1 = 90\u00b0, 2 = 180\u00b0, 3 = 270\u00b0\n  tft.fillScreen(BLACK);\n\n  tft.drawBitmap(180, 10, logoblack, 128, 128, 0xFFFF);\n\n  tft.setTextColor(WHITE);\n  tft.setTextSize(3);\n  tft.setCursor(60, 155);\n  tft.print(&quot;www.chebanlianka.com&quot;);\n\n  tft.setTextColor(WHITE);\n  tft.setTextSize(1);\n  tft.setCursor(53, 190);\n  tft.print(&quot;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/&quot;);\n  tft.setCursor(53, 200);\n  tft.print(&quot;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/   Caterpillar Can-Bus Monitor   \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/&quot;);\n  tft.setCursor(53, 210);\n  tft.print(&quot;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/          Protocol: J1939        \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/&quot;);\n  tft.setCursor(53, 220);\n  tft.print(&quot;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  Engine Model: GEN-SET 3512B    \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/&quot;);\n  tft.setCursor(53, 230);\n  tft.print(&quot;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Author: Oleksandr Cheban-Lianka \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/&quot;);\n  tft.setCursor(53, 240);\n  tft.print(&quot;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/    oleksandr@chebanlianka.com   \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/&quot;);\n  tft.setCursor(53, 250);\n  tft.print(&quot;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/&quot;);\n\n  tft.setCursor(160, 275);\n  tft.setTextColor(WHITE);\n  tft.setTextSize(3);\n  tft.print(&quot;loading...&quot;);\n\n  tft.setTextColor(WHITE);\n  tft.setTextSize(1);\n  tft.setCursor(350, 311);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.print(&quot;fw version 2021.09.27&quot;);\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  delay (10000);\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/Start Screen\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  tft.begin(ID);\n  tft.setRotation(1); \/\/\u041f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u044d\u043a\u0440\u0430\u043d 0 = 0\u00b0, 1 = 90\u00b0, 2 = 180\u00b0, 3 = 270\u00b0\n  tft.setTextSize(2);\n  tft.setTextColor(WHITE, BLACK);\n  tft.invertDisplay(false);\n  tft.setCursor(0, 0);\n  tft.fillScreen(BGRD);\n\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/START LOOP\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nvoid loop() {\n\n  if (mcp2515.readMessage(&amp;canMsg) == MCP2515::ERROR_OK)\n  {\n    nodataDelayTimer = millis();   \/\/\u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\n    Serial.print(canMsg.can_id, HEX); \/\/ \u041f\u0435\u0447\u0430\u0442\u0430\u0435\u043c \u0432 \u043f\u043e\u0440\u0442 CAN ID\n    Serial.print(&quot; &quot;);\n    unsigned long pngID = canMsg.can_id;\n\n    \/\/ Reduce ID To 4 digits (HEX xxxx)\n\n    pngID = pngID &lt;&lt; 8;\n    pngID = pngID &gt;&gt; 16;\n    pgnID = pngID;\n    Serial.print(pngID, HEX);\n    Serial.print(&quot; &quot;);\n    int dataLen = canMsg.can_dlc;\n\n    \/\/ print DLC\n\n    Serial.print(dataLen, HEX);\n    Serial.print(&quot; &quot;);\n\n    for (int i = 0; i &lt; canMsg.can_dlc; i++)\n    {\n\n      \/\/ print the data\n\n      data&#x5B;i] = canMsg.data&#x5B;i];\n      Serial.print(data&#x5B;i], HEX);\n      Serial.print(&quot; &quot;);\n    }\n    Serial.println();\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/SWITCH TO NODATA SCREEN\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n \n    if (millis() - nodataDelayTimer &gt;= 5000) {  \/\/\u0415\u0441\u043b\u0438 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u044f\u0442\u0438 \u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043d\u0430 nodataScreen\n      nodataScreen();\n      singleNodataSwitch = true;       \/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0442\u0435\u043b\u044c \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438\n      commonStatus = true;             \/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043b\u0430\u0440\u043c\u043e\u0432 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u0445 \u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c (\u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0430\u043b\u0430\u0440\u043c \u0432 \u0441\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0430 CAN-\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0435\u0442)\n      leakageStatus = true;            \/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043b\u0430\u0440\u043c\u043e\u0432 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u0445 \u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c (\u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0430\u043b\u0430\u0440\u043c \u0432 \u0441\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0430 CAN-\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0435\u0442)\n      ventStatus = true;               \/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043b\u0430\u0440\u043c\u043e\u0432 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u0445 \u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c (\u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0430\u043b\u0430\u0440\u043c \u0432 \u0441\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0430 CAN-\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0435\u0442)\n      folowStatus = true;              \/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043b\u0430\u0440\u043c\u043e\u0432 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u0445 \u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c (\u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0430\u043b\u0430\u0440\u043c \u0432 \u0441\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0430 CAN-\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0435\u0442)\n      fohighStatus = true;             \/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043b\u0430\u0440\u043c\u043e\u0432 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0437\u0430\u043d\u043e\u0432\u043e \u0438\u0445 \u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c (\u043d\u0443\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0430\u043b\u0430\u0440\u043c \u0432 \u0441\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0430 CAN-\u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0435\u0442)\n    }\n \n  if (millis() - nodataDelayTimer &lt; 5000 &amp;&amp; singleNodataSwitch == true) {   \/\/\u0415\u0441\u043b\u0438 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u044f\u0442\u0438 \u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043d\u0430 dataScreen\n    dataScreen();\n    singleNodataSwitch = false;      \/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c &quot;\u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b&quot; \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\n      }\n\nif (millis() - nodataDelayTimer &lt; 5000) {  \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043b\u0430\u0440\u043c\u043e\u0432\n    alarmLoop();\n      }\n\n\/\/void alarmLoop() {\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/MAIN PROGRAM CODE\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/Temp Sensor Code\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  if (pgnID == 0xfeee) {\n    int coolt = data&#x5B;0];\n    float cooltemp = ((-40) + coolt);\n    tft.setCursor(20, 33);\n    tft.setTextColor(WHITE, DBLUE);\n    tft.setTextSize(4);\n\n    if (cooltemp &gt; 100) cooltemp = 0;\n    if (cooltemp &lt; -10) {\n      tft.print(&quot;&quot;);\n      tft.print(String(cooltemp, 0));\n    }\n    else if (cooltemp &lt; 0) {\n      tft.print(&quot; &quot;);\n      tft.print(String(cooltemp, 0));\n    }\n    else if (cooltemp &lt; 10) {\n      tft.print(&quot; &quot;);\n      tft.print(String(cooltemp, 0));\n    }\n    else if (cooltemp &gt; 10) {\n      tft.print(&quot; &quot;);\n      tft.print(String(cooltemp, 0));\n    }\n    else {\n      tft.print(&quot;&quot;);\n      tft.print(String(cooltemp, 0));\n    }\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/Engine Speed Code\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  if (pgnID == 0xf004) {\n\n    \/\/millis() - delayTimer500 &gt;=500 &amp;&amp;\n    \/\/delayTimer500 = millis();   \/\/\u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440\n\n    unsigned int r1 = data&#x5B;3];\n    unsigned int r2 = data&#x5B;4];\n    float rpm = ((r1) + (r2 * 256)) * 0.125;\n    tft.setTextColor(WHITE, DBLUE);\n    tft.setTextSize(4);\n    tft.setCursor(160, 33);\n\n    if (rpm &gt; 10000) rpm = 0;\n    if (rpm &gt; 6000) rpm = 0;\n    \n    if (rpm &lt; 10) {\n      tft.print(&quot; &quot;);\n      tft.print(String(rpm, 0));\n      tft.print(&quot; &quot;);\n    }\n    else if (rpm &lt; 100) {\n      tft.print(&quot;  &quot;);\n      tft.print(String(rpm, 0));\n    }\n    else if (rpm &lt; 1000) {\n      tft.print(&quot; &quot;);\n      tft.print(String(rpm, 0));\n    }\n    else {\n      tft.print(&quot;&quot;);\n      tft.print(String(rpm, 0));\n    }\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/Fuel, Oil Pressure Code\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  if (pgnID == 0xfeef) {\n\n    unsigned int foilp = data&#x5B;0];\n    unsigned int loilp = data&#x5B;3];\n    float loilpressure = (loilp * 4);\n    float foilpressure = (foilp * 4);\n    tft.setTextColor(WHITE, DBLUE);\n    tft.setTextSize(4);\n    tft.setCursor(365, 33);\n\n    if (loilpressure &gt; 999) loilpressure = 0;\n    if (loilpressure &lt; 10) {\n      tft.print(&quot;&quot;);\n      tft.print(String(loilpressure, 0));\n      tft.print(&quot; &quot;);\n    }\n    else if (loilpressure &lt; 100) {\n      tft.print(&quot;&quot;);\n      tft.print(String(loilpressure, 0));\n    }\n    else {\n      tft.print(&quot;&quot;);\n      tft.print(String(loilpressure, 0));\n    }\n\n    tft.setCursor(365, 112);\n\n    if (foilpressure &gt; 999) foilpressure = 0;\n    if (foilpressure &lt; 10) {\n      tft.print(&quot;&quot;);\n      tft.print(String(foilpressure, 0));\n      tft.print(&quot; &quot;);\n    }\n    else if (foilpressure &lt; 100) {\n      tft.print(&quot;&quot;);\n      tft.print(String(foilpressure, 0));\n    }\n    else {\n      tft.print(&quot;&quot;);\n      tft.print(String(foilpressure, 0));\n    }\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/Boost Pressure Code\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  if (pgnID == 0xfef6) {\n    unsigned int bstp = data&#x5B;1];\n    float boostpressure = (bstp * 2);\n    tft.setTextColor(WHITE, DBLUE);\n    tft.setCursor(15, 112);\n    tft.setTextSize(4);\n\n    if (boostpressure &gt; 999) boostpressure = 0;\n    if (boostpressure &lt; 10) {\n      tft.print(&quot; &quot;);\n      tft.print(String(boostpressure, 0));\n      tft.print(&quot; &quot;);\n    }\n    else if (boostpressure &lt; 100) {\n      tft.print(&quot;  &quot;);\n      tft.print(String(boostpressure, 0));\n    }\n    else {\n      tft.print(&quot; &quot;);\n      tft.print(String(boostpressure, 0));\n    }\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/ Engine Power Code \/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  if (pgnID == 0xf003) {\n\n    \/\/millis() - delayTimer1000 &gt;=1000 &amp;&amp;\n    \/\/delayTimer1000 = millis();   \/\/\u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440\n    unsigned int p1 = data&#x5B;2];\n    float rpower = ((p1 * 0.01)*1125);\n    tft.setTextColor(WHITE, DBLUE);\n    tft.setTextSize(4);\n    tft.setCursor(160, 112);\n    if (rpower &gt; 9999) rpower = 0;\n    if (rpower &lt; 10) {\n      tft.print(&quot; &quot;);\n      tft.print(String(rpower, 0));\n      tft.print(&quot;  &quot;);\n    }\n    else if (rpower &lt; 100) {\n      tft.print(&quot;  &quot;);\n      tft.print(String(rpower, 0));\n      tft.print(&quot; &quot;);\n    }\n    else if (rpower &lt; 1000) {\n      tft.print(&quot; &quot;);\n      tft.print(String(rpower, 0));\n      tft.print(&quot; &quot;);\n    }\n    else {\n      tft.print(&quot; &quot;);\n      tft.print(String(rpower, 0));\n    }\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/Battery Code\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  if (pgnID == 0xfef7) {\n    unsigned int b1 = data&#x5B;4];\n    unsigned int b2 = data&#x5B;5];\n    float battery = ((b1) + (b2 * 256)) * 0.05;\n    tft.setTextColor(WHITE, DBLUE);\n    tft.setTextSize(4);\n    tft.setCursor(18, 193);\n\n    if (battery &gt; 40) battery = 0;\n    if (battery &lt; 10) {\n      tft.print(&quot; &quot;);\n      tft.print(String(battery, 1));\n    }\n    else if (battery &lt; 1) {\n      tft.print(&quot;  &quot;);\n      tft.print(String(battery, 1));\n    }\n    else {\n      tft.print(&quot;&quot;);\n      tft.print(String(battery, 1));\n    }\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/Engine Hours Code\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  if (pgnID == 0xfee5) {\n    unsigned int h1 = data&#x5B;0];\n    unsigned int h2 = data&#x5B;1];\n    unsigned int h3 = data&#x5B;2];\n    unsigned int h4 = data&#x5B;3];\n    float hours = (((h1) + (h2 * 256) + (h3) + (h4))) * 0.05;\n    tft.setTextColor(WHITE, DBLUE);\n    tft.setTextSize(4);\n    tft.setCursor(155, 193);\n\n    if (hours &gt; 99999) hours = 0;\n    if (hours &lt; 10) {\n      tft.print(&quot;  &quot;);\n      tft.print(String(hours, 2));\n      tft.print(&quot; &quot;);\n    }\n    else if (hours &lt; 100) {\n      tft.print(&quot;  &quot;);\n      tft.print(String(hours, 2));\n    }\n    else if (hours &lt; 1000) {\n      tft.print(&quot; &quot;);\n      tft.print(String(hours, 2));\n    }\n    else {\n      tft.print(&quot;&quot;);\n      tft.print(String(hours, 2));\n    }\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/Fuel Rate Code\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  if (pgnID == 0xfef2) {\n    unsigned int f1 = data&#x5B;0];\n    unsigned int f2 = data&#x5B;1];\n    float flow = ((f1) + (f2 * 256)) * 0.05;\n    tft.setTextColor(WHITE, DBLUE);\n    tft.setTextSize(3);\n    tft.setCursor(350, 196);\n\n    if (flow &gt; 999) flow = 0;\n    if (flow &lt; 10) {\n      tft.print(&quot;  &quot;);\n      tft.print(String(flow, 1));\n    }\n    else if (flow &lt; 100) {\n      tft.print(&quot; &quot;);\n      tft.print(String(flow, 1));\n    }\n    else {\n      tft.print(&quot;&quot;);\n      tft.print(String(flow, 1));\n    }\n\n  }\n\n}\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/END LOOP\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ ALARM SYSTEM LOOP BEGIN \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nvoid alarmLoop() {\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Common Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  commonInAlarm = digitalRead(24);\n  if (commonInAlarm == false &amp;&amp; commonStatus == true) {\n    tft.fillRect(10, 260, 110, 40, RED);\n    tft.setCursor(31, 265);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;COMMON&quot;);\n    tft.setCursor(38, 282);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;ALARM&quot;);\n    if (buzzerEnabled == false) buzzerEnabled = true;\n  }\n  if (commonInAlarm == false)  commonStatus = false;\n\n  commonInNormal = digitalRead(24);\n  if (commonInNormal == true &amp;&amp; commonStatus == false) {\n    tft.fillRect(10, 260, 110, 40, BLACK);\n    tft.setCursor(31, 265);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;COMMON&quot;);\n    tft.setCursor(38, 282);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;ALARM&quot;);\n  }\n  if (commonInNormal == true)  commonStatus = true;\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Common Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Leakage Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  leakageInAlarm = digitalRead(26);\n  if (leakageInAlarm == false &amp;&amp; leakageStatus == true) {\n    tft.fillRect(130, 260, 110, 40, RED);\n    tft.setCursor(144, 265);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;LEAKAGE&quot;);\n    tft.setCursor(157, 282);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;ALARM&quot;);\n    if (buzzerEnabled == false) buzzerEnabled = true;\n  }\n  if (leakageInAlarm == false)  leakageStatus = false;\n\n  leakageInNormal = digitalRead(26);\n  if (leakageInNormal == true &amp;&amp; leakageStatus == false) {\n    tft.fillRect(130, 260, 110, 40, BLACK);\n    tft.setCursor(144, 265);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;LEAKAGE&quot;);\n    tft.setCursor(157, 282);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;ALARM&quot;);\n  }\n  if (leakageInNormal == true)  leakageStatus = true;\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Leakage Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Ventilator Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  ventInAlarm = digitalRead(28);\n  if (ventInAlarm == false &amp;&amp; ventStatus == true) {\n    tft.fillRect(250, 260, 110, 40, RED);\n    tft.setCursor(284, 265);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;VENT&quot;);\n    tft.setCursor(277, 282);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;ALARM&quot;);\n    if (buzzerEnabled == false) buzzerEnabled = true;\n  }\n  if (ventInAlarm == false)  ventStatus = false;\n\n  ventInNormal = digitalRead(28);\n  if (ventInNormal == true &amp;&amp; ventStatus == false) {\n    tft.fillRect(250, 260, 110, 40, BLACK);\n    tft.setCursor(284, 265);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;VENT&quot;);\n    tft.setCursor(277, 282);\n    tft.setTextColor(WHITE);  tft.setTextSize(2);\n    tft.print(&quot;ALARM&quot;);\n  }\n  if (ventInNormal == true)  ventStatus = true;\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Ventilator Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level Low Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  folowInAlarm = digitalRead(30);\n  if (folowInAlarm == false &amp;&amp; folowStatus == true) {\n    tft.fillRect(370, 260, 45, 40, RED);\n    tft.setCursor(382, 262);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;FUEL&quot;);\n    tft.setCursor(379, 276);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;LEVEL&quot;);\n    tft.setCursor(384, 290);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;LOW&quot;);\n    if (buzzerEnabled == false) buzzerEnabled = true;\n  }\n  if (folowInAlarm == false)  folowStatus = false;\n\n  folowInNormal = digitalRead(30);\n  if (folowInNormal == true &amp;&amp; folowStatus == false) {\n    tft.fillRect(370, 260, 45, 40, BLACK);\n    tft.setCursor(382, 262);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;FUEL&quot;);\n    tft.setCursor(379, 276);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;LEVEL&quot;);\n    tft.setCursor(384, 290);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;LOW&quot;);\n  }\n  if (folowInNormal == true)  folowStatus = true;\n  \/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level Low Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level High Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  fohighInAlarm = digitalRead(32);\n  if (fohighInAlarm == false &amp;&amp; fohighStatus == true) {\n    tft.fillRect(425, 260, 45, 40, RED);\n    tft.setCursor(437, 262);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;FUEL&quot;);\n    tft.setCursor(433, 276);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;LEVEL&quot;);\n    tft.setCursor(436, 290);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;HIGH&quot;);\n    if (buzzerEnabled == false) buzzerEnabled = true;\n  }\n  if (fohighInAlarm == false)  fohighStatus = false;\n\n  fohighInNormal = digitalRead(32);\n  if (fohighInNormal == true &amp;&amp; fohighStatus == false) {\n    tft.fillRect(425, 260, 45, 40, BLACK);\n    tft.setCursor(437, 262);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;FUEL&quot;);\n    tft.setCursor(433, 276);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;LEVEL&quot;);\n    tft.setCursor(436, 290);\n    tft.setTextColor(WHITE);  tft.setTextSize(1);\n    tft.print(&quot;HIGH&quot;);\n  }\n  if (fohighInNormal == true)  fohighStatus = true;\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level High Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Buzzer Reset Button Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  resetButton = digitalRead(22);\n  if (buzzerEnabled == true) {\n    digitalWrite(34, HIGH);\n  }\n  if (buzzerEnabled == true &amp;&amp; resetButton == false) buzzerEnabled = false;\n  if (buzzerEnabled == false) {\n    digitalWrite(34, LOW);\n  }\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Buzzer Reset Button End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n}\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ALARM SYSTEM LOOP END\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/NODATA SCREEN BEGIN\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\nvoid nodataScreen() {\n\n  tft.fillScreen(BGRD);\n \/\/ fohighStatus == true;\n  \/\/Order 1\n  tft.fillRect(0, 0, 480, 10, RED);\n  tft.setCursor(61, 1);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;DIESEL GENERATOR ZEPPELIN CONTAINER GEN-SET 3512B DITA MONITOR&quot;);\n\n  \/\/Order 2\n  tft.fillRect(0, 310, 480, 10, RED);\n  tft.setCursor(182, 311);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;www.chebanlianka.com&quot;);\n\n  \/\/Order 3\n  tft.drawRect(13, 18, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(143, 18, 194, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(343, 18, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(13, 98, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(143, 98, 194, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(343, 98, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(13, 178, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(143, 178, 194, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(343, 178, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(8, 258, 114, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(128, 258, 114, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(248, 258, 114, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(368, 258, 49, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(423, 258, 49, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n\n  \/\/Order 5\n  tft.fillRect(15, 20, 120, 50, DBLUE);\n  tft.fillRect(145, 20, 190, 50, DBLUE);\n  tft.fillRect(345, 20, 120, 50, DBLUE);\n  tft.fillRect(15, 100, 120, 50, DBLUE);\n  tft.fillRect(145, 100, 190, 50, DBLUE);\n  tft.fillRect(345, 100, 120, 50, DBLUE);\n  tft.fillRect(15, 180, 120, 50, DBLUE);\n  tft.fillRect(145, 180, 190, 50, DBLUE);\n  tft.fillRect(345, 180, 120, 50, DBLUE);\n\n  \/\/Order 6\n  tft.fillRect(15, 70, 120, 20, DGREY);\n  tft.fillRect(145, 70, 190, 20, DGREY);\n  tft.fillRect(345, 70, 120, 20, DGREY);\n  tft.fillRect(15, 150, 120, 20, DGREY);\n  tft.fillRect(145, 150, 190, 20, DGREY);\n  tft.fillRect(345, 150, 120, 20, DGREY);\n  tft.fillRect(15, 230, 120, 20, DGREY);\n  tft.fillRect(145, 230, 190, 20, DGREY);\n  tft.fillRect(345, 230, 120, 20, DGREY);\n\n  \/\/Order 4\n  for (uint16_t a = 0; a &lt; 2; a++)\n  {\n    tft.drawFastHLine(15, 70 + a, 120, BLACK);\n    tft.drawFastHLine(145, 70 + a, 190, BLACK);\n    tft.drawFastHLine(345, 70 + a, 120, BLACK);\n    tft.drawFastHLine(15, 150 + a, 120, BLACK);\n    tft.drawFastHLine(145, 150 + a, 190, BLACK);\n    tft.drawFastHLine(345, 150 + a, 120, BLACK);\n    tft.drawFastHLine(15, 230 + a, 120, BLACK);\n    tft.drawFastHLine(145, 230 + a, 190, BLACK);\n    tft.drawFastHLine(345, 230 + a, 120, BLACK);\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/Sensors Name\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(112, 33);\n  tft.setTextColor(WHITE);  tft.setTextSize(4);\n  tft.print(&quot;C&quot;);\n  tft.setCursor(34, 74);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;COOLANT&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(260, 33);\n  tft.setTextColor(WHITE);  tft.setTextSize(4);\n  tft.print(&quot;rpm&quot;);\n  tft.setCursor(170, 74);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ENGINE SPEED&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(445, 23);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;k&quot;);\n  tft.setCursor(445, 40);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;P&quot;);\n  tft.setCursor(445, 52);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;a&quot;);\n  tft.setCursor(352, 74);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;OIL PRESS&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(115, 103);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;k&quot;);\n  tft.setCursor(115, 120);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;P&quot;);\n  tft.setCursor(115, 132);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;a&quot;);\n  tft.setCursor(24, 154);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;BOOST PR.&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/tft.setCursor(280, 112);\n  \/\/tft.setTextColor(WHITE);  tft.setTextSize(4);\n  \/\/tft.print(&quot;kW&quot;);\n  tft.setCursor(171, 154);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ENGINE POWER&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(445, 103);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;k&quot;);\n  tft.setCursor(445, 120);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;P&quot;);\n  tft.setCursor(445, 132);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;a&quot;);\n  tft.setCursor(346, 154);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;FUEL PRESS&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(112, 193);\n  tft.setTextColor(WHITE);  tft.setTextSize(4);\n  tft.print(&quot;V&quot;);\n  tft.setCursor(34, 234);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;BATTERY&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(173, 234);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ENGINE HOURS&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(445, 182);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;L&quot;);\n  tft.setCursor(445, 197);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;P&quot;);\n  tft.setCursor(445, 213);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;H&quot;);\n  tft.setCursor(353, 234);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;FUEL RATE&quot;);\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ZERO NUMBERS\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/Temp\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(57, 33);\n  tft.setTextColor(WHITE);\n  tft.setTextSize(4);\n  tft.print(0);\n  \/\/\/\/\/\/\/\/Engine Speed\/\/\/\/\/\/\/\/\/\n  tft.setTextColor(WHITE);\n  tft.setTextSize(4);\n  tft.setCursor(200, 33);\n  tft.println(0);\n  \/\/\/\/\/\/\/\/Oil Pressure\/\/\/\/\/\/\/\/\/\n  tft.setTextColor(WHITE);\n  tft.setCursor(385, 33);\n  tft.setTextSize(4);\n  tft.print(0);\n  \/\/\/\/\/\/Boost Pressure\/\/\/\/\/\/\/\/\/\n  tft.setTextColor(WHITE);\n  tft.setCursor(57, 112);\n  tft.setTextSize(4);\n  tft.print(0);\n  \/\/\/\/\/\/Engine Power\/\/\/\/\/\/\/\/\/\n  tft.setTextColor(WHITE);\n  tft.setTextSize(2);\n  tft.setCursor(152, 200);\n  tft.print(&quot;DG SWITCHED OFF&quot;);\n  \/\/\/\/\/\/\/Fuel Pressure\/\/\/\/\/\/\/\/\/\n  tft.setTextColor(WHITE);\n  tft.setCursor(385, 112);\n  tft.setTextSize(4);\n  tft.print(0);\n  \/\/\/\/\/\/\/\/\/\/Battery\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setTextColor(WHITE);\n  tft.setTextSize(4);\n  tft.setCursor(57, 193);\n  tft.println(0);\n  \/\/\/\/\/\/\/\/\/\/Fuel Rate\/\/\/\/\/\/\/\/\/\/\/\n  tft.setTextColor(WHITE);\n  tft.setTextSize(3);\n  tft.setCursor(390, 196);\n  tft.println(0);\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Common Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(10, 260, 110, 40, RED);\n  tft.setCursor(31, 265);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;COMMON&quot;);\n  tft.setCursor(38, 282);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ALARM&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Common Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Leakage Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(130, 260, 110, 40, RED);\n  tft.setCursor(144, 265);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;LEAKAGE&quot;);\n  tft.setCursor(157, 282);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ALARM&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Leakage Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Ventilator Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(250, 260, 110, 40, RED);\n  tft.setCursor(284, 265);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;VENT&quot;);\n  tft.setCursor(277, 282);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ALARM&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Ventilator Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level Low Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(370, 260, 45, 40, RED);\n  tft.setCursor(382, 262);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;FUEL&quot;);\n  tft.setCursor(379, 276);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;LEVEL&quot;);\n  tft.setCursor(384, 290);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;LOW&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level Low Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level High Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(425, 260, 45, 40, RED);\n  tft.setCursor(437, 262);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;FUEL&quot;);\n  tft.setCursor(433, 276);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;LEVEL&quot;);\n  tft.setCursor(436, 290);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;HIGH&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level High Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  while (!mcp2515.readMessage(&amp;canMsg) == MCP2515::ERROR_OK) {\n    tft.setCursor(160, 112);\n    tft.setTextSize(4);\n    tft.print(&quot;No Data&quot;);\n    tft.setTextColor(GREENYELLOW, DBLUE);\n    delay(100);\n    tft.setCursor(160, 112);\n    tft.setTextSize(4);\n    tft.print(&quot;No Data&quot;);\n    tft.setTextColor(MAGENTA, DBLUE);\n    delay(100);\n  }\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/NODATA SCREEN END\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ DATA SCREEN BEGIN \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nvoid dataScreen() {\n\n  tft.fillScreen(BGRD);\n\/\/  fohighStatus == true;\n\n  \/\/Order 1\n  tft.fillRect(0, 0, 480, 10, RED);\n  tft.setCursor(61, 1);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;DIESEL GENERATOR ZEPPELIN CONTAINER GEN-SET 3512B DITA MONITOR&quot;);\n  \/\/Order 2\n  tft.fillRect(0, 310, 480, 10, RED);\n  tft.setCursor(182, 311);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;www.chebanlianka.com&quot;);\n  \/\/Order 3\n  tft.drawRect(13, 18, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(143, 18, 194, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(343, 18, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(13, 98, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(143, 98, 194, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(343, 98, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(13, 178, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(143, 178, 194, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(343, 178, 124, 74, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(8, 258, 114, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(128, 258, 114, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(248, 258, 114, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(368, 258, 49, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  tft.drawRect(423, 258, 49, 44, BLACK); \/\/ x, y, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430, \u0446\u0432\u0435\u0442\n  \/\/Order 5\n  tft.fillRect(15, 20, 120, 50, DBLUE);\n  tft.fillRect(145, 20, 190, 50, DBLUE);\n  tft.fillRect(345, 20, 120, 50, DBLUE);\n  tft.fillRect(15, 100, 120, 50, DBLUE);\n  tft.fillRect(145, 100, 190, 50, DBLUE);\n  tft.fillRect(345, 100, 120, 50, DBLUE);\n  tft.fillRect(15, 180, 120, 50, DBLUE);\n  tft.fillRect(145, 180, 190, 50, DBLUE);\n  tft.fillRect(345, 180, 120, 50, DBLUE);\n  \/\/Order 6\n  tft.fillRect(15, 70, 120, 20, DGREY);\n  tft.fillRect(145, 70, 190, 20, DGREY);\n  tft.fillRect(345, 70, 120, 20, DGREY);\n  tft.fillRect(15, 150, 120, 20, DGREY);\n  tft.fillRect(145, 150, 190, 20, DGREY);\n  tft.fillRect(345, 150, 120, 20, DGREY);\n  tft.fillRect(15, 230, 120, 20, DGREY);\n  tft.fillRect(145, 230, 190, 20, DGREY);\n  tft.fillRect(345, 230, 120, 20, DGREY);\n  \/\/Order 4\n  for (uint16_t a = 0; a &lt; 2; a++) {\n    tft.drawFastHLine(15, 70 + a, 120, BLACK);\n    tft.drawFastHLine(145, 70 + a, 190, BLACK);\n    tft.drawFastHLine(345, 70 + a, 120, BLACK);\n    tft.drawFastHLine(15, 150 + a, 120, BLACK);\n    tft.drawFastHLine(145, 150 + a, 190, BLACK);\n    tft.drawFastHLine(345, 150 + a, 120, BLACK);\n    tft.drawFastHLine(15, 230 + a, 120, BLACK);\n    tft.drawFastHLine(145, 230 + a, 190, BLACK);\n    tft.drawFastHLine(345, 230 + a, 120, BLACK);\n  }\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/Sensors Name\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(95, 33);\n  tft.setTextColor(WHITE);  tft.setTextSize(4);\n  tft.print(&quot;C&quot;);\n  tft.setCursor(34, 74);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;COOLANT&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(260, 33);\n  tft.setTextColor(WHITE);  tft.setTextSize(4);\n  tft.print(&quot;rpm&quot;);\n  tft.setCursor(170, 74);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ENGINE SPEED&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(445, 23);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;k&quot;);\n  tft.setCursor(445, 40);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;P&quot;);\n  tft.setCursor(445, 52);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;a&quot;);\n  tft.setCursor(352, 74);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;OIL PRESS&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(115, 103);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;k&quot;);\n  tft.setCursor(115, 120);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;P&quot;);\n  tft.setCursor(115, 132);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;a&quot;);\n  tft.setCursor(24, 154);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;BOOST PR.&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(280, 112);\n  tft.setTextColor(WHITE);  tft.setTextSize(4);\n  tft.print(&quot;kW&quot;);\n  tft.setCursor(171, 154);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ENGINE POWER&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(445, 103);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;k&quot;);\n  tft.setCursor(445, 120);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;P&quot;);\n  tft.setCursor(445, 132);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;a&quot;);\n  tft.setCursor(346, 154);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;FUEL PRESS&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(113, 193);\n  tft.setTextColor(WHITE);  tft.setTextSize(4);\n  tft.print(&quot;V&quot;);\n\n  tft.setCursor(34, 234);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;BATTERY&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(173, 234);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ENGINE HOURS&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.setCursor(445, 182);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;L&quot;);\n  tft.setCursor(445, 197);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;P&quot;);\n  tft.setCursor(445, 213);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;H&quot;);\n\n  tft.setCursor(353, 234);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;FUEL RATE&quot;);\n  \n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ALARMSCREENS BEGIN\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Common Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(10, 260, 110, 40, BLACK);\n  tft.setCursor(31, 265);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;COMMON&quot;);\n  tft.setCursor(38, 282);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ALARM&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Common Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Leakage Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(130, 260, 110, 40, BLACK);\n  tft.setCursor(144, 265);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;LEAKAGE&quot;);\n  tft.setCursor(157, 282);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ALARM&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Leakage Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Ventilator Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(250, 260, 110, 40, BLACK);\n  tft.setCursor(284, 265);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;VENT&quot;);\n  tft.setCursor(277, 282);\n  tft.setTextColor(WHITE);  tft.setTextSize(2);\n  tft.print(&quot;ALARM&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Ventilator Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level Low Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(370, 260, 45, 40, BLACK);\n  tft.setCursor(382, 262);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;FUEL&quot;);\n  tft.setCursor(379, 276);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;LEVEL&quot;);\n  tft.setCursor(384, 290);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;LOW&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level Low Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level High Alarm Begin \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  tft.fillRect(425, 260, 45, 40, BLACK);\n  tft.setCursor(437, 262);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;FUEL&quot;);\n  tft.setCursor(433, 276);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;LEVEL&quot;);\n  tft.setCursor(436, 290);\n  tft.setTextColor(WHITE);  tft.setTextSize(1);\n  tft.print(&quot;HIGH&quot;);\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ F.O. Level High Alarm End \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ALARMSCREENS END\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n}\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ DATA SCREEN END \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/PROGRAM END\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  Caterpillar Can-Bus Monitor   \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/         Protocol: J1939        \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  Engine Model: GEN-SET 3512B   \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/    Oleksandr Cheban-Lianka     \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/      www.chebanlianka.com      \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/   oleksandr@chebanlianka.com   \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n<\/pre><\/div>\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\n<\/pre><\/div>\n\n\n<p class=\"has-text-align-center has-medium-font-size\"><strong>\u041a\u041e\u0414 \u041f\u0420\u0418\u0421\u0422\u0420\u041e\u042e \u041a\u041e\u041d\u0422\u0420\u041e\u041b\u042e \u0420\u0406\u0412\u041d\u042f \u041f\u0410\u041b\u0418\u0412\u0410 \u0412 \u0420\u0415\u0417\u0415\u0420\u0412\u0423\u0410\u0420\u0406<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nboolean buzzerEnabled = true;\n\nvoid setup() {\n   pinMode(A2, OUTPUT); \/\/ Buzzer Output\n   digitalWrite(A2, LOW);\n   pinMode(A3, OUTPUT); \/\/ Red Led - F.O. Level High\n   digitalWrite(A3, LOW);\n   pinMode(A4, OUTPUT); \/\/ Green Led - Power\n   digitalWrite(A4, HIGH);\n   pinMode(A5, OUTPUT); \/\/ Yellow Led F.O. Level Low\n   digitalWrite(A5, LOW);\n   pinMode(A0, INPUT_PULLUP); \/\/ F.O. Level Low Input\n   pinMode(A1, INPUT_PULLUP); \/\/ F.O. Level High Input\n   pinMode(11, INPUT_PULLUP); \/\/ Buzzer OFF Button\n}\n\nvoid loop() { \n      \n\/\/ Reading input status\n\n  boolean folow = digitalRead(A0);\n  boolean fohigh = digitalRead(A1);\n  boolean resetbutton = digitalRead(11);\n   \n  if (resetbutton &amp;&amp; folow &amp;&amp; fohigh &amp;&amp; !buzzerEnabled) {buzzerEnabled = !buzzerEnabled;}    \n        \n  if (!resetbutton &amp;&amp; (!folow or !fohigh)) {buzzerEnabled = !buzzerEnabled;}\n\n\/\/Alarm F.O. Level LOW\n        digitalRead(A0);\n      if (!folow) { \n        digitalWrite(A5, HIGH); \n      if (buzzerEnabled) {digitalWrite(A2, HIGH);} \/\/Buzzer Alarm F.O. Level LOW\n        delay (1000);\n        digitalWrite(A5, LOW);\n      if (buzzerEnabled) {digitalWrite(A2, LOW);} \/\/Buzzer Alarm F.O. Level LOW\n        delay (1000);\n      }\n       else {\n        digitalWrite(A5, LOW);\n        digitalWrite(A2, LOW); \n      }\n\n\/\/LED Alarm F.O. Level High\n        digitalRead(A1);\n       if (!fohigh) { \n        digitalWrite(A3, HIGH); \n       if (buzzerEnabled) {digitalWrite(A2, HIGH);} \/\/Buzzer Alarm F.O. Level High\n        delay (1000);\n        digitalWrite(A3, LOW);\n       if (buzzerEnabled) {digitalWrite(A2, LOW);} \/\/Buzzer Alarm F.O. Level High\n        delay (1000);\n      }\n       else {\n        digitalWrite(A3, LOW); \n        digitalWrite(A2, LOW);\n      }\n}\n\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>\u0414\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f, \u0434\u043e\u0440\u043e\u0433\u0456 \u0434\u0440\u0443\u0437\u0456! \u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 \u044f \u0445\u043e\u0442\u0456\u0432 \u0431\u0438 \u043f\u043e\u0434\u0456\u043b\u0438\u0442\u0438\u0441\u044f \u0437 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0457\u043c \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c &#8211; \u043c\u043e\u043d\u0456\u0442\u043e\u0440\u043e\u043c CAN J1939 \u0434\u043b\u044f \u0441\u0443\u0434\u043d\u043e\u0432\u043e\u0457 \u0441\u0438\u043b\u043e\u0432\u043e\u0457 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 \u0431\u0430\u0437\u0456 \u0434\u0432\u0438\u0433\u0443\u043d\u0430<\/p>\n","protected":false},"author":1,"featured_media":1032,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[180,179],"tags":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/chebanlianka.com\/wp-content\/uploads\/2022\/04\/CAT_CAN-Monitor_880x290.jpg","_links":{"self":[{"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/posts\/1225"}],"collection":[{"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/comments?post=1225"}],"version-history":[{"count":1,"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/posts\/1225\/revisions"}],"predecessor-version":[{"id":1231,"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/posts\/1225\/revisions\/1231"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/media\/1032"}],"wp:attachment":[{"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/media?parent=1225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/categories?post=1225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chebanlianka.com\/uk\/wp-json\/wp\/v2\/tags?post=1225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}