{"id":462334,"date":"2025-06-07T15:00:15","date_gmt":"2025-06-07T15:00:15","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=462334"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=462334","title":{"rendered":"<span>DIY \u043f\u0440\u043e\u0435\u043a\u0442: c\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0430 LCD \u0434\u0438\u0441\u043f\u043b\u0435\u0435 GC9A01 (\u0447\u0430\u0441\u0442\u044c 1)<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u041c\u043e\u0439 \u043d\u0438\u043a\u043d\u0435\u0439\u043c Arduinum628, \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c DIY \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430 Python \u0438 C++. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u043e \u0432\u044b\u0432\u043e\u0434\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u041f\u041a \u043d\u0430 \u043a\u0440\u0443\u0433\u043b\u044b\u0439 LCD \u0434\u0438\u0441\u043f\u043b\u0435\u0439 GC9A01.<\/p>\n<p>\u0421\u0430\u043c\u0430 \u0438\u0434\u0435\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0418\u0432\u0430\u043d\u043e\u043c. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0435\u043c\u0443, \u0447\u0442\u043e \u0437\u0430\u043a\u0430\u0437\u0430\u043b \u043f\u0430\u0440\u0443 LCD \u0434\u0438\u0441\u043f\u043b\u0435\u0439 GC9A01 \u0441 Ali Express \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 DIY \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u0418\u0432\u0430\u043d \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0435\u043c\u0443-\u0431\u044b \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0441\u044f \u0434\u0435\u0432\u0430\u0439\u0441 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u041f\u041a. \u042f \u043f\u043e\u0434\u0443\u043c\u0430\u043b &#8212; \u043f\u043e\u0447\u0435\u043c\u0443-\u0431\u044b \u043d\u0435 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435?!<\/p>\n<p>\u0421\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u044f \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0434\u043b\u044f \u043d\u0443\u0436\u0434 \u0434\u0440\u0443\u0433\u0430, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432 \u0446\u0435\u043b\u044f\u0445 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u0442\u0438\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c. \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0435 \u0438 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441 \u041f\u041a. \u041f\u043e \u043c\u043e\u0435\u043c\u0443 \u0441\u043e\u0432\u0435\u0442\u0443 \u043e\u043d \u043a\u0443\u043f\u0438\u043b \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 esp32 \u0441 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0430\u043c. \u042f \u0436\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0435\u0451 \u0437\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439. \u042d\u0442\u043e \u0447\u0435\u043c-\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0441\u043f\u0438\u0434\u043e\u043c\u0435\u0442\u0440 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f =)<\/p>\n<hr\/>\n<h2>\u0418\u0434\u0435\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h2>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439. \u041a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c?<\/p>\n<ul>\n<li>\n<p><strong>CPU Load<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>CPU Temp<\/strong>\u00a0\u2014 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>RAM Usage<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p><strong>GPU Load<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p><strong>GPU Memory Used<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p><strong>GPU Temp<\/strong>\u00a0\u2014 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p><strong>Disk Usage<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0438\u0441\u043a\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0428\u043a\u0430\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b: \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0443 \u043d\u0430\u0447\u0430\u043b\u0430 \u0448\u043a\u0430\u043b\u044b \u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0446\u0435.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0448\u043a\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0446\u0432\u0435\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u043f\u0440\u0438\u043c\u0435\u0440):<\/p>\n<ul>\n<li>\n<p><strong>\u0437\u0435\u043b\u0451\u043d\u044b\u0439<\/strong>\u00a0\u2014 \u043d\u0438\u0437\u043a\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 (0 &#8212; 50%);<\/p>\n<\/li>\n<li>\n<p><strong>\u0436\u0451\u043b\u0442\u044b\u0439<\/strong>\u00a0\u2014 \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 (51 &#8212; 80%);<\/p>\n<\/li>\n<li>\n<p><strong>\u043a\u0440\u0430\u0441\u043d\u044b\u0439<\/strong>\u00a0\u2014 \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 (81 &#8212; 100%).<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0438\u0431\u043e\u0440\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c. \u041e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043a Arduino Uno, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0430 \u0441 \u041f\u041a \u0447\u0435\u0440\u0435\u0437 USB.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e USB \u0438 \u0438\u0445 \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439. \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 COM-\u043f\u043e\u0440\u0442. \u0414\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c).<\/p>\n<p>\u042f \u0445\u043e\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 \u0442\u0440\u0451\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445: MacOS, Linux \u0438 Windows. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<code>psutil<\/code>\u00a0\u0438 \u0434\u0440\u0443\u0433\u0438\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 Python. \u041f\u043e\u043a\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f Linux, \u043d\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<p>\u041a\u043e\u0434 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c \u0438 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.<\/p>\n<hr\/>\n<h2>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/h2>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>LSD \u0434\u0438\u0441\u043f\u043b\u0435\u0439 240\u0445240 \u0441 \u0447\u0438\u043f\u043e\u043c GC9A01 &#8212;\u00a0<a href=\"https:\/\/aliexpress.ru\/item\/1005004911604497.html?sku_id=12000032757861044&amp;srcSns=sns_More&amp;businessType=ProductDetail&amp;spreadType=socialShare&amp;tt=MG&amp;utm_medium=sharing\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0430\u00a0<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b \u043d\u0430 150 \u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0430 \u0434\u044e\u043f\u043e\u043d\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>Arduino Uno (\u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0437\u0430\u043c\u0435\u043d\u044e \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0443\u044e Arduino Nano);<\/p>\n<\/li>\n<li>\n<p>\u041c\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u0430 (\u0431\u0435\u0437 \u043f\u0430\u0439\u043a\u0438);<\/p>\n<\/li>\n<li>\n<p>\u041f\u043b\u0430\u0441\u0442\u0438\u043a.<\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<h2>\u0421\u0431\u043e\u0440\u043a\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/h2>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0437\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439. \u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f, \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u043e\u043c. \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u043b \u043f\u0430\u0440\u0443 \u0443\u0433\u043e\u043b\u043a\u043e\u0432 \u043e\u0442 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0448\u043a\u0430\u0444\u0430 \u0438 \u043f\u043b\u0430\u0441\u0442\u0438\u043a \u043e\u0442 \u043a\u0440\u044b\u0448\u043a\u0438 \u0441 \u0432\u043b\u0430\u0436\u043d\u044b\u043c\u0438 \u0441\u0430\u043b\u0444\u0435\u0442\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041f\u0440\u0438\u043a\u043b\u0435\u0438\u043b \u043c\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b \u043d\u0430 \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u043a\u043e\u0442\u0447, \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b \u0438\u0445 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c \u0432\u043c\u0435\u0441\u0442\u0435.<br \/>\u0418\u0437 \u043f\u043b\u0430\u0441\u0442\u0438\u043a\u0430 \u0432\u044b\u0440\u0435\u0437\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0434\u043b\u044f \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u043f\u0440\u043e\u0441\u0432\u0435\u0440\u043b\u0438\u043b \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u044f \u043f\u043e\u0434 \u0435\u0433\u043e \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/104\/3b8\/8f1\/1043b88f18815dec6326c402dbfec273.jpg\" alt=\"Construction_1.jpg\" title=\"\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f_1\" width=\"900\" height=\"632\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/104\/3b8\/8f1\/1043b88f18815dec6326c402dbfec273.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/104\/3b8\/8f1\/1043b88f18815dec6326c402dbfec273.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f_1<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u043a\u0440\u0430\u043d \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043b \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0432\u0438\u043d\u0442\u0430\u043c\u0438 \u043a \u043f\u043b\u0430\u0441\u0442\u0438\u043a\u043e\u0432\u043e\u043c\u0443 \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044e. \u041f\u043b\u0430\u0441\u0442\u0438\u043d\u0443 \u0441\u043e\u0433\u043d\u0443\u043b \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0432\u0432\u0435\u0440\u0445, \u043a\u0430\u043a \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0441\u043f\u0438\u0434\u043e\u043c\u0435\u0442\u0440\u0435.<\/p>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0443\u043a\u043e\u0440\u043e\u0442\u0438\u0442\u044c \u0438 \u043f\u0440\u0438\u043f\u0430\u044f\u0442\u044c Dupont-\u043f\u0430\u043f\u0430 \u0432\u043c\u0435\u0441\u0442\u043e Dupont-\u043c\u0430\u043c\u0430.<br \/>\u0414\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u043e\u043d\u043a\u0443\u044e \u0442\u0435\u0440\u043c\u043e\u0443\u0441\u0430\u0434\u043a\u0443. \u0421\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0443\u043b\u043e\u0436\u0438\u043b, \u043f\u0440\u0438\u0436\u0430\u043b \u0438\u0445 \u0445\u043e\u043c\u0443\u0442\u043e\u043c, \u0430 \u0440\u0430\u0437\u044a\u0451\u043c\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0432 \u043c\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/088\/b3d\/5b7\/088b3d5b778acbe6c6570260e261632b.jpg\" alt=\"Construction_2.jpg\" title=\"\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f 2\" width=\"900\" height=\"692\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/088\/b3d\/5b7\/088b3d5b778acbe6c6570260e261632b.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/088\/b3d\/5b7\/088b3d5b778acbe6c6570260e261632b.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f 2<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u043c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0437\u0436\u0435. \u042f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0443\u0434\u0430 Arduino Nano, \u043d\u043e \u043f\u043e\u043a\u0430 \u0435\u0451 \u043d\u0435\u0442 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Arduino Uno, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0440\u044f\u0434\u043e\u043c.<\/p>\n<hr\/>\n<h2>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a Arduino<\/h2>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/876\/171\/8cc\/8761718cc6911e3f7c378e176aa5e723.jpg\" alt=\"pins.jpg\" title=\"\u041f\u0438\u043d\u044b \u0434\u0438\u0441\u043f\u043b\u0435\u044f GC9A01\" width=\"900\" height=\"1059\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/876\/171\/8cc\/8761718cc6911e3f7c378e176aa5e723.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/876\/171\/8cc\/8761718cc6911e3f7c378e176aa5e723.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0438\u043d\u044b \u0434\u0438\u0441\u043f\u043b\u0435\u044f GC9A01<\/figcaption><\/div>\n<\/figure>\n<p><strong>\u041f\u0438\u043d\u044b \u0434\u0438\u0441\u043f\u043b\u0435\u044f:<\/strong><\/p>\n<ul>\n<li>\n<p>VIN \u2014 +;<\/p>\n<\/li>\n<li>\n<p>GND \u2014 \u0437\u0435\u043c\u043b\u044f;<\/p>\n<\/li>\n<li>\n<p>CS &#8212; Chip Select \u2014 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>DC &#8212; Data\/Command \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u00a0<strong>\u043a\u043e\u043c\u0430\u043d\u0434\u0430<\/strong>\u00a0(\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f) \u0438\u043b\u0438\u00a0<strong>\u0434\u0430\u043d\u043d\u044b\u0435<\/strong>\u00a0(\u0433\u0440\u0430\u0444\u0438\u043a\u0430, \u0442\u0435\u043a\u0441\u0442);<\/p>\n<\/li>\n<li>\n<p>RES &#8212; Reset \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u0431\u0440\u043e\u0441\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e;<\/p>\n<\/li>\n<li>\n<p>SDA &#8212; MOSI (Master Out Slave In) \u2014 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>SCL &#8212; SCK (Serial Clock) \u2014 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b SPI, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>BLK &#8212; \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430;<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 GC9A01 -&gt; Arduino<\/strong>:<\/p>\n<ul>\n<li>\n<p>VIN -&gt; 3.3V \/ 5V (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044f)<\/p>\n<\/li>\n<li>\n<p>GND -&gt; GND<\/p>\n<\/li>\n<li>\n<p>CS -&gt; resistor 150om\/200om -&gt; D10<\/p>\n<\/li>\n<li>\n<p>DC -&gt; resistor 150om\/200om -&gt; D9<\/p>\n<\/li>\n<li>\n<p>RES -&gt; D8 (\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d)<\/p>\n<\/li>\n<li>\n<p>SDA -&gt; resistor 150om\/200om -&gt; D11 (MOSI)<\/p>\n<\/li>\n<li>\n<p>SCL -&gt; resistor 150om\/200om -&gt; D13 (SCK)<\/p>\n<\/li>\n<li>\n<p>BLK -&gt; 3.3V \/ PWM (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, D6) (\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d)<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0443 \u043c\u0435\u043d\u044f \u0437\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439:<\/strong><\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f86\/424\/d5f\/f86424d5ffe11bdd217a1ee8a990cedd.jpg\" alt=\"arduino_to_display.jpg\" title=\"\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a arduino\" width=\"900\" height=\"633\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f86\/424\/d5f\/f86424d5ffe11bdd217a1ee8a990cedd.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f86\/424\/d5f\/f86424d5ffe11bdd217a1ee8a990cedd.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a arduino<\/figcaption><\/div>\n<\/figure>\n<hr\/>\n<h2>\u041a\u043e\u0434 \u0434\u043b\u044f Arduino<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u043a\u043e\u0434 \u0434\u043b\u044f Arduino, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 Python-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0447\u0435\u0440\u0435\u0437 Serial \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 LCD-\u0434\u0438\u0441\u043f\u043b\u0435\u0439 GC9A01A.<\/p>\n<p><code>spec_pc_to_lcd.ino<\/code>:<\/p>\n<pre><code class=\"cpp\">#include &lt;SPI.h&gt; #include &lt;Adafruit_GC9A01A.h&gt;  \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0438\u043d\u043e\u0432: #define TFT_CS  10   \/\/ Chip Select #define TFT_DC  9    \/\/ Data\/Command #define TFT_RES 8    \/\/ Reset  \/\/ \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0438\u0441\u043f\u043b\u0435\u044f: Adafruit_GC9A01A tft(TFT_CS, TFT_DC, TFT_RES);  const int MAX_NUMBERS = 7;      \/\/ \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0447\u0438\u0441\u0435\u043b \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 int numbers[MAX_NUMBERS];        \/\/ \u041c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b int numberCount = 0;             \/\/ \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u0435\u043b \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e  String inputString = \"\";         \/\/ \u0411\u0443\u0444\u0435\u0440 \u0432\u0432\u043e\u0434\u0430 bool inputComplete = false;  void setup() {   Serial.begin(9600);  \/\/ \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445   tft.begin();  \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f   tft.fillScreen(GC9A01A_BLACK);  \/\/ \u0417\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u044d\u043a\u0440\u0430\u043d \u0447\u0451\u0440\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c   tft.setTextSize(2); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430 }  void loop() {   while (Serial.available()) {     \/\/ \u0427\u0438\u0442\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Serial     char inChar = (char)Serial.read();          if (inChar == '\\n') {       \/\/ \u041a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438       inputComplete = true;       break;     } else {       inputString += inChar;     }   }    \/\/ \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e   if (inputComplete) {     parseInputString(); \/\/ \u0420\u0430\u0437\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0447\u0438\u0441\u043b\u0430        setCpuLd(numbers[0]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 CPU     setCpuTp(numbers[1]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b CPU     setRumUs(numbers[2]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u041e\u0417\u0423     setGpuLd(numbers[3]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 GPU     setGpuMe(numbers[4]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 GPU     setGpuTp(numbers[5]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b GPU     setDscUs(numbers[6]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0438\u0441\u043a\u0430      \/\/ \u0421\u0431\u0440\u043e\u0441 \u0431\u0443\u0444\u0435\u0440\u0430     inputString = \"\";     inputComplete = false;   } }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (CPU, RAM, GPU, \u0434\u0438\u0441\u043a) uint16_t getRateColorText(int lvl) {   uint16_t color;    if (lvl &lt;= 50) {     color = GC9A01A_GREEN;  \/\/ \u041d\u0438\u0437\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 - \u0437\u0435\u043b\u0451\u043d\u044b\u0439   } else if (lvl &lt;= 80) {     color = GC9A01A_YELLOW; \/\/ \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 - \u0436\u0451\u043b\u0442\u044b\u0439   } else {     color = GC9A01A_RED;    \/\/ \u0412\u044b\u0441\u043e\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 - \u043a\u0440\u0430\u0441\u043d\u044b\u0439   }    return color; }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b CPU uint16_t getCpuTpColorText(int lvl) {   uint16_t color;    if (lvl &lt;= 65) {     color = GC9A01A_GREEN;  \/\/ \u041d\u0438\u0437\u043a\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u0437\u0435\u043b\u0451\u043d\u044b\u0439   } else if (lvl &lt;= 85) {     color = GC9A01A_YELLOW; \/\/ \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u0436\u0451\u043b\u0442\u044b\u0439   } else {     color = GC9A01A_RED;    \/\/ \u0412\u044b\u0441\u043e\u043a\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u043a\u0440\u0430\u0441\u043d\u044b\u0439   }    return color; }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b GPU uint16_t getGpuTpColorText(int lvl) {   uint16_t color;    if (lvl &lt;= 70) {     color = GC9A01A_GREEN;  \/\/ \u041d\u0438\u0437\u043a\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u0437\u0435\u043b\u0451\u043d\u044b\u0439   } else if (lvl &lt;= 85) {     color = GC9A01A_YELLOW; \/\/ \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u0436\u0451\u043b\u0442\u044b\u0439   } else {     color = GC9A01A_RED;    \/\/ \u0412\u044b\u0441\u043e\u043a\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u043a\u0440\u0430\u0441\u043d\u044b\u0439   }    return color; }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 void setCpuLd(int lvl) {   tft.setCursor(50, 50);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"CPU ld: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 void setCpuTp(int lvl) {   tft.setCursor(50, 75);   tft.setTextColor(getCpuTpColorText(lvl));   tft.println(\"CPU tp: \" + String(lvl) + \"C\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 void setRumUs(int lvl) {   tft.setCursor(50, 95);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"RAM us: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b void setGpuLd(int lvl) {   tft.setCursor(50, 115);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"GPU ld: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b void setGpuMe(int lvl) {   tft.setCursor(50, 135);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"GPU me: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b void setGpuTp(int lvl) {   tft.setCursor(50, 155);   tft.setTextColor(getGpuTpColorText(lvl));   tft.println(\"GPU tp: \" + String(lvl) + \"C\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0436\u0451\u0441\u0442\u043a\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430 void setDscUs(int lvl) {   tft.setCursor(50, 175);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"DSC us: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0430\u0440\u0441\u0438\u0442 \u0447\u0438\u0441\u043b\u0430 \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043b\u0430\u0434\u044f \u0438\u0445 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 void parseInputString() {   numberCount = 0;    char inputBuffer[100];   inputString.toCharArray(inputBuffer, 100);    char* token = strtok(inputBuffer, \" \");    while (token != NULL &amp;&amp; numberCount &lt; MAX_NUMBERS) {     numbers[numberCount++] = atoi(token); \/\/ \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0447\u0438\u0441\u043b\u043e     token = strtok(NULL, \" \");   } } <\/code><\/pre>\n<p><strong>\u0418\u043c\u043f\u043e\u0440\u0442\u044b<\/strong>:<\/p>\n<ul>\n<li>\n<p><code>#include &lt;SPI.h&gt;<\/code>\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 SPI-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p><code>#include &lt;Adafruit_GC9A01A.h&gt;<\/code>\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c GC9A01A.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0438\u043d\u043e\u0432 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f<\/strong>:<\/p>\n<ul>\n<li>\n<p><code>#define TFT_CS 10<\/code>\u00a0\u2014 \u043f\u0438\u043d \u0434\u043b\u044f Chip Select;<\/p>\n<\/li>\n<li>\n<p><code>#define TFT_DC 9<\/code>\u00a0\u2014 \u043f\u0438\u043d \u0434\u043b\u044f Data\/Command;<\/p>\n<\/li>\n<li>\n<p><code>#define TFT_RES 8<\/code>\u00a0\u2014 \u043f\u0438\u043d \u0434\u043b\u044f Reset;<\/p>\n<\/li>\n<li>\n<p><code>Adafruit_GC9A01A tft(TFT_CS, TFT_DC, TFT_RES);<\/code>\u00a0\u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/strong>:<\/p>\n<ul>\n<li>\n<p><code>const int MAX_NUMBERS = 7;<\/code>\u00a0\u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0438\u0441\u0435\u043b \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435;<\/p>\n<\/li>\n<li>\n<p><code>int numbers[MAX_NUMBERS];<\/code>\u00a0\u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b;<\/p>\n<\/li>\n<li>\n<p><code>int numberCount = 0;<\/code>\u00a0\u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u0447\u0438\u0441\u0435\u043b;<\/p>\n<\/li>\n<li>\n<p><code>String inputString = \"\";<\/code>\u00a0\u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p><code>bool inputComplete = false;<\/code>\u00a0\u2014 \u0444\u043b\u0430\u0433 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u0432\u043e\u0434\u0430.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>setup()<\/strong><\/code><strong>\u00a0\u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430<\/strong>:<\/p>\n<ul>\n<li>\n<p><code>Serial.begin(9600);<\/code>\u00a0\u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p><code>tft.begin();<\/code>\u00a0\u2014 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f;<\/p>\n<\/li>\n<li>\n<p><code>tft.fillScreen(GC9A01A_BLACK);<\/code>\u00a0\u2014 \u0437\u0430\u043b\u0438\u0432\u043a\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 \u0447\u0451\u0440\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p><code>tft.setTextSize(2);<\/code>\u00a0\u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>loop()<\/strong><\/code><strong>\u00a0\u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0427\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u00a0<code>Serial<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 (<code>'\\n'<\/code>);<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0437\u043e\u0432\u00a0<code>parseInputString()<\/code>\u00a0\u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0431\u0443\u0444\u0435\u0440\u0430\u00a0<code>inputString<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>getRateColorText(int lvl)<\/strong><\/code><strong>\u00a0\u2014 \u0446\u0432\u0435\u0442 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 CPU, RAM, GPU, \u0434\u0438\u0441\u043a\u0430<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0417\u0435\u043b\u0451\u043d\u044b\u0439 (<code>GC9A01A_GREEN<\/code>) \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0434\u043e 50%;<\/p>\n<\/li>\n<li>\n<p>\u0416\u0451\u043b\u0442\u044b\u0439 (<code>GC9A01A_YELLOW<\/code>) \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0434\u043e 80%;<\/p>\n<\/li>\n<li>\n<p>\u041a\u0440\u0430\u0441\u043d\u044b\u0439 (<code>GC9A01A_RED<\/code>) \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0432\u044b\u0448\u0435 80%.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>getCpuTpColorText(int lvl)<\/strong><\/code><strong>\u00a0\u2014 \u0446\u0432\u0435\u0442 \u0434\u043b\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b CPU<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0417\u0435\u043b\u0451\u043d\u044b\u0439 (<code>GC9A01A_GREEN<\/code>) \u043f\u0440\u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0434\u043e 65\u00b0C;<\/p>\n<\/li>\n<li>\n<p>\u0416\u0451\u043b\u0442\u044b\u0439 (<code>GC9A01A_YELLOW<\/code>) \u043f\u0440\u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0434\u043e 85\u00b0C;<\/p>\n<\/li>\n<li>\n<p>\u041a\u0440\u0430\u0441\u043d\u044b\u0439 (<code>GC9A01A_RED<\/code>) \u043f\u0440\u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0432\u044b\u0448\u0435 85\u00b0C.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>getGpuTpColorText(int lvl)<\/strong><\/code><strong>\u00a0\u2014 \u0446\u0432\u0435\u0442 \u0434\u043b\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b GPU<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0417\u0435\u043b\u0451\u043d\u044b\u0439 (<code>GC9A01A_GREEN<\/code>) \u043f\u0440\u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0434\u043e 70\u00b0C;<\/p>\n<\/li>\n<li>\n<p>\u0416\u0451\u043b\u0442\u044b\u0439 (<code>GC9A01A_YELLOW<\/code>) \u043f\u0440\u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0434\u043e 85\u00b0C;<\/p>\n<\/li>\n<li>\n<p>\u041a\u0440\u0430\u0441\u043d\u044b\u0439 (<code>GC9A01A_RED<\/code>) \u043f\u0440\u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0432\u044b\u0448\u0435 85\u00b0C.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>setCpuLd(int lvl)<\/strong><\/code><strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 CPU<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430\u00a0<code>(50, 50)<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u00a0<code>CPU ld: X%<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>setCpuTp(int lvl)<\/strong><\/code><strong>\u00a0\u2014 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 CPU<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430\u00a0<code>(50, 75)<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u00a0<code>CPU tp: X\u00b0C<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>setRumUs(int lvl)<\/strong><\/code><strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430\u00a0<code>(50, 95)<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u00a0<code>RAM us: X%<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>setGpuLd(int lvl)<\/strong><\/code><strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 GPU<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430\u00a0<code>(50, 115)<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u00a0<code>GPU ld: X%<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>setGpuMe(int lvl)<\/strong><\/code><strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 GPU<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430\u00a0<code>(50, 135)<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u00a0<code>GPU me: X%<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>setGpuTp(int lvl)<\/strong><\/code><strong>\u00a0\u2014 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 GPU<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430\u00a0<code>(50, 155)<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u00a0<code>GPU tp: X\u00b0C<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><code>setDscUs(int lvl)<\/code>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0438\u0441\u043a\u0430:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430\u00a0<code>(50, 175)<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u00a0<code>DSC us: X%<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><code><strong>parseInputString()<\/strong><\/code><strong>\u00a0\u2014 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443\u00a0<code>inputString<\/code>\u00a0\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u00a0<code>numbers<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u00a0<code>strtok()<\/code>\u00a0\u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c;<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u00a0<code>int<\/code>\u00a0\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432\u00a0<code>numbers<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u0435\u0433\u043e \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e \u043d\u0430 Arduino. \u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0433\u043e\u0442\u043e\u0432\u0430, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c Python-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 Arduino.<\/p>\n<hr\/>\n<h2>\u041a\u043e\u0434 \u0434\u043b\u044f Python<\/h2>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 Python \u043a\u043e\u0434\u0430 \u044d\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a Arduino \u043f\u043e Serial \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 PC \u043d\u0430 \u043d\u0435\u0451. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 PC \u044f \u0431\u0443\u0434\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041d\u0430\u0447\u043d\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<br \/>\u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u0442 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c \u0435\u0451 \u0447\u0442\u0435\u043d\u0438\u0435\u043c\u00a0<code>.env<\/code>,\u00a0<code>pydantic_settings<\/code>\u00a0\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u042f \u0441\u043e\u0437\u0434\u0430\u043c \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0434\u044e \u0432 \u043d\u0451\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<\/p>\n<p><a href=\"http:\/\/config.py\" rel=\"noopener noreferrer nofollow\"><code>config.py<\/code><\/a>:<\/p>\n<pre><code class=\"python\">PORT = \"\/dev\/ttyACM1\" # \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0439 SPEED = 9600 TIMEOUT = 1 <\/code><\/pre>\n<p><strong>\u0420\u0430\u0437\u0431\u043e\u0440 \u043a\u043e\u0434\u0430<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p><code>PORT = \"\/dev\/ttyACM1\"<\/code>\u00a0\u2014 \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u043e\u0440\u0442, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u041d\u0443\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u0435\u0441\u043b\u0438 \u043e\u043d \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f;<\/p>\n<\/li>\n<li>\n<p><code>SPEED = 9600<\/code>\u00a0\u2014 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0431\u043e\u0434\u0430\u0445 (\u0431\u0438\u0442\u0430\u0445 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443);<\/p>\n<\/li>\n<li>\n<p><code>TIMEOUT = 1<\/code>\u00a0\u2014 \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u0430\u0439\u043c-\u0430\u0443\u0442 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u0434\u043b\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 Arduino \u043f\u043e Serial.<\/p>\n<p><code>get_spec_pc.py<\/code>:<\/p>\n<pre><code class=\"python\"># \u0418\u043c\u043f\u043e\u0440\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a from psutil import cpu_percent, sensors_temperatures, virtual_memory, disk_usage # \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u043c\u0438 Nvidia from pynvml import (     nvmlInit,      nvmlDeviceGetHandleByIndex,      nvmlDeviceGetUtilizationRates,      nvmlDeviceGetTemperature,     NVML_TEMPERATURE_GPU,     nvmlShutdown ) from serial import Serial from time import sleep   def send_spec_str_serial(port: str, speed: int, timeout: int) -&gt; None:     \"\"\"\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u041f\u041a \u0432 Serial\"\"\"      while True:         with Serial(port=port, baudrate=speed, timeout=timeout) as ser:             sleep(1)  # \u0414\u0430\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Arduino              # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 CPU \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445             cpu_load = int(cpu_percent(interval=1))  # \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430 1 \u0441\u0435\u043a\u0443\u043d\u0434\u0443             # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 CPU             cpu_temp = int(sensors_temperatures().get(\"coretemp\")[0].current)             # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u041e\u0417\u0423 \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445             ram_usage = int(virtual_memory().percent)             # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0438\u0441\u043a\u0430 (\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 Linux)             dsk_usage = int(disk_usage(\"\/\").percent)              # \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u043e\u0439 Nvidia             nvmlInit()             handle = nvmlDeviceGetHandleByIndex(0)  # 0 \u2014 \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430             gpu_util = nvmlDeviceGetUtilizationRates(handle)             gpu_temp = nvmlDeviceGetTemperature(handle, NVML_TEMPERATURE_GPU)              # \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445             data_str = f\"{cpu_load} {cpu_temp} {ram_usage} {gpu_util.gpu} {gpu_util.memory} {gpu_temp} {dsk_usage}\\n\"             ser.write(data_str.encode(\"ascii\"))              # \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (\u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438)             # print(f\"CPU Load: {cpu_load}%\")             # print(f\"CPU Temp: {cpu_temp}C\")             # print(f\"RAM Usage: {ram_usage}%\")             # print(f\"GPU Load: {gpu_util.gpu}%\")             # print(f\"GPU Memory Used: {gpu_util.memory}%\")             # print(f\"GPU Temp: {gpu_temp}C\")             # print(f\"Disk Usage: {dsk_usage}%\")             # print(data_str)              sleep(4)             nvmlShutdown()   if __name__ == \"__main__\":     from config import PORT, SPEED, TIMEOUT      send_spec_str_serial(port=PORT, speed=SPEED, timeout=TIMEOUT)  <\/code><\/pre>\n<p><strong>\u0418\u043c\u043f\u043e\u0440\u0442\u044b<\/strong>:<\/p>\n<ul>\n<li>\n<p><code>from psutil import cpu_percent, sensors_temperatures, virtual_memory, disk_usage<\/code>\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0434\u0438\u0441\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p><code>from pynvml import nvmlInit, nvmlDeviceGetHandleByIndex, nvmlDeviceGetUtilizationRates, nvmlDeviceGetTemperature, NVML_TEMPERATURE_GPU, nvmlShutdown<\/code>\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u043c\u0438 Nvidia;<\/p>\n<\/li>\n<li>\n<p><code>from serial import Serial<\/code>\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0440\u0442\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p><code>from time import sleep<\/code>\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445<\/strong><\/p>\n<ul>\n<li>\n<p><code>port: str<\/code>\u00a0\u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p><code>speed: int<\/code>\u00a0\u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p><code>timeout: int<\/code>\u00a0\u2014 \u0442\u0430\u0439\u043c-\u0430\u0443\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0424\u0443\u043d\u043a\u0446\u0438\u044f<\/strong>\u00a0<code>send_spec_str_serial(port: str, speed: int, timeout: int) -&gt; None<\/code>:<\/p>\n<ul>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0447\u0435\u0440\u0435\u0437\u00a0<code>Serial<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>sleep(1)<\/code>\u00a0\u2014 \u0434\u0430\u0451\u0442 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Arduino \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>cpu_percent(interval=1)<\/code>, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430 \u043e\u0434\u043d\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0443;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0447\u0435\u0440\u0435\u0437\u00a0<code>sensors_temperatures().get(\"coretemp\")[0].current<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0447\u0435\u0440\u0435\u0437\u00a0<code>virtual_memory().percent<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0438\u0441\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>disk_usage(\"\/\")<\/code>, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 Linux;<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u043e\u0439 Nvidia \u0447\u0435\u0440\u0435\u0437\u00a0<code>nvmlInit()<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>nvmlDeviceGetUtilizationRates(handle)<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0447\u0435\u0440\u0435\u0437\u00a0<code>nvmlDeviceGetTemperature(handle, NVML_TEMPERATURE_GPU)<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 CPU, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 RAM, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 GPU, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0438\u0441\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0440\u043e\u043a\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437\u00a0<code>ser.write(data_str.encode(\"ascii\"))<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>sleep(4)<\/code>\u00a0\u2014 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u043e\u0439 Nvidia \u0447\u0435\u0440\u0435\u0437\u00a0<code>nvmlShutdown()<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0411\u043b\u043e\u043a<\/strong>\u00a0<code>if __name__ == \"__main__\":<\/code>:<\/p>\n<ul>\n<li>\n<p>\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u00a0<code>PORT<\/code>,\u00a0<code>SPEED<\/code>\u00a0\u0438\u00a0<code>TIMEOUT<\/code>\u00a0\u0438\u0437 \u0444\u0430\u0439\u043b\u0430\u00a0<a href=\"http:\/\/config.py\" rel=\"noopener noreferrer nofollow\"><code>config.py<\/code><\/a>;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0<code>send_spec_str_serial(port=PORT, speed=SPEED, timeout=TIMEOUT)<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430 \u043f\u0440\u043e\u0441\u0442\u044f\u0442 \u043c\u0435\u043d\u044f \u0433\u0443\u0440\u0443 Python, \u044f \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435. \u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445. \u0421\u0435\u0439\u0447\u0430\u0441 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u043d\u0435\u043c\u0430\u043b\u043e \u043d\u0430\u043c\u0443\u0447\u0430\u043b\u0441\u044f \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f.<\/p>\n<hr\/>\n<h2>\u0417\u0430\u043f\u0443\u0441\u043a<\/h2>\n<p>\u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Python-\u043a\u043e\u0434\u0430 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u044e \u043a\u043d\u043e\u043f\u043a\u0443 Run \u0432 IDE. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Arduino-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c USB-\u043a\u0430\u0431\u0435\u043b\u044c \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443.<\/p>\n<p>\u041d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e Python-\u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 Serial. \u041f\u0440\u0430\u0432\u0434\u0430, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u0430\u0432\u043d\u043e\u0435, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0438\u0441\u0442\u043e\u0435. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, \u0430 \u0432\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u0447\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u043e\u043a \u043a\u0430\u0436\u0434\u044b\u0435 5 \u0441\u0435\u043a\u0443\u043d\u0434. \u041d\u043e \u044f \u0443\u0436\u0435 \u0440\u0430\u0434, \u0447\u0442\u043e \u0441\u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/813\/195\/f5e\/813195f5e2f1986a94476162b00cb23c.jpg\" alt=\"result.jpg\" title=\"\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435\" width=\"900\" height=\"652\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/813\/195\/f5e\/813195f5e2f1986a94476162b00cb23c.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/813\/195\/f5e\/813195f5e2f1986a94476162b00cb23c.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0444\u043e\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u044d\u043a\u0440\u0430\u043d \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u0438. \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0446\u0432\u0435\u0442\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a67\/9f8\/062\/a679f806250289db720d4d8b2942e18b.jpg\" alt=\"fake_data.jpg\" title=\"\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\" width=\"900\" height=\"642\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a67\/9f8\/062\/a679f806250289db720d4d8b2942e18b.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a67\/9f8\/062\/a679f806250289db720d4d8b2942e18b.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435<\/figcaption><\/div>\n<\/figure>\n<hr\/>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430 \u0434\u0430\u043b\u0451\u043a \u043e\u0442 \u0438\u0434\u0435\u0430\u043b\u0430. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0438 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442, \u043f\u043e\u043c\u0438\u043c\u043e Nvidia. \u0422\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0448\u0438\u0431\u043e\u043a, \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f Arduino \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u043b\u0430, \u0430 \u043d\u0435 \u0432\u0441\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c.<\/p>\n<p>\u0412 \u0431\u043e\u043b\u0435\u0435 \u0434\u0430\u043b\u0451\u043a\u043e\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u044f \u0445\u043e\u0447\u0443 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u044c\u0446\u0430 \u0438 \u043b\u0438\u043d\u0438\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0448\u043a\u0430\u043b\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u0438 \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u2014 \u0441 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u043c \u0432\u044b\u0441\u043b\u0443\u0448\u0430\u044e \u0432\u0430\u0448\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f!<\/p>\n<p>\u0412\u043f\u0435\u0440\u0435\u0434\u0438 \u0435\u0449\u0451 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e! =)<\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438 \u043a \u0441\u0442\u0430\u0442\u044c\u0435<\/h2>\n<ul>\n<li>\n<p>\u041a\u0430\u043d\u0430\u043b \u0432 Telegram\u00a0<a href=\"https:\/\/t.me\/+lbzO88SiqtA2ODNi\" rel=\"noopener noreferrer nofollow\">Arduinum628<\/a><\/p>\n<\/li>\n<li>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f\u00a0<a href=\"https:\/\/github.com\/adafruit\/Adafruit_GC9A01A\/tree\/main\" rel=\"noopener noreferrer nofollow\">Adafruit_GC9A01A<\/a><\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u00a0<a href=\"https:\/\/github.com\/Arduinum\/spec_pc_to_lcd\" rel=\"noopener noreferrer nofollow\">Spec_pc_to_lcd<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\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:\/\/habr.com\/ru\/articles\/916486\/\"> https:\/\/habr.com\/ru\/articles\/916486\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u041c\u043e\u0439 \u043d\u0438\u043a\u043d\u0435\u0439\u043c Arduinum628, \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c DIY \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430 Python \u0438 C++. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u043e \u0432\u044b\u0432\u043e\u0434\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u041f\u041a \u043d\u0430 \u043a\u0440\u0443\u0433\u043b\u044b\u0439 LCD \u0434\u0438\u0441\u043f\u043b\u0435\u0439 GC9A01.<\/p>\n<p>\u0421\u0430\u043c\u0430 \u0438\u0434\u0435\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0418\u0432\u0430\u043d\u043e\u043c. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0435\u043c\u0443, \u0447\u0442\u043e \u0437\u0430\u043a\u0430\u0437\u0430\u043b \u043f\u0430\u0440\u0443 LCD \u0434\u0438\u0441\u043f\u043b\u0435\u0439 GC9A01 \u0441 Ali Express \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 DIY \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u0418\u0432\u0430\u043d \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0435\u043c\u0443-\u0431\u044b \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0441\u044f \u0434\u0435\u0432\u0430\u0439\u0441 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u041f\u041a. \u042f \u043f\u043e\u0434\u0443\u043c\u0430\u043b &#8212; \u043f\u043e\u0447\u0435\u043c\u0443-\u0431\u044b \u043d\u0435 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435?!<\/p>\n<p>\u0421\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u044f \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0434\u043b\u044f \u043d\u0443\u0436\u0434 \u0434\u0440\u0443\u0433\u0430, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432 \u0446\u0435\u043b\u044f\u0445 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u0442\u0438\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c. \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0435 \u0438 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441 \u041f\u041a. \u041f\u043e \u043c\u043e\u0435\u043c\u0443 \u0441\u043e\u0432\u0435\u0442\u0443 \u043e\u043d \u043a\u0443\u043f\u0438\u043b \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 esp32 \u0441 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0430\u043c. \u042f \u0436\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0435\u0451 \u0437\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439. \u042d\u0442\u043e \u0447\u0435\u043c-\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0441\u043f\u0438\u0434\u043e\u043c\u0435\u0442\u0440 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f =)<\/p>\n<hr\/>\n<h2>\u0418\u0434\u0435\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h2>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439. \u041a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c?<\/p>\n<ul>\n<li>\n<p><strong>CPU Load<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>CPU Temp<\/strong>\u00a0\u2014 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>RAM Usage<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p><strong>GPU Load<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p><strong>GPU Memory Used<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p><strong>GPU Temp<\/strong>\u00a0\u2014 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p><strong>Disk Usage<\/strong>\u00a0\u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0438\u0441\u043a\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0428\u043a\u0430\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b: \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0443 \u043d\u0430\u0447\u0430\u043b\u0430 \u0448\u043a\u0430\u043b\u044b \u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0446\u0435.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0448\u043a\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0446\u0432\u0435\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u043f\u0440\u0438\u043c\u0435\u0440):<\/p>\n<ul>\n<li>\n<p><strong>\u0437\u0435\u043b\u0451\u043d\u044b\u0439<\/strong>\u00a0\u2014 \u043d\u0438\u0437\u043a\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 (0 &#8212; 50%);<\/p>\n<\/li>\n<li>\n<p><strong>\u0436\u0451\u043b\u0442\u044b\u0439<\/strong>\u00a0\u2014 \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 (51 &#8212; 80%);<\/p>\n<\/li>\n<li>\n<p><strong>\u043a\u0440\u0430\u0441\u043d\u044b\u0439<\/strong>\u00a0\u2014 \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 (81 &#8212; 100%).<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0438\u0431\u043e\u0440\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c. \u041e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043a Arduino Uno, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0430 \u0441 \u041f\u041a \u0447\u0435\u0440\u0435\u0437 USB.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e USB \u0438 \u0438\u0445 \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439. \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 COM-\u043f\u043e\u0440\u0442. \u0414\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c).<\/p>\n<p>\u042f \u0445\u043e\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 \u0442\u0440\u0451\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445: MacOS, Linux \u0438 Windows. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<code>psutil<\/code>\u00a0\u0438 \u0434\u0440\u0443\u0433\u0438\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 Python. \u041f\u043e\u043a\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f Linux, \u043d\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<p>\u041a\u043e\u0434 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c \u0438 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.<\/p>\n<hr\/>\n<h2>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/h2>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b:<\/p>\n<ul>\n<li>\n<p>LSD \u0434\u0438\u0441\u043f\u043b\u0435\u0439 240\u0445240 \u0441 \u0447\u0438\u043f\u043e\u043c GC9A01 &#8212;\u00a0<a href=\"https:\/\/aliexpress.ru\/item\/1005004911604497.html?sku_id=12000032757861044&amp;srcSns=sns_More&amp;businessType=ProductDetail&amp;spreadType=socialShare&amp;tt=MG&amp;utm_medium=sharing\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0430\u00a0<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b \u043d\u0430 150 \u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0430 \u0434\u044e\u043f\u043e\u043d\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>Arduino Uno (\u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0437\u0430\u043c\u0435\u043d\u044e \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0443\u044e Arduino Nano);<\/p>\n<\/li>\n<li>\n<p>\u041c\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u0430 (\u0431\u0435\u0437 \u043f\u0430\u0439\u043a\u0438);<\/p>\n<\/li>\n<li>\n<p>\u041f\u043b\u0430\u0441\u0442\u0438\u043a.<\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<h2>\u0421\u0431\u043e\u0440\u043a\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/h2>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0437\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439. \u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f, \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u043e\u043c. \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u043b \u043f\u0430\u0440\u0443 \u0443\u0433\u043e\u043b\u043a\u043e\u0432 \u043e\u0442 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0448\u043a\u0430\u0444\u0430 \u0438 \u043f\u043b\u0430\u0441\u0442\u0438\u043a \u043e\u0442 \u043a\u0440\u044b\u0448\u043a\u0438 \u0441 \u0432\u043b\u0430\u0436\u043d\u044b\u043c\u0438 \u0441\u0430\u043b\u0444\u0435\u0442\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041f\u0440\u0438\u043a\u043b\u0435\u0438\u043b \u043c\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b \u043d\u0430 \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u043a\u043e\u0442\u0447, \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b \u0438\u0445 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c \u0432\u043c\u0435\u0441\u0442\u0435.<br \/>\u0418\u0437 \u043f\u043b\u0430\u0441\u0442\u0438\u043a\u0430 \u0432\u044b\u0440\u0435\u0437\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0434\u043b\u044f \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u043f\u0440\u043e\u0441\u0432\u0435\u0440\u043b\u0438\u043b \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u044f \u043f\u043e\u0434 \u0435\u0433\u043e \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f_1<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u043a\u0440\u0430\u043d \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043b \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0432\u0438\u043d\u0442\u0430\u043c\u0438 \u043a \u043f\u043b\u0430\u0441\u0442\u0438\u043a\u043e\u0432\u043e\u043c\u0443 \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044e. \u041f\u043b\u0430\u0441\u0442\u0438\u043d\u0443 \u0441\u043e\u0433\u043d\u0443\u043b \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0432\u0432\u0435\u0440\u0445, \u043a\u0430\u043a \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0441\u043f\u0438\u0434\u043e\u043c\u0435\u0442\u0440\u0435.<\/p>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0443\u043a\u043e\u0440\u043e\u0442\u0438\u0442\u044c \u0438 \u043f\u0440\u0438\u043f\u0430\u044f\u0442\u044c Dupont-\u043f\u0430\u043f\u0430 \u0432\u043c\u0435\u0441\u0442\u043e Dupont-\u043c\u0430\u043c\u0430.<br \/>\u0414\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u043e\u043d\u043a\u0443\u044e \u0442\u0435\u0440\u043c\u043e\u0443\u0441\u0430\u0434\u043a\u0443. \u0421\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0443\u043b\u043e\u0436\u0438\u043b, \u043f\u0440\u0438\u0436\u0430\u043b \u0438\u0445 \u0445\u043e\u043c\u0443\u0442\u043e\u043c, \u0430 \u0440\u0430\u0437\u044a\u0451\u043c\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0432 \u043c\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f 2<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u043c\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0437\u0436\u0435. \u042f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0443\u0434\u0430 Arduino Nano, \u043d\u043e \u043f\u043e\u043a\u0430 \u0435\u0451 \u043d\u0435\u0442 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Arduino Uno, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0440\u044f\u0434\u043e\u043c.<\/p>\n<hr\/>\n<h2>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a Arduino<\/h2>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u0438\u043d\u044b \u0434\u0438\u0441\u043f\u043b\u0435\u044f GC9A01<\/figcaption><\/div>\n<\/figure>\n<p><strong>\u041f\u0438\u043d\u044b \u0434\u0438\u0441\u043f\u043b\u0435\u044f:<\/strong><\/p>\n<ul>\n<li>\n<p>VIN \u2014 +;<\/p>\n<\/li>\n<li>\n<p>GND \u2014 \u0437\u0435\u043c\u043b\u044f;<\/p>\n<\/li>\n<li>\n<p>CS &#8212; Chip Select \u2014 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>DC &#8212; Data\/Command \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u00a0<strong>\u043a\u043e\u043c\u0430\u043d\u0434\u0430<\/strong>\u00a0(\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f) \u0438\u043b\u0438\u00a0<strong>\u0434\u0430\u043d\u043d\u044b\u0435<\/strong>\u00a0(\u0433\u0440\u0430\u0444\u0438\u043a\u0430, \u0442\u0435\u043a\u0441\u0442);<\/p>\n<\/li>\n<li>\n<p>RES &#8212; Reset \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u0431\u0440\u043e\u0441\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e;<\/p>\n<\/li>\n<li>\n<p>SDA &#8212; MOSI (Master Out Slave In) \u2014 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>SCL &#8212; SCK (Serial Clock) \u2014 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b SPI, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>BLK &#8212; \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430;<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 GC9A01 -&gt; Arduino<\/strong>:<\/p>\n<ul>\n<li>\n<p>VIN -&gt; 3.3V \/ 5V (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044f)<\/p>\n<\/li>\n<li>\n<p>GND -&gt; GND<\/p>\n<\/li>\n<li>\n<p>CS -&gt; resistor 150om\/200om -&gt; D10<\/p>\n<\/li>\n<li>\n<p>DC -&gt; resistor 150om\/200om -&gt; D9<\/p>\n<\/li>\n<li>\n<p>RES -&gt; D8 (\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d)<\/p>\n<\/li>\n<li>\n<p>SDA -&gt; resistor 150om\/200om -&gt; D11 (MOSI)<\/p>\n<\/li>\n<li>\n<p>SCL -&gt; resistor 150om\/200om -&gt; D13 (SCK)<\/p>\n<\/li>\n<li>\n<p>BLK -&gt; 3.3V \/ PWM (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, D6) (\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d)<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0443 \u043c\u0435\u043d\u044f \u0437\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439:<\/strong><\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a arduino<\/figcaption><\/div>\n<\/figure>\n<hr\/>\n<h2>\u041a\u043e\u0434 \u0434\u043b\u044f Arduino<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u043a\u043e\u0434 \u0434\u043b\u044f Arduino, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 Python-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0447\u0435\u0440\u0435\u0437 Serial \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 LCD-\u0434\u0438\u0441\u043f\u043b\u0435\u0439 GC9A01A.<\/p>\n<p><code>spec_pc_to_lcd.ino<\/code>:<\/p>\n<pre><code class=\"cpp\">#include &lt;SPI.h&gt; #include &lt;Adafruit_GC9A01A.h&gt;  \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0438\u043d\u043e\u0432: #define TFT_CS  10   \/\/ Chip Select #define TFT_DC  9    \/\/ Data\/Command #define TFT_RES 8    \/\/ Reset  \/\/ \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0438\u0441\u043f\u043b\u0435\u044f: Adafruit_GC9A01A tft(TFT_CS, TFT_DC, TFT_RES);  const int MAX_NUMBERS = 7;      \/\/ \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0447\u0438\u0441\u0435\u043b \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 int numbers[MAX_NUMBERS];        \/\/ \u041c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b int numberCount = 0;             \/\/ \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u0435\u043b \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e  String inputString = \"\";         \/\/ \u0411\u0443\u0444\u0435\u0440 \u0432\u0432\u043e\u0434\u0430 bool inputComplete = false;  void setup() {   Serial.begin(9600);  \/\/ \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445   tft.begin();  \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f   tft.fillScreen(GC9A01A_BLACK);  \/\/ \u0417\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u044d\u043a\u0440\u0430\u043d \u0447\u0451\u0440\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c   tft.setTextSize(2); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430 }  void loop() {   while (Serial.available()) {     \/\/ \u0427\u0438\u0442\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Serial     char inChar = (char)Serial.read();          if (inChar == '\\n') {       \/\/ \u041a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438       inputComplete = true;       break;     } else {       inputString += inChar;     }   }    \/\/ \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e   if (inputComplete) {     parseInputString(); \/\/ \u0420\u0430\u0437\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0447\u0438\u0441\u043b\u0430        setCpuLd(numbers[0]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 CPU     setCpuTp(numbers[1]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b CPU     setRumUs(numbers[2]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u041e\u0417\u0423     setGpuLd(numbers[3]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 GPU     setGpuMe(numbers[4]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 GPU     setGpuTp(numbers[5]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b GPU     setDscUs(numbers[6]); \/\/ \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0438\u0441\u043a\u0430      \/\/ \u0421\u0431\u0440\u043e\u0441 \u0431\u0443\u0444\u0435\u0440\u0430     inputString = \"\";     inputComplete = false;   } }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (CPU, RAM, GPU, \u0434\u0438\u0441\u043a) uint16_t getRateColorText(int lvl) {   uint16_t color;    if (lvl &lt;= 50) {     color = GC9A01A_GREEN;  \/\/ \u041d\u0438\u0437\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 - \u0437\u0435\u043b\u0451\u043d\u044b\u0439   } else if (lvl &lt;= 80) {     color = GC9A01A_YELLOW; \/\/ \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 - \u0436\u0451\u043b\u0442\u044b\u0439   } else {     color = GC9A01A_RED;    \/\/ \u0412\u044b\u0441\u043e\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 - \u043a\u0440\u0430\u0441\u043d\u044b\u0439   }    return color; }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b CPU uint16_t getCpuTpColorText(int lvl) {   uint16_t color;    if (lvl &lt;= 65) {     color = GC9A01A_GREEN;  \/\/ \u041d\u0438\u0437\u043a\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u0437\u0435\u043b\u0451\u043d\u044b\u0439   } else if (lvl &lt;= 85) {     color = GC9A01A_YELLOW; \/\/ \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u0436\u0451\u043b\u0442\u044b\u0439   } else {     color = GC9A01A_RED;    \/\/ \u0412\u044b\u0441\u043e\u043a\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u043a\u0440\u0430\u0441\u043d\u044b\u0439   }    return color; }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b GPU uint16_t getGpuTpColorText(int lvl) {   uint16_t color;    if (lvl &lt;= 70) {     color = GC9A01A_GREEN;  \/\/ \u041d\u0438\u0437\u043a\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u0437\u0435\u043b\u0451\u043d\u044b\u0439   } else if (lvl &lt;= 85) {     color = GC9A01A_YELLOW; \/\/ \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u0436\u0451\u043b\u0442\u044b\u0439   } else {     color = GC9A01A_RED;    \/\/ \u0412\u044b\u0441\u043e\u043a\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 - \u043a\u0440\u0430\u0441\u043d\u044b\u0439   }    return color; }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 void setCpuLd(int lvl) {   tft.setCursor(50, 50);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"CPU ld: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 void setCpuTp(int lvl) {   tft.setCursor(50, 75);   tft.setTextColor(getCpuTpColorText(lvl));   tft.println(\"CPU tp: \" + String(lvl) + \"C\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 void setRumUs(int lvl) {   tft.setCursor(50, 95);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"RAM us: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b void setGpuLd(int lvl) {   tft.setCursor(50, 115);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"GPU ld: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b void setGpuMe(int lvl) {   tft.setCursor(50, 135);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"GPU me: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b void setGpuTp(int lvl) {   tft.setCursor(50, 155);   tft.setTextColor(getGpuTpColorText(lvl));   tft.println(\"GPU tp: \" + String(lvl) + \"C\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0436\u0451\u0441\u0442\u043a\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430 void setDscUs(int lvl) {   tft.setCursor(50, 175);   tft.setTextColor(getRateColorText(lvl));   tft.println(\"DSC us: \" + String(lvl) + \"%\"); }  \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0430\u0440\u0441\u0438\u0442 \u0447\u0438\u0441\u043b\u0430 \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043b\u0430\u0434\u044f \u0438\u0445 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 void parseInputString() {   numberCount = 0;    char inputBuffer[100];   inputString.toCharArray(inputBuffer, 100);    char* token = strtok(inputBuffer, \" \");    while (token != NULL &amp;&amp; numberCount &lt; MAX_NUMBERS) {     numbers[numberCount++] = atoi(token); \/\/ \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0447\u0438\u0441\u043b\u043e     token = strtok(NULL, \" \");   } } <\/code><\/pre>\n<p><strong>\u0418\u043c\u043f\u043e\u0440\u0442\u044b<\/strong>:<\/p>\n<ul>\n<li>\n<p><code>#include &lt;SPI.h&gt;<\/code>\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 SPI-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p><code>#include &lt;Adafruit_GC9A01A.h&gt;<\/code>\u00a0\u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c GC9A01A.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0438\u043d\u043e\u0432 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f<\/strong>:<\/p>\n<ul>\n<li>\n<p><code>#define TFT_CS 10<\/code>\u00a0\u2014 \u043f\u0438\u043d \u0434\u043b\u044f Chip Select;<\/p>\n<\/li>\n<li>\n<p><code>#define TFT_DC 9<\/code>\u00a0\u2014 \u043f\u0438\u043d \u0434\u043b\u044f Data\/Command;<\/p>\n<\/li>\n<li>\n<p><code>#define TFT_RES 8<\/code>\u00a0\u2014 \u043f\u0438\u043d \u0434\u043b\u044f Reset;<\/p>\n<\/li>\n<li>\n<p><code>Adafruit_GC9A01A tft(TFT_CS, TFT_DC, TFT_RES);<\/code>\u00a0\u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/strong>:<\/p>\n<ul>\n<li>\n<p><code>const int MAX_NUMBERS = 7;<\/code>\u00a0\u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0438\u0441\u0435\u043b \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435;<\/p>\n<\/li>\n<li>\n<p><code>int numbers[MAX_NUMBERS];<\/code>\u00a0\u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b;<\/p>\n<\/li>\n<li>\n<p><code>int numberCount = 0;<\/code>\u00a0\u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u0447\u0438\u0441\u0435\u043b;<\/p>\n<\/li>\n<li>\n<p><code>String <\/code><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-462334","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/462334","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=462334"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/462334\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=462334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=462334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=462334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}