{"id":379822,"date":"2024-06-25T04:01:28","date_gmt":"2024-06-25T04:01:28","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=379822"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=379822","title":{"rendered":"<span>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 WiringRP \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f GPIO \u043d\u0430 Repka Pi<\/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<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/110\/76e\/e50\/11076ee508eeaa7b2de055d7dbeb6b67.jpg\" width=\"1722\" height=\"1644\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/110\/76e\/e50\/11076ee508eeaa7b2de055d7dbeb6b67.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0449\u0435\u0442\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 <strong>GPIO<\/strong> \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 <strong>Repka Pi<\/strong> \u0432 \u0432\u0438\u0434\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0430 \u0421\u0438, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <strong>WiringRP<\/strong>. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441 \u0435\u0435 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0435 \u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438, \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438 \u0438 \u0440\u0435\u043b\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 GPIO.<\/p>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c WiringRP \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438. \u042d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0435 \u0438 \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 IoT, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430.<\/p>\n<p>\u0410\u0432\u0442\u043e\u0440 \u0432\u044b\u0440\u0430\u0436\u0430\u0435\u0442 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP \u0421\u0435\u0440\u0433\u0435\u044e \u0428\u0430\u043b\u0430\u043f\u043e\u0432\u0443 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p><a href=\"#_Toc165629853\" rel=\"noopener noreferrer nofollow\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 WiringRP<\/a><\/p>\n<p><a href=\"#_Toc165629854\" rel=\"noopener noreferrer nofollow\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 WiringRP<\/a><\/p>\n<p><a href=\"#_Toc165629855\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP<\/a><\/p>\n<p><a href=\"#_Toc165629856\" rel=\"noopener noreferrer nofollow\">\u041c\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c<\/a><\/p>\n<p><a href=\"#_Toc165629857\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c multiBlink<\/a><\/p>\n<p><a href=\"#_Toc165629858\" rel=\"noopener noreferrer nofollow\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u043e\u0439<\/a><\/p>\n<p><a href=\"#_Toc165629859\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0438 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438<\/a><\/p>\n<p><a href=\"#_Toc165629860\" rel=\"noopener noreferrer nofollow\">\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u043b\u0435 \u0438 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438 \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435<\/a><\/p>\n<p><a href=\"#_Toc165629861\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/a><\/p>\n<p><a href=\"#_Toc165629862\" rel=\"noopener noreferrer nofollow\">\u0418\u0442\u043e\u0433\u0438<\/a><\/p>\n<p><a class=\"anchor\" name=\"_Toc165629853\" id=\"_Toc165629853\"><\/a><\/p>\n<h2>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 WiringRP<\/h2>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/repka-pi.ru\/project_documentation\/docs\/category\/%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0-wiringrp\" rel=\"noopener noreferrer nofollow\">WiringRP<\/a> \u043c\u043e\u0436\u0435\u0442 \u043c\u043d\u043e\u0433\u043e\u0435. \u042d\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 GPIO, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043d\u0438\u0445, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u043f\u043e\u0434\u0442\u044f\u0436\u043a\u0438 \u00ab\u0432\u043d\u0438\u0437\u00bb \u0438 \u00ab\u0432\u0432\u0435\u0440\u0445\u00bb, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 Repka Pi, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0448\u0438\u0440\u043e\u0442\u043d\u043e-\u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u0438 \u0428\u0418\u041c (Pulse Width Modulation, PWM).<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WiringRP \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0428\u0418\u041c, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0432 SoC Allwinner H5, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c UART, I2C \u0438 SPI, \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u0440\u0430\u0437\u044a\u0435\u043c GPIO.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0443, \u043e \u0447\u0435\u043c \u043c\u044b \u0435\u0449\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c.<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 WiringRP \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e <a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\/file\/?file=examples&amp;branch=master\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u041f\u041e \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0422\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b <a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b<\/a> \u0438 \u0441\u0430\u043c\u043e\u0439 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<p><a class=\"anchor\" name=\"_Toc165629854\" id=\"_Toc165629854\"><\/a><\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 WiringRP<\/h2>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c WiringRP \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (\u041e\u0421) Repka OS RT (Real Time). \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c WiringRP \u043d\u0430 Repka Pi, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u041e\u0421 Repka OS RT, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u041e\u0421.<\/p>\n<h3>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 Repka OS RT<\/h3>\n<p>\u0421\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u043e\u0431\u0440\u0430\u0437 \u044d\u0442\u043e\u0439 \u041e\u0421 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <a href=\"https:\/\/repka-pi.ru\/#operation-system-anchor\" rel=\"noopener noreferrer nofollow\">\u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Repka OS RT (Real Time) &#8212; \u041e\u0421 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/a>. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c: <a href=\"https:\/\/download.robointellect.ru\/arm64_ubuntu_20.04.6_desktop_RT_20.10.23_1.4.zip\" rel=\"noopener noreferrer nofollow\">1.3 \u0438 \u043c\u043b\u0430\u0434\u0448\u0435<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/download.robointellect.ru\/arm64_ubuntu_20.04.6_desktop_RT_20.10.23_ver-1.4.zip\" rel=\"noopener noreferrer nofollow\">1.4 \u0438 \u0432\u044b\u0448\u0435<\/a>.<\/p>\n<p>\u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 \u043d\u0430 \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <a href=\"https:\/\/github.com\/balena-io\/etcher\/blob\/master\/docs\/SUPPORT.md\" rel=\"noopener noreferrer nofollow\">balenaEtcher<\/a>, \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u0430\u0440\u0442\u0443 \u0432 Repka Pi.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 Repka OS RT \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"bash\"># apt update # apt upgrade<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:<\/p>\n<pre><code class=\"bash\"># apt-get install git gdb cmake<\/code><\/pre>\n<h3>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 \u041e\u0421<\/h3>\n<p>\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u041e\u0421.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b repka-config. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f repka-config-update.sh:<\/p>\n<pre><code class=\"bash\"># wget https:\/\/download.repka-pi.ru\/repka-tools\/repka-config\/repka-config-update.sh<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \/boot \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c repka-config.sh, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 repka-config.sh:<\/p>\n<pre><code class=\"bash\"># cp repka-config-update.sh \/boot\/repka-config.sh # chmod +x \/boot\/repka-config.sh<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"bash\"># cd \/boot  # .\/repka-config.sh<\/code><\/pre>\n<p>\u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u043a\u043d\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0438 \u043e\u0431\u044a\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0440\u0438\u0441. 1).<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/5b8\/5da\/431\/5b85da431787135bcf3a32c2526ed186.jpg\" alt=\"\u0420\u0438\u0441. 1. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0438 \u043e\u0431\u044a\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.\" title=\"\u0420\u0438\u0441. 1. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0438 \u043e\u0431\u044a\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.\" width=\"496\" height=\"135\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b8\/5da\/431\/5b85da431787135bcf3a32c2526ed186.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 1. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0438 \u043e\u0431\u044a\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 <strong>Enter <\/strong>\u0438 \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 <strong>System Options<\/strong> \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u0440\u0438\u0441. 2).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/659\/48e\/08f\/65948e08f9947e95346fde645b79a6ce.jpg\" alt=\"\u0420\u0438\u0441. 2. \u0412\u044b\u0431\u043e\u0440 System Options \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.\" title=\"\u0420\u0438\u0441. 2. \u0412\u044b\u0431\u043e\u0440 System Options \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.\" width=\"648\" height=\"319\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/659\/48e\/08f\/65948e08f9947e95346fde645b79a6ce.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 2. \u0412\u044b\u0431\u043e\u0440 System Options \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 <strong>S1 Select-kernel<\/strong> \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u044f\u0434\u0440\u0430 Linux (\u0440\u0438\u0441. 3).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/96a\/13e\/a61\/96a13ea61e06bbb6ed92cd046b0e0b86.jpg\" alt=\"\u0420\u0438\u0441. 3. \u0421\u0442\u0440\u043e\u043a\u0430 S1 Select-kernel \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u044f\u0434\u0440\u0430 Linux.\" title=\"\u0420\u0438\u0441. 3. \u0421\u0442\u0440\u043e\u043a\u0430 S1 Select-kernel \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u044f\u0434\u0440\u0430 Linux.\" width=\"647\" height=\"317\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/96a\/13e\/a61\/96a13ea61e06bbb6ed92cd046b0e0b86.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 3. \u0421\u0442\u0440\u043e\u043a\u0430 S1 Select-kernel \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u044f\u0434\u0440\u0430 Linux.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0430\u043c \u0442\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044f\u0434\u0440\u043e Kernel-3 6.1.11-rt7-sunxi (\u0441 \u043f\u0430\u0442\u0447\u0435\u043c PREEMPT_RT), \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0440\u0438\u0441. 4.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/12d\/92a\/30f\/12d92a30fdece2e4c6e7c44dc4d25c00.jpg\" alt=\"\u0420\u0438\u0441. 4. \u0412\u044b\u0431\u043e\u0440 \u044f\u0434\u0440\u0430 Kernel-3 6.1.11-rt7-sunxi (\u0441 \u043f\u0430\u0442\u0447\u0435\u043c PREEMPT_RT).\" title=\"\u0420\u0438\u0441. 4. \u0412\u044b\u0431\u043e\u0440 \u044f\u0434\u0440\u0430 Kernel-3 6.1.11-rt7-sunxi (\u0441 \u043f\u0430\u0442\u0447\u0435\u043c PREEMPT_RT).\" width=\"649\" height=\"317\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/12d\/92a\/30f\/12d92a30fdece2e4c6e7c44dc4d25c00.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 4. \u0412\u044b\u0431\u043e\u0440 \u044f\u0434\u0440\u0430 Kernel-3 6.1.11-rt7-sunxi (\u0441 \u043f\u0430\u0442\u0447\u0435\u043c PREEMPT_RT).<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u041e\u0421.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u044f\u0434\u0440\u0430:<\/p>\n<pre><code class=\"bash\"># uname -a Linux Repka-Pi 6.1.11-rt7 #2 SMP PREEMPT_RT Wed Jan 17 17:29:18 +04 2024 aarch64 aarch64 aarch64 GNU\/Linux   # uname -r 6.1.11-rt7<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u044f\u0434\u0440\u043e 6.1.11-rt7.<\/p>\n<p><a class=\"anchor\" name=\"_Toc165629855\" id=\"_Toc165629855\"><\/a><\/p>\n<h2>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP<\/h2>\n<p>\u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre><code class=\"bash\"># mkdir myprojects # cd myprojects # git clone https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka.git<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 wiring-repka:<\/p>\n<pre><code class=\"bash\"># cd wiring-repka<\/code><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 utility \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u041e\u0421:<\/p>\n<pre><code class=\"bash\"># cd utility  # cd repka-pi_1.2-1.6_kernel_6.1.11-rt<\/code><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u043c\u044b\u043c \u0444\u0430\u0439\u043b init_dev.sh \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0435\u0433\u043e:<\/p>\n<pre><code class=\"bash\"># chmod +x init_dev.sh # .\/init_dev.sh<\/code><\/pre>\n<p>\u041d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_gpio.ko \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c... chmod: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a '\/dev\/i2c-2': \u041d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 chmod: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a '\/dev\/spidev0.0': \u041d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 chmod: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a '\/dev\/spidev1.0': \u041d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.<\/code><\/pre>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 \u044d\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u041e\u0421, \u0438 \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \/dev.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u0438\u043b\u0438 \u043f\u044f\u0442\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442:<\/p>\n<pre><code class=\"bash\">root@Repka-Pi:~\/wiring-repka\/utility\/repka-pi_1.2-1.6_kernel_6.1.11-rt# .\/init_dev.sh \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_gpio.ko \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c... \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 repka-config. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0430\u043c \u0441\u0442\u0440\u043e\u043a\u0443 <strong>Interface Options<\/strong>,\u00a0 \u0430 \u0437\u0430\u0442\u0435\u043c <strong>Frequency\/Pinout Options<\/strong>. \u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0438 \u0432\u0435\u0440\u0441\u0438\u044e \u0432\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b, \u0430 \u043f\u043e\u0442\u043e\u043c \u2014 \u043d\u0443\u0436\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 (\u0440\u0438\u0441. 5).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/7ac\/c15\/9b7\/7acc159b747bbffe233d260e2eec4797.jpg\" alt=\"\u0420\u0438\u0441. 5. \u0412\u044b\u0431\u043e\u0440 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438.\" title=\"\u0420\u0438\u0441. 5. \u0412\u044b\u0431\u043e\u0440 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438.\" width=\"646\" height=\"241\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7ac\/c15\/9b7\/7acc159b747bbffe233d260e2eec4797.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 5. \u0412\u044b\u0431\u043e\u0440 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0428\u0418\u041c, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0432 SoC Allwinner H5, \u043d\u0443\u0436\u0435\u043d \u043f\u044f\u0442\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>\/root\/myprojects\/wiring-repka<\/code>, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043d\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u043c:<\/p>\n<pre><code class=\"bash\"># mkdir build &amp;&amp; cd build<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 CmakeLists.txt \u0441\u043d\u044f\u0442 \u0441\u0438\u043c\u0432\u043e\u043b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f # \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0438 `#add_subdirectory(driver). \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043e\u0434\u043d\u0430\u043a\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 wiring-repka\/utility.<\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<pre><code class=\"bash\"># cmake .. &amp;&amp; make<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \/root\/myprojects\/wiring-repka\/build\/bin \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 blink:<\/p>\n<pre><code class=\"bash\"># .\/blink<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043d\u0430\u0447\u043d\u0435\u0442 \u043c\u0438\u0433\u0430\u0442\u044c, \u0430 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f WiringRP... \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430: Repka-Pi3-H5 \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0426\u041f: 1.368 GHz SN: 82c00001e6cad661 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438: 1 \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0440\u0435\u0436\u0438\u043c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432: SUNXI \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_mmap... \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b GPIO \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 blink \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0441\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0436\u0438\u043c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0440\u0435\u0436\u0438\u043c\u0430 SUNXI \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b PHYSIC (\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 1\u201340) \u0438 WIRING (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430\u0434\u043f\u0438\u0441\u044f\u043c \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c \u0432 Raspberry Pi \u0438 \u0448\u0438\u043b\u0434\u0430\u0445).<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u043e\u043a\u0430 \u043d\u043e\u0432\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 \u044f\u0434\u0440\u043e Repka OS, \u0438 <strong>\u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u043e\u0432\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 init_dev.sh<\/strong>. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b blink \u0434\u043e\u0441\u0442\u0443\u043f \u043a GPIO \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \/dev\/mem:<\/p>\n<pre><code class=\"bash\"># .\/blink \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f WiringRP... \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430: Repka-Pi3-H5 \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0426\u041f: 1.368 GHz SN: 82c00001e6cad661 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438: 1 \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0440\u0435\u0436\u0438\u043c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432: SUNXI \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_mmap... \u041e\u0448\u0438\u0431\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \/dev\/repka_gpio0 \u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \/dev\/mem \u041e\u0448\u0438\u0431\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \/dev\/repka_gpio1 \u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \/dev\/mem \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b GPIO \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/code><\/pre>\n<p>\u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u044f\u0434\u0440\u0430, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c init_dev.sh \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0445\u043e\u0442\u044f \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u041e\u0421 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \/root\/myprojects\/wiring-repka\/utility\/repka-pi_1.2-1.6_kernel_6.1.11-rt \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0430\u043c \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"bash\"># .\/init_dev.sh<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 blink:<\/p>\n<pre><code class=\"bash\"># \/root\/myprojects\/wiring-repka\/build\/bin\/blink \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f WiringRP... \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430: Repka-Pi3-H5 \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0426\u041f: 1.368 GHz SN: 82c00001e6cad661 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438: 1 \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0440\u0435\u0436\u0438\u043c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432: SUNXI \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_mmap... \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b GPIO \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. <\/p>\n<p>\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 WiringRP \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 <a href=\"https:\/\/repka-pi.ru\/forum\/threads\/23\/\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0440\u0443\u043c\u0435 Repka-Pi<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"_Toc165629856\" id=\"_Toc165629856\"><\/a><\/p>\n<h2>\u041c\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c<\/h2>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b blink.c, \u043c\u0438\u0433\u0430\u044e\u0449\u0435\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c (\u043b\u0438\u0441\u0442\u0438\u043d\u0433 1). \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 <a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\/file\/?file=examples&amp;branch=master\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 examples<\/a>.<\/p>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 1. <\/strong><a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\/blob\/raw?file=examples\/blink.c&amp;commit=8ae264b69c0eb8185a2c8431b4b5b0c3b374fc8a\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\/blob\/raw?file=examples\/blink.c&amp;commit=8ae264b69c0eb8185a2c8431b4b5b0c3b374fc8a<\/strong><\/a><\/p>\n<pre><code class=\"cpp\">#include &lt;stdio.h> #include &lt;stdlib.h> #include &lt;stdbool.h> #include \"wiringRP.h\"  \/\/ \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b const int LED_1 = 6;  void setup() {     \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a wiringRP     if(setupWiringRP(WRP_MODE_SUNXI) &lt; 0)         exit(EXIT_FAILURE);      \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432     pinMode(LED_1, OUTPUT); }  void loop() {     \/\/ \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b     digitalWrite(LED_1, HIGH);     delay(1000);     digitalWrite(LED_1, LOW);     delay(500); }  ONDESTROY(){     \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043d\u044f\u0442\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0438\u043d\u0430\u0445     digitalWrite(LED_1, LOW);     pinMode(LED_1, DISABLE);      \/\/ \u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a     releaseWiringRP();      exit(0);    \/\/ \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b }  MAIN_WIRINGRP();<\/code><\/pre>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 stdio.h, stdlib.h \u0438 stdbool.h. \u041f\u0435\u0440\u0432\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u2014 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 true \u0438 false.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b wiringRP.h, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 WiringRP.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 LED_1, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0434\u0430\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 GPIO Repka Pi \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 SUNXI:<\/p>\n<pre><code class=\"cpp\">const int LED_1 = 6;<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u0440\u0430\u043c\u043a\u043e\u0439 \u043d\u0430 <a href=\"https:\/\/repka-pi.ru\/#periphery_block\" rel=\"noopener noreferrer nofollow\">\u0441\u0445\u0435\u043c\u0435 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043e\u043a<\/a> (\u0440\u0438\u0441. 6).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/c51\/570\/8e7\/c515708e74371328b72c5460d5aaa6af.jpg\" alt=\"\u0420\u0438\u0441. 6. \u041a\u043e\u043d\u0442\u0430\u043a\u0442 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 6 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 SUNXI.\" title=\"\u0420\u0438\u0441. 6. \u041a\u043e\u043d\u0442\u0430\u043a\u0442 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 6 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 SUNXI.\" width=\"1484\" height=\"724\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c51\/570\/8e7\/c515708e74371328b72c5460d5aaa6af.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 6. \u041a\u043e\u043d\u0442\u0430\u043a\u0442 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 6 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 SUNXI.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 240 \u041e\u043c \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 \u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c 12, \u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u2014 \u043a \u0432\u044b\u0432\u043e\u0434\u0443 GND (\u0440\u0438\u0441. 7). \u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a GND (\u0442\u043e \u0435\u0441\u0442\u044c \u043a \u0437\u0435\u043c\u043b\u0435) \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438 6, 9, 14, 20 25, 30, 34 \u0438 39.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/28b\/ba6\/185\/28bba61855d14c3385dd46710540f573.jpg\" alt=\"\u0420\u0438\u0441. 7. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430.\" title=\"\u0420\u0438\u0441. 7. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430.\" width=\"1588\" height=\"1023\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/28b\/ba6\/185\/28bba61855d14c3385dd46710540f573.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 7. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u043e\u0434, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043c\u0430\u043a\u0440\u043e\u0441\u0435 MAIN_WIRINGRP:<\/p>\n<pre><code class=\"cpp\">#define MAIN_WIRINGRP() \\     int main(void) { \\     signal(SIGINT, onClose); \\     setup(); \\     for (;;) loop();}<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f main \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e onClose \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0430 SIGINT. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl+C.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f setup, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e loop.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f setup \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 wiringRP \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 setupWiringRP, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 (\u043f\u0438\u043d), \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434, \u0432 \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430:<\/p>\n<pre><code class=\"cpp\">void setup() {     if(setupWiringRP(WRP_MODE_SUNXI) &lt; 0)         exit(EXIT_FAILURE);     pinMode(LED_1, OUTPUT); }<\/code><\/pre>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 setupWiringRP \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>WRP_MODE_SUNXI \u2014 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0430\u043c SUNXI (PA-PL);<\/p>\n<\/li>\n<li>\n<p>WRP_MODE_PHYS \u2014 \u043f\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443      \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 (1\u201340);<\/p>\n<\/li>\n<li>\n<p>WRP_MODE_WIRING \u2014 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0430\u043c wiring (\u0434\u043b\u044f      \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 Raspberry Pi 3)<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0430\u0441\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0444\u0443\u043d\u043a\u0446\u0438\u044f setup \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043f\u0438\u043d \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 LED_1 \u0432 \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pinMode.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0436\u0438\u043c\u044b. \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435:<\/p>\n<ul>\n<li>\n<p>INPUT \u2014 \u0432\u0432\u043e\u0434, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439      \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d;<\/p>\n<\/li>\n<li>\n<p>INPUT_PULLUP \u2014 \u0432\u0432\u043e\u0434, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439      \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0439 &#171;\u0432\u0432\u0435\u0440\u0445&#187; \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d;<\/p>\n<\/li>\n<li>\n<p>INPUT_PULLDOWN \u2014 \u0432\u0432\u043e\u0434, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439      \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0439 &#171;\u0432\u043d\u0438\u0437&#187; \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d;<\/p>\n<\/li>\n<li>\n<p>OUTPUT \u2014 \u0432\u044b\u0432\u043e\u0434;<\/p>\n<\/li>\n<li>\n<p>DISABLE \u2014 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 blink.c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e loop:<\/p>\n<pre><code class=\"cpp\">void loop() {     digitalWrite(LED_1, HIGH);     delay(1000);     digitalWrite(LED_1, LOW);     delay(500); }<\/code><\/pre>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0446\u0438\u043a\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u0432 \u043c\u0430\u043a\u0440\u043e\u0441\u0435 MAIN_WIRINGRP.<\/p>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0438 \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f digitalWrite. \u0427\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434, \u0435\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 HIGH, \u0430 \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u2014 LOW. \u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 1000 \u043c\u0441, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u2014 500 \u043c\u0441.<\/p>\n<p>\u041f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f onClose, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u043c ONDESTROY:<\/p>\n<pre><code class=\"cpp\">#define ONDESTROY() void onClose(int sig_num)<\/code><\/pre>\n<p>\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0438\u043d\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u044d\u0442\u043e\u0442 \u043f\u0438\u043d \u0432 \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">ONDESTROY(){     \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043d\u044f\u0442\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0438\u043d\u0430\u0445     digitalWrite(LED_1, LOW);     pinMode(LED_1, DISABLE);     releaseWiringRP();     exit(0); \/\/ \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b }<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f releaseWiringRP, \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u044e\u0449\u0430\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0437\u0430\u043d\u044f\u0442\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 WiringRP. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 exit.<\/p>\n<p><a class=\"anchor\" name=\"_Toc165629857\" id=\"_Toc165629857\"><\/a><\/p>\n<h2>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c multiBlink<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043c\u0438\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434, \u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 <a href=\"https:\/\/habr.com\/ru\/articles\/326138\/\" rel=\"noopener noreferrer nofollow\">\u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/a>. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u0430, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.<\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/h3>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433:<\/p>\n<pre><code class=\"bash\">\/root\/rover_connect2\/wiring-repka-pi\/mblink\/<\/code><\/pre>\n<p>\u0420\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432 \u044d\u0442\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 mblink.c (\u043b\u0438\u0441\u0442\u0438\u043d\u0433 2), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0444\u0430\u0439\u043b CMakeLists.txt (\u043b\u0438\u0441\u0442\u0438\u043d\u0433 3).<\/p>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 2. <\/strong><a href=\"https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/mblink.c\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/mblink.c<\/strong><\/a><\/p>\n<pre><code class=\"cpp\">#include &lt;stdio.h> #include &lt;stdlib.h> #include &lt;stdbool.h> #include &lt;pthread.h> #include \"wiringRP.h\"  const int LED_1 = 6; const int LED_2 = 7;  void* led1_blink(void* arg) {     while (true) {         digitalWrite(LED_1, HIGH);         delay(1000);         digitalWrite(LED_1, LOW);         delay(500);     }     return NULL; }  void* led2_blink(void* arg) {     while (true) {         digitalWrite(LED_2, HIGH);         delay(300);         digitalWrite(LED_2, LOW);         delay(150);     }     return NULL; }  void setup() {     if (setupWiringRP(WRP_MODE_SUNXI) &lt; 0)         exit(EXIT_FAILURE);         pinMode(LED_1, OUTPUT);     pinMode(LED_2, OUTPUT);          pthread_t thread_led1, thread_led2;     pthread_create(&amp;thread_led1, NULL, led1_blink, NULL);     pthread_create(&amp;thread_led2, NULL, led2_blink, NULL); }  void loop() {     delay(300); }  ONDESTROY() {     digitalWrite(LED_1, LOW);     digitalWrite(LED_2, LOW);     pinMode(LED_1, DISABLE);     pinMode(LED_2, DISABLE);     releaseWiringRP();     exit(0); }  MAIN_WIRINGRP();<\/code><\/pre>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 3.<\/strong> <a href=\"https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/CMakeLists.txt\" rel=\"noopener noreferrer nofollow\">https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/CMakeLists.txt<\/a><\/p>\n<pre><code class=\"bash\">cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR) project(\"multiBlink\") add_subdirectory(..\/wiring-repka\/wiringRP ${CMAKE_BINARY_DIR}\/wrp) add_executable(multiBlink mblink.c) target_link_libraries(multiBlink PRIVATE wiringrp)<\/code><\/pre>\n<h3>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442<\/h3>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 wiring-repka\/wiringRP \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \/root\/rover_connect2\/wiring-repka-pi.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \/root\/rover_connect2\/wiring-repka-pi\/mblink, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0442\u0430\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 build \u0438 \u0441\u043e\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442:<\/p>\n<pre><code class=\"bash\">mkdir build cd build cmake .. cmake --build .<\/code><\/pre>\n<h3>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 <\/h3>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 240 \u041e\u043c \u043a \u043f\u0438\u043d\u0443 \u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c 7, \u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u2014 \u043a \u0437\u0435\u043c\u043b\u0435, \u043a\u0430\u043a \u043c\u044b \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b blink.c (\u0440\u0438\u0441. \u00a08).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/28f\/16c\/0f3\/28f16c0f3f45fba2a06bc8ff9ed96363.jpg\" alt=\"\u0420\u0438\u0441. 8. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430.\" title=\"\u0420\u0438\u0441. 8. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430.\" width=\"1588\" height=\"1023\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/28f\/16c\/0f3\/28f16c0f3f45fba2a06bc8ff9ed96363.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 8. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430.<\/strong><\/figcaption><\/div>\n<\/figure>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b multiBlink \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u044d\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 build:<\/p>\n<pre><code class=\"bash\">.\/multiBlink<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0432\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u043c\u0438\u0433\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438.<\/p>\n<h3>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b mblink.c<\/h3>\n<p>\u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b pthread.h.<\/p>\n<p>\u041d\u043e\u043c\u0435\u0440\u0430 \u043f\u0438\u043d\u043e\u0432 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 LED_1 \u0438 LED_2:<\/p>\n<pre><code><\/code><\/pre>\n<pre><code class=\"cpp\">const int LED_1 = 6; const int LED_2 = 7;<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u043c\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 led1_blink \u0438 led2_blink:<\/p>\n<pre><code class=\"cpp\">void* led1_blink(void* arg) {     while (true) {         digitalWrite(LED_1, HIGH);         delay(1000);         digitalWrite(LED_1, LOW);         delay(500);     }     return NULL; }  void* led2_blink(void* arg) {     while (true) {         digitalWrite(LED_2, HIGH);         delay(300);         digitalWrite(LED_2, LOW);         delay(150);     }     return NULL; }<\/code><\/pre>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043d\u0438\u0445 \u043c\u0438\u0433\u0430\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441\u0432\u043e\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 blink.c.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u00a0\u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438.<\/p>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP \u0438 \u043f\u0438\u043d\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 setupWiringRP \u0438 pinMode:<\/p>\n<pre><code class=\"cpp\">void setup() {     if (setupWiringRP(WRP_MODE_SUNXI) &lt; 0)         exit(EXIT_FAILURE);         pinMode(LED_1, OUTPUT);     pinMode(LED_2, OUTPUT);          pthread_t thread_led1, thread_led2;     pthread_create(&amp;thread_led1, NULL, led1_blink, NULL);     pthread_create(&amp;thread_led2, NULL, led2_blink, NULL); }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 thread_led1 \u0438 thread_led2 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0442\u043e\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 pthread_create. \u0415\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430:<\/p>\n<pre><code class=\"cpp\">int pthread_create(pthread_t *thread, const pthread_attr_t *attr,     void *(*start_routine)(void*), void *arg);<\/code><\/pre>\n<ol>\n<li>\n<p>*thread \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0438\u043f\u0430 pthread_t, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>*attr \u2014 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u043e\u0442\u043e\u043a\u0430. \u0415\u0441\u043b\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0443\u043a\u0430\u0437\u0430\u043d \u043a\u0430\u043a NULL, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e;<\/p>\n<\/li>\n<li>\n<p>*(*start_routine)(void*) \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>*arg \u2014 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e start_routine \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 start_routine. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043a\u0430\u043a NULL<\/p>\n<\/li>\n<\/ol>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 MAIN_WIRINGRP \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 loop, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0442, \u043d\u0435 \u043d\u0443\u0436\u043d\u044b\u0439 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0446\u0438\u043a\u043b \u043d\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u043b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0421 \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u043c\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u0446\u0438\u043a\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443, \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u0443\u044e\u0442\u0441\u044f:<\/p>\n<pre><code class=\"cpp\">void loop() {     delay(300); }<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0430\u0445, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0434\u0432\u0430 \u043d\u0430\u0448\u0438\u0445 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430, \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u044d\u0442\u0438 \u0432\u044b\u0432\u043e\u0434\u044b \u0432 \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c:<\/p>\n<pre><code class=\"cpp\">ONDESTROY() {     digitalWrite(LED_1, LOW);     digitalWrite(LED_2, LOW);     pinMode(LED_1, DISABLE);     pinMode(LED_2, DISABLE);     releaseWiringRP();     exit(0); }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"_Toc165629858\" id=\"_Toc165629858\"><\/a><\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u043e\u0439<\/h2>\n<p>\u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 button.c, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u0434\u0432\u0443\u043c\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0438 (\u043b\u0438\u0441\u0442\u0438\u043d\u0433 4).<\/p>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 4. <\/strong><a href=\"https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/button.c\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/button.c<\/strong><\/a><\/p>\n<pre><code class=\"cpp\">#include &lt;stdio.h> #include &lt;stdlib.h> #include &lt;stdbool.h> #include \"wiringRP.h\"  const int LED_1 = 6; const int LED_2 = 7; const int BUTTON_1 = 10;  void setup() {     if(setupWiringRP(WRP_MODE_SUNXI) &lt; 0)         exit(EXIT_FAILURE);      pinMode(LED_1, OUTPUT);      pinMode(LED_2, OUTPUT);      pinMode(BUTTON_1, INPUT_PULLUP); }  void loop() { if (digitalRead(BUTTON_1)) {         delay(100);         if (digitalRead(BUTTON_1)) {             digitalWrite(LED_1, HIGH); digitalWrite(LED_2, LOW);         }     } else {         digitalWrite(LED_1, LOW);         digitalWrite(LED_2, HIGH);     } }  ONDESTROY(){     digitalWrite(LED_1, LOW);     pinMode(LED_1, DISABLE);     pinMode(LED_2, DISABLE);     pinMode(BUTTON_1, DISABLE);     releaseWiringRP();     exit(0); }  MAIN_WIRINGRP();<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0444\u0430\u0439\u043b\u043e\u043c CMakeLists.txt (\u043b\u0438\u0441\u0442\u0438\u043d\u0433 5).<\/p>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 5. <\/strong><a href=\"https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/CMakeLists.txt\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/CMakeLists.txt<\/strong><\/a><\/p>\n<pre><code class=\"bash\">cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR) project(\"multiBlink\") add_subdirectory(..\/wiring-repka\/wiringRP ${CMAKE_BINARY_DIR}\/wrp) add_executable(multiBlink mblink.c) target_link_libraries(multiBlink PRIVATE wiringrp) add_executable(button button.c) target_link_libraries(button PRIVATE wiringrp)<\/code><\/pre>\n<p>\u0412 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 \u0438 \u0434\u043b\u044f \u043a\u043d\u043e\u043f\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">const int LED_1 = 6; const int LED_2 = 7; const int BUTTON_1 = 10;<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0437\u0430\u0434\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u0438\u043d\u043e\u0432, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b, \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430, \u0430 \u043f\u0438\u043d\u0430,\u00a0 \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u2014 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043e\u0434\u0442\u044f\u0436\u043a\u0438 \u00ab\u0432\u0435\u0440\u0445\u00bb:<\/p>\n<pre><code class=\"cpp\">pinMode(LED_1, OUTPUT); pinMode(LED_2, OUTPUT); pinMode(BUTTON_1, INPUT_PULLUP);<\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043c\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 \u0441 \u0437\u0435\u043c\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 \u043d\u0430 240 \u041e\u043c, <a href=\"https:\/\/ph0en1x.net\/86-raspberry-pi-znakomstvo-s-gpio-perekluchatel-i-svetodiod.html\" rel=\"noopener noreferrer nofollow\">\u0430 \u043d\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e<\/a>. <\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u043a \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u043f\u0438\u043d\u0443 15. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u00ab\u043d\u0430\u0432\u0435\u0440\u0445\u00bb \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 \u043d\u0430 10\u041a\u041e\u043c, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a +3.3 \u0412. \u042d\u0442\u043e \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u043f\u0438\u043d\u0435 1 (\u0440\u0438\u0441. 9).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/1d5\/4c1\/67a\/1d54c167ad4f2e1a5bde81344abb4e89.jpg\" alt=\"\u0420\u0438\u0441. 9. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430.\" title=\"\u0420\u0438\u0441. 9. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430.\" width=\"1588\" height=\"1034\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d5\/4c1\/67a\/1d54c167ad4f2e1a5bde81344abb4e89.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 9. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f loop \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435. \u041e\u043d\u0430 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 digitalRead, \u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430\u0436\u0430\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u0438\u043b\u0438 \u043e\u0442\u043f\u0443\u0449\u0435\u043d\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">void loop() { if (digitalRead(BUTTON_1)) {         delay(100);         if (digitalRead(BUTTON_1)) {             digitalWrite(LED_1, HIGH); digitalWrite(LED_2, LOW);         }     } else {         digitalWrite(LED_1, LOW);         digitalWrite(LED_2, HIGH);     } }<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u0438\u043d\u0430\u043c\u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 \u0438 \u043a\u043d\u043e\u043f\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP:<\/p>\n<pre><code class=\"cpp\">ONDESTROY(){     digitalWrite(LED_1, LOW);     pinMode(LED_1, DISABLE);     pinMode(LED_2, DISABLE);     pinMode(BUTTON_1, DISABLE);     releaseWiringRP();     exit(0); }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"_Toc165629859\" id=\"_Toc165629859\"><\/a><\/p>\n<h2>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0438 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438<\/h2>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 WiringRP \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 <a href=\"https:\/\/repka-pi.ru\/project_documentation\/docs\/project_docs\/programing-library\/wiring-rp\/wiringrp_api\/wrp-irq\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f<\/a>, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u0445.<\/p>\n<p>\u0412 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 6 \u043c\u044b \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b mbutton.c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 10, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0432\u0443\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438.<\/p>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 6. <\/strong><a href=\"https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/mbutton.c\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/mbutton.c<\/strong><\/a><\/p>\n<pre><code class=\"cpp\">#include &lt;stdio.h> #include &lt;stdlib.h> #include &lt;stdbool.h> #include &lt;pthread.h> #include \"wiringRP.h\" #include \"event_gpio.h\"  const int LED_1 = 6; const int LED_2 = 7; const int BUTTON_1 = 10; bool LED_1_ON = false; bool LED_2_ON = false; pthread_t thread_led1, thread_led2;  void pushButton1(__u32 event, __u64 time);  void* led1_blink(void* arg) {     for (int i = 0; i &lt; 3; ++i) {         digitalWrite(LED_1, HIGH);         delay(1000);         digitalWrite(LED_1, LOW);         delay(500);     }     pthread_exit(NULL); }  void* led2_blink(void* arg) {     for (int i = 0; i &lt; 5; ++i) {         digitalWrite(LED_2, HIGH);         delay(300);         digitalWrite(LED_2, LOW);         delay(150);     }     pthread_exit(NULL); }  void pushButton1(__u32 event, __u64 time) {     printf(\"Button 1 - is %s, timestamp: %lld\\n\", event == 1 ? \"RISING\" : \"FALLING\", time);     delay(100);      if(event &amp;&amp; digitalRead(BUTTON_1)) {       pthread_create(&amp;thread_led1, NULL, led1_blink, NULL);   pthread_create(&amp;thread_led2, NULL, led2_blink, NULL); } }  void setup() {     if (setupWiringRP(WRP_MODE_SUNXI) &lt; 0)         exit(EXIT_FAILURE);     pinMode(LED_1, OUTPUT);     pinMode(LED_2, OUTPUT);     pinMode(BUTTON_1, INPUT_PULLUP);     interruptCreate(BUTTON_1, pushButton1); }  void loop() { delay(50); }  ONDESTROY() {     digitalWrite(LED_1, LOW);     digitalWrite(LED_2, LOW);     pinMode(LED_1, DISABLE);     pinMode(LED_2, DISABLE);     pinMode(BUTTON_1, DISABLE);     interruptStopAll();     releaseWiringRP();     exit(0); }  MAIN_WIRINGRP();<\/code><\/pre>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f setup \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 WiringRP, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 \u0432 \u0440\u0435\u0436\u0438\u043c OUTPUT, \u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 \u2014 \u0432 \u0440\u0435\u0436\u0438\u043c INPUT_PULLUP:<\/p>\n<pre><code class=\"cpp\">if (setupWiringRP(WRP_MODE_SUNXI) &lt; 0)     exit(EXIT_FAILURE); pinMode(LED_1, OUTPUT); pinMode(LED_2, OUTPUT); pinMode(BUTTON_1, INPUT_PULLUP);<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 interruptCreate \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 BUTTON_1 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 pushButton1:<\/p>\n<pre><code>interruptCreate(BUTTON_1, pushButton1);<\/code><\/pre>\n<p>\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0438 \u0448\u0442\u0430\u043c\u043f \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0430 100 \u043c\u0441 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0434\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043c\u0438\u0433\u0430\u044e\u0449\u0438\u0445 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438:<\/p>\n<pre><code class=\"cpp\">void pushButton1(__u32 event, __u64 time) {     printf(\"Button 1 - is %s, timestamp: %lld\\n\", event == 1 ? \"RISING\" : \"FALLING\", time);     delay(100);     if(event &amp;&amp; digitalRead(BUTTON_1)) {        pthread_create(&amp;thread_led1, NULL, led1_blink, NULL);        pthread_create(&amp;thread_led2, NULL, led2_blink, NULL);     } }<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 led1_blink \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 LED_1 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 pthread_exit:<\/p>\n<pre><code class=\"cpp\">void* led1_blink(void* arg) {     for (int i = 0; i &lt; 3; ++i) {         digitalWrite(LED_1, HIGH);         delay(1000);         digitalWrite(LED_1, LOW);         delay(500);     }     pthread_exit(NULL); }<\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f led2_blink \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c LED_2, \u043c\u0438\u0433\u0430\u044f \u043f\u044f\u0442\u044c \u0440\u0430\u0437 \u0434\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u041f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f interruptStopAll, \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445.<\/p>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b CMakeLists.txt, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 7.<\/p>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 7. <\/strong><a href=\"https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/CMakeLists.txt\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/CMakeLists.txt<\/strong><\/a><\/p>\n<pre><code class=\"bash\">cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR) project(\"multiBlink\")  add_subdirectory(..\/wiring-repka\/wiringRP ${CMAKE_BINARY_DIR}\/wrp)  add_executable(multiBlink mblink.c) target_link_libraries(multiBlink PRIVATE wiringrp)  add_executable(button button.c) target_link_libraries(button PRIVATE wiringrp)  add_executable(mbutton mbutton.c) target_link_libraries(mbutton PRIVATE wiringrp)<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 10 \u0434\u0432\u0443\u043c\u044f \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430\u043c\u0438 \u043a \u0437\u0435\u043c\u043b\u0435 (\u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 240 \u041e\u043c) \u0438 \u043a \u043b\u0438\u043d\u0438\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f +3.3 \u0412 (\u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 1 \u041a\u041e\u043c), \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0440\u0438\u0441. 9. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443, \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043c\u0438\u0433\u043d\u0435\u0442 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u043f\u044f\u0442\u044c \u0440\u0430\u0437. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b \u043d\u0430\u0447\u043d\u0443\u0442 \u043c\u0438\u0433\u0430\u0442\u044c \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u043e \u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0438 \u043c\u0438\u0433\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u0441\u044f. \u0412 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043b\u043e\u0433\u0438\u043a\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u0438 \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p><a class=\"anchor\" name=\"_Toc165629860\" id=\"_Toc165629860\"><\/a><\/p>\n<h2>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u043b\u0435 \u0438 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438 \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435<\/h2>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043a Repka Pi \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0440\u0435\u043b\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Robointellect Controller 001.<\/p>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u043b\u0435 \u0438 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 WiringRP, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445 \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<h3>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u043b\u0435<\/h3>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u043b\u0435, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u0440\u0438\u0441. 10 (\u043c\u043e\u0436\u043d\u043e \u043a\u0443\u043f\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 <a href=\"https:\/\/market.yandex.ru\/product--modul-rele-12v-4-kanala-elektromekhanicheskoe-s-optorazviazkoi\/1455980990?hid=7076558&amp;show-uid=17144869792299377906316001&amp;from=search&amp;text=%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5%20%D1%80%D0%B5%D0%BB%D0%B5%204%20%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%B0%2012%20%D0%B2%D0%BE%D0%BB%D1%8C%D1%82&amp;rs=eJxNUD1LA0EU3NWg54FwWMXYPKzSWJgQNRr1_ECwsxBEBN2DS2xERGKpXJlGEG0sUpxY2AZLo3gEbKxsxEZkRfwHgq03g4jN8JiZnRm2cNy9oh-0ksPpFJPWXYrqs5Ki3wRj8rjj9yncnXaKkX8L5wl41YA_-QKflMDLN5zygdtsI8GfhcdfgF8GwFgDv12k8_oGObvMeeIG9tol-keA9giMOMi0b9xTu6dK5yVbDNcWyVwxrc60MbbPAaMSmVWq0SR692aQ45LfZMsGeyvwxGd8uwzGPPNP-DP2HLy88O5n2iu2RWX-SYs5w_Tsc9UFnSHuuMn9p1DtOvM77UftBBNBWB0tj8-vuUOu42hPshnJeD25vrBaCw526lsFUXn1J7ri_heLFAcp6qwW7XXlen9FSJ7-AWIcm3Y%2C&amp;sku=101470654053&amp;cpa=1&amp;do-waremd5=a2rRNDa5Bq3qP0PdRLcyUA&amp;cpc=PT5b1ff4ut32I-iW4N0FFjfExNpTYmfi3W2JRj7lbtHRO9V05uVOW021WBylEP8V3Z-Q7mYrq9G560JEkQL6FcindVdoBFlSq6JzS_IH23DjJ-7ntv7WuD6aMyjW7caqam7Q-8Hsqyl9nvD_L7t8SZXRpMfcIcGmai5L3QPVTrn2NMmktjvvtSEXhpnJrPMbR-E6pfbaTWl-gt8Db6pQug%2C%2C&amp;cc=CjIxNzE0NDg2OTc4NzQwL2QwYzU2NTNiZTYxZWZjN2M2MTAyNTcxYjUxMTcwNjAwLzEvMRAHgH3m7QY%2C&amp;uniqueId=846730\" rel=\"noopener noreferrer nofollow\">\u042f\u043d\u0434\u0435\u043a\u0441.\u041c\u0430\u0440\u043a\u0435\u0442\u0435<\/a>), \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043a \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0435 \u043d\u0430 9 \u0412 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 10 \u041a\u043e\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/e3f\/23c\/612\/e3f23c612f13276f31816c1c8812a1ce.jpg\" alt=\"\u0420\u0438\u0441. 10. \u041c\u043e\u0434\u0443\u043b\u044c \u0440\u0435\u043b\u0435 \u043d\u0430 4 \u043a\u0430\u043d\u0430\u043b\u0430.\" title=\"\u0420\u0438\u0441. 10. \u041c\u043e\u0434\u0443\u043b\u044c \u0440\u0435\u043b\u0435 \u043d\u0430 4 \u043a\u0430\u043d\u0430\u043b\u0430.\" width=\"1108\" height=\"456\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e3f\/23c\/612\/e3f23c612f13276f31816c1c8812a1ce.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 10. \u041c\u043e\u0434\u0443\u043b\u044c \u0440\u0435\u043b\u0435 \u043d\u0430 4 \u043a\u0430\u043d\u0430\u043b\u0430.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u043b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441. 11.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/20a\/88a\/a96\/20a88aa961eac9ae46068ddaf2b81250.jpg\" alt=\"\u0420\u0438\u0441. 11. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 \u0440\u0435\u043b\u0435.\" title=\"\u0420\u0438\u0441. 11. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 \u0440\u0435\u043b\u0435.\" width=\"3000\" height=\"1938\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/20a\/88a\/a96\/20a88aa961eac9ae46068ddaf2b81250.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 11. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 \u0440\u0435\u043b\u0435.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u044b\u0432\u043e\u0434\u044b \u0440\u0435\u043b\u0435 DC+ \u0438 DC- \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a +5 \u0412 (\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 2 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 Repka Pi) \u0438 \u043a \u0437\u0435\u043c\u043b\u0435.<\/p>\n<p>\u0421\u0438\u0433\u043d\u0430\u043b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 IN4 \u0440\u0435\u043b\u0435 (\u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u0440\u0435\u043b\u0435 \u0438\u0437 \u0431\u043b\u043e\u043a\u0430) \u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 13 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. <\/p>\n<p>\u041d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u043c\u043a\u043d\u0443\u0442\u044b\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u0422\u04214 \u0438 COM4 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0433\u043e \u0440\u0435\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0443 \u0438 \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0435 \u043d\u0430 9 \u0412 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440 10 \u041a\u041e\u043c.<\/p>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 <a href=\"https:\/\/iarduino.ru\/lib\/tehnicheskoe-opisanie-rele-srd-05vdc-sl-c.-27115-single-relay-board-datasheet.pdf\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u0442\u0430\u0448\u0438\u0442\u043e\u043c \u043d\u0430 \u0440\u0435\u043b\u0435<\/a>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0435.<\/p>\n<h3>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Robointellect Controller 001<\/h3>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 <a href=\"https:\/\/rbs-computers.ru\/shim\" rel=\"noopener noreferrer nofollow\">Robointellect Controller 001<\/a>, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0431\u0430\u0437\u0435 \u0447\u0438\u043f\u0430 pca9685, \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e 16 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0428\u0418\u041c, \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434.<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043a Repka Pi \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 I2C \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0440\u0438\u0441. 12.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/c92\/c8a\/595\/c92c8a595793b8151eea50653cae2898.jpg\" alt=\"\u0420\u0438\u0441. 12. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Robointellect Controller 001 \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 I2C \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 Repka Pi.\" title=\"\u0420\u0438\u0441. 12. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Robointellect Controller 001 \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 I2C \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 Repka Pi.\" width=\"2301\" height=\"2435\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c92\/c8a\/595\/c92c8a595793b8151eea50653cae2898.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 12. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Robointellect Controller 001 \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 I2C \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 Repka Pi.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u044b\u0432\u043e\u0434\u044b <strong>GND<\/strong> \u0438 <strong>VCC 5V<\/strong> \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Robointellect Controller 001 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a \u0437\u0435\u043c\u043b\u0435 \u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 +5\u00a0\u0412 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 Repka Pi.<\/p>\n<p>\u0412\u044b\u0432\u043e\u0434\u044b <strong>SDA<\/strong> \u0438 <strong>SCL<\/strong> \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Robointellect Controller 001 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c 3 \u0438 5 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 Repka Pi.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u0440\u0430\u0437\u044a\u0435\u043c <strong>DC IN<\/strong> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0431\u043b\u043e\u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Robointellect Controller 001.<\/p>\n<p>\u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441. 13.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/eed\/901\/b6b\/eed901b6b5a3c61419421de1a280a4d2.jpg\" alt=\"\u0420\u0438\u0441. 13. \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430.\" title=\"\u0420\u0438\u0441. 13. \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430.\" width=\"2888\" height=\"2532\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eed\/901\/b6b\/eed901b6b5a3c61419421de1a280a4d2.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption><strong>\u0420\u0438\u0441. 13. \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430.<\/strong><\/figcaption><\/div>\n<\/figure>\n<h3>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 mtool.c<\/h3>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438, \u0440\u0435\u043b\u0435 \u0438 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438 \u043c\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 mtool.c (\u043b\u0438\u0441\u0442\u0438\u043d\u0433 8). \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435.<\/p>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 8. <\/strong><a href=\"https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/mtool.c\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/mtool.c<\/strong><\/a><\/p>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u044d\u0442\u043e\u0439 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b CMakeLists, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 9.<\/p>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 9. <\/strong><a href=\"https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/CMakeLists.txt\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/raw.githubusercontent.com\/AlexandreFrolov\/rover_connect2\/main\/wiring-repka-pi\/mblink\/CMakeLists.txt<\/strong><\/a><\/p>\n<pre><code class=\"bash\">cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR) project(\"multiBlink\") add_subdirectory(..\/wiring-repka\/wiringRP ${CMAKE_BINARY_DIR}\/wrp) add_executable(multiBlink mblink.c) target_link_libraries(multiBlink PRIVATE wiringrp) add_executable(button button.c) target_link_libraries(button PRIVATE wiringrp) add_executable(mbutton mbutton.c) target_link_libraries(mbutton PRIVATE wiringrp) add_executable(mtool mtool.c) target_link_libraries(mtool PRIVATE wiringrp)<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 mtool.c.<\/p>\n<h3>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f setup:<\/p>\n<pre><code class=\"cpp\">void setup() {     if (setupWiringRP(WRP_MODE_SUNXI) &lt; 0)         exit(EXIT_FAILURE);     pinMode(LED_1, OUTPUT);     pinMode(LED_2, OUTPUT);     pinMode(BUTTON_1, INPUT_PULLUP);     interruptCreate(BUTTON_1, pushButton1);      pca9685_fd = pca9685Setup(I2C1_BUS, pca9685Address, HERTZ);     if (pca9685_fd &lt; 0)         exit(EXIT_FAILURE);     pca9685PwmReset(pca9685_fd);     setNeutralPos();     delay(1000); }<\/code><\/pre>\n<p>\u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 \u0438 \u043a\u043d\u043e\u043f\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f pushButton1 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 BUTTON_1.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pca9685Setup \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Robointellect Controller 001. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 I2C1_BUS \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0448\u0438\u043d\u0430 I2C, \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 pca9685Address \u043d\u0430 \u044d\u0442\u043e\u0439 \u0448\u0438\u043d\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 HERTZ, \u0440\u0430\u0432\u043d\u0430\u044f \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 50 \u0413\u0446.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0444\u0443\u043d\u043a\u0446\u0438\u044f setup \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e pca9685PwmReset \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u044b \u0432 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 setNeutralPos:<\/p>\n<pre><code class=\"cpp\">void setNeutralPos() {     float millis = 1.5f;     int tick = calcTicks(millis, HERTZ);     pca9685PwmWrite(pca9685_fd, pin_1, 0, tick);     pca9685PwmWrite(pca9685_fd, pin_2, 0, tick);     tick = calcTicks(1.56f, HERTZ);     pca9685PwmWrite(pca9685_fd, pin_3, 0, tick); }<\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 setup \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u043f\u0430\u0443\u0437\u0430 \u043d\u0430 1 \u0441\u0435\u043a. <\/p>\n<p>\u0414\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432 \u0441 \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c \u0443\u0433\u043b\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e 1.5 \u043c\u0441. <\/p>\n<p>\u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f setNeutralPos \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 calcTicks \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 (ticks) \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043b\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 millis \u043f\u0440\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 HERTZ.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pca9685PwmWrite \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pca9685PwmWrite \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pca9685Setup. \u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u043a\u0430\u043d\u0430\u043b\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 (\u043e\u0442 0 \u0434\u043e 15), \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0438 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u0432 4096 \u0447\u0430\u0441\u0442\u044f\u0445 (\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0442\u0430\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438).<\/p>\n<p>\u0414\u043b\u044f \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432 SG90 \u0438 MG90S \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u0438\u043d\u0430 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 1.5 \u043c\u0441. \u0427\u0442\u043e \u0436\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f DS04-NFC, \u0442\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0435\u0433\u043e \u0432\u0430\u043b\u0430 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043a\u043e\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 calcTicks \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1.6.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 pca9685 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0443, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e\u00a0 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 calcTicks, \u0434\u043e \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0422\u0430\u043a\u0436\u0435 \u0432 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0435 DS04-NFC \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0442\u043e\u0440 \u0434\u043b\u044f \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0438.<\/p>\n<p>\u041a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 calcTicks \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"cpp\">int calcTicks(float impulseMs, float hertz) {     float cycleMs = 1000.0f \/ hertz;     return (int) ((float)MAX_PWM * impulseMs \/ cycleMs + 0.5f); }<\/code><\/pre>\n<p>\u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f cycleMs \u2014 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 (\u0432 \u043c\u0441) \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b. \u0414\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b 50 \u0413\u0446 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0446\u0438\u043a\u043b\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 20 \u043c\u0441.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 impulseMs, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432, \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 MAX_PWM \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0446\u0438\u043a\u043b\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 4096, \u0430 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0446\u0438\u043a\u043b\u0430 \u0440\u0430\u0432\u043d\u0430 20 \u043c\u0441.<\/p>\n<p>\u041a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f 0.5 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u0442\u0435\u043c \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0446\u0435\u043b\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0446\u0435\u043b\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<h3>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 setup \u043c\u0430\u043a\u0440\u043e\u0441 MAIN_WIRINGRP \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b loop:<\/p>\n<pre><code class=\"cpp\">void loop() {   delay(100); }<\/code><\/pre>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u0440\u043e\u043c\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438, \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f. \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e delay \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430.<\/p>\n<h3>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 BUTTON_1, \u0430 \u043f\u043e\u0442\u043e\u043c \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0435, \u0444\u0443\u043d\u043a\u0446\u0438\u044f pushButton1 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043f\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 pthread_create:<\/p>\n<pre><code class=\"cpp\">void pushButton1(__u32 event, __u64 time) {     printf(\"Button 1 - is %s, timestamp: %lld\\n\", event == 1 ? \"RISING\" : \"FALLING\", time);     delay(100);      if(event &amp;&amp; digitalRead(BUTTON_1)) {        pthread_create(&amp;thread_led1, NULL, led1_blink, NULL);        pthread_create(&amp;thread_led2, NULL, led2_blink, NULL);        pthread_create(&amp;thread_servo1, NULL, thread_servo1_rotate, NULL);        pthread_create(&amp;thread_servo2, NULL, thread_servo2_rotate, NULL);        pthread_create(&amp;thread_servo3, NULL, thread_servo3_rotate, NULL); } }<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u044b thread_led1 \u0438 thread_led2 \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 \u2014 \u043e\u043d\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u043c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0432\u043e\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c. \u041d\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 thread_led1 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u043b\u0435 RELAY_1:<\/p>\n<pre><code class=\"cpp\">void* led1_blink(void* arg) {     pinMode(RELAY_1, OUTPUT);     delay(100);     digitalWrite(RELAY_1, HIGH);      for (int i = 0; i &lt; 3; ++i) {         digitalWrite(LED_1, HIGH);         delay(1000);         digitalWrite(LED_1, LOW);         delay(500);     }     digitalWrite(RELAY_1, LOW);     pthread_exit(NULL); }<\/code><\/pre>\n<p>\u0420\u0435\u043b\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u044b thread_servo1_rotate, thread_servo2_rotate \u0438 thread_servo3_rotate \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432.<\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 thread_servo1_rotate, \u0442\u043e \u043e\u043d \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u043b \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u0435, \u043e\u0442 0\u2070 \u0434\u043e 180\u2070:<\/p>\n<pre><code class=\"cpp\">void* thread_servo1_rotate(void* arg) { while (degree_1 &lt; 180) { float millis = mapf(degree_1, 0.0f, 180.0f, 0.5f, 2.5f); printf(\"degree_1: %.2f, millis: %.2f\\n\", degree_1, millis); int tick = calcTicks(millis, HERTZ); printf(\"tick: %d\\n\", tick); pca9685PwmWrite(pca9685_fd, pin_1, 0, tick); delayMicroseconds(50); degree_1 += dir_1 == 1 ? 0.1f : -0.1f; if (degree_1 > 180) { degree_1 = 180; dir_1 = 0; } else if (degree_1 &lt; 0) { degree_1 = 0; dir_1 = 1; } } degree_1 = 0;   pthread_exit(NULL); }<\/code><\/pre>\n<p>\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0443\u0433\u043b\u043e\u0432 \u043e\u0442 0\u2070 \u0434\u043e 180\u2070 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u043e\u0442 0.5 \u0434\u043e 2.5 \u043c\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 mapf. \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pca9685PwmWrite \u0434\u043b\u044f \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0432\u0430\u043b\u0430 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430. <\/p>\n<p>\u0412\u0441\u043b\u0435\u0434 \u0437\u0430 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0430 50 \u043c\u043a\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 delayMicroseconds, \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0433\u043b\u0430 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0435\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 degree_1.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0446\u0438\u043a\u043b while \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u0443\u0433\u043b\u0430 180\u2070, \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0443\u0433\u043e\u043b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u044b\u043c \u043d\u0443\u043b\u044e, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 dir_1 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u0430\u043b\u0430.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 thread_servo2_rotate \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043d\u043e \u0432\u044b\u0434\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043d\u0430 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a \u043f\u043e\u0440\u0442\u0443 pin_2 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 thread_servo3_rotate:<\/p>\n<pre><code class=\"cpp\">void* thread_servo3_rotate(void* arg) { int tick; delay(1000); for (int i = 0; i &lt; 3; ++i) { tick = calcTicks(1.0f, HERTZ); pca9685PwmWrite(pca9685_fd, pin_3, 0, tick); delay(2000); tick = calcTicks(2.0f, HERTZ); pca9685PwmWrite(pca9685_fd, pin_3, 0, tick); delay(2000); tick = calcTicks(1.6f, HERTZ); pca9685PwmWrite(pca9685_fd, pin_3, 0, tick); }       pthread_exit(NULL); }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 1 \u0441\u0435\u043a \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0432\u0430\u043b\u0430 \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0437\u0430\u0442\u0435\u043c \u0432 \u0434\u0440\u0443\u0433\u0443\u044e, \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u0430\u043b \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 <a href=\"https:\/\/youtube.com\/shorts\/nmiQjgZbZ4Y\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435<\/a> \u043d\u0430 YouTube.<\/p>\n<p><a class=\"anchor\" name=\"_Toc165629861\" id=\"_Toc165629861\"><\/a><\/p>\n<h2>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p><a href=\"https:\/\/repka-pi.ru\/project_documentation\/docs\/category\/%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0-wiringrp\/\" rel=\"noopener noreferrer nofollow\">\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 WiringRP \u2014 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 API<\/a><\/p>\n<p><a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\" rel=\"noopener noreferrer nofollow\">\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 WiringRP \u2014 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 GitFlic<\/a><\/p>\n<p><a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\/file\/?file=examples&amp;branch=master\" rel=\"noopener noreferrer nofollow\">\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 WiringRP \u2014 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 GitFlic<\/a><\/p>\n<p><a href=\"https:\/\/repka-pi.ru\/forum\/threads\/23\/\" rel=\"noopener noreferrer nofollow\">\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 WiringRP<\/a><\/p>\n<p><a href=\"https:\/\/repka-pi.ru\/#periphery_block\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 40 pin \u0440\u0430\u0437\u044a\u0451\u043c\u0430 Repka Pi<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/326138\/\" rel=\"noopener noreferrer nofollow\">Pthreads: \u041f\u043e\u0442\u043e\u043a\u0438 \u0432 \u0440\u0443\u0441\u043b\u0435 POSIX<\/a><\/p>\n<p><a href=\"https:\/\/ph0en1x.net\/86-raspberry-pi-znakomstvo-s-gpio-perekluchatel-i-svetodiod.html\" rel=\"noopener noreferrer nofollow\">\u0418\u0437\u0443\u0447\u0430\u0435\u043c GPIO \u0432 Raspberry Pi, \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0441\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u0438 \u043a\u043d\u043e\u043f\u043a\u043e\u0439<\/a><\/p>\n<p><a href=\"https:\/\/repka-pi.ru\/blog\/post\/24\" rel=\"noopener noreferrer nofollow\">Repka Pi \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438, \u0427\u0410\u0421\u0422\u042c 1. \u0421\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u044b &#8212; \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/a><\/p>\n<p><a href=\"https:\/\/repka-pi.ru\/blog\/post\/31\" rel=\"noopener noreferrer nofollow\">Repka Pi \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438, \u0427\u0410\u0421\u0422\u042c 2. \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Robointellect Controller 001 \u0438 RISDK<\/a><\/p>\n<p><a href=\"https:\/\/repka-pi.ru\/blog\/post\/36\" rel=\"noopener noreferrer nofollow\">Repka Pi \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438, \u0427\u0410\u0421\u0422\u042c 4. \u041f\u0440\u044f\u043c\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e I2C \u0428\u0418\u041c\/PWM \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438 \u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438 \u0441 Repka Pi \u0447\u0435\u0440\u0435\u0437 Robointellect Controller 001<\/a><\/p>\n<p><a class=\"anchor\" name=\"_Toc165629862\" id=\"_Toc165629862\"><\/a><\/p>\n<h2>\u0418\u0442\u043e\u0433\u0438<\/h2>\n<p>\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u043d\u0430\u0448\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0432\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u043e\u0440\u0442\u043e\u043c GPIO \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 Repka Pi \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP. <\/p>\n<p>\u0412\u044b \u0441\u043a\u0430\u0447\u0430\u043b\u0438 \u043e\u0431\u0440\u0430\u0437 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Repka OS RT Real Time, \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0435\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 WiringRP \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438 \u044f\u0434\u0440\u043e \u041e\u0421.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 blink.c \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 WiringRP, \u043c\u0438\u0433\u0430\u044e\u0449\u0443\u044e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 GPIO.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0443\u044e \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 mblink.c, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u0438\u0433\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 button.c \u0432\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043a GPIO. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u0438 \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<p>\u0418 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0441\u0442\u0430\u0442\u044c\u0435\u0439, \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043a \u043c\u0430\u043a\u0435\u0442\u0443 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Robointellect Controller 001, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0447\u0438\u043f\u0430 pca9685. \u041a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430, \u0430 \u043a \u0440\u0435\u043b\u0435 \u2014 \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0443 \u043d\u0430 9 \u0412 \u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430 \u043f\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e. <\/p>\n<p>\u0414\u0432\u0430 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438 \u0438 \u0440\u0435\u043b\u0435, \u0430 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0442\u0440\u0438 \u2014 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0441\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u043b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0433\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u041f\u0435\u043b\u044c\u0442\u044c\u0435, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443, \u043b\u0438\u0431\u043e \u043a\u0430\u043a\u043e\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u0441\u0438\u043b\u044c\u043d\u043e\u0442\u043e\u0447\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<p>\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u0442\u0430\u043a\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043b\u043e\u0433\u0438\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<\/p>\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\/812503\/\"> https:\/\/habr.com\/ru\/articles\/812503\/<\/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<figure class=\"full-width\"><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0449\u0435\u0442\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 <strong>GPIO<\/strong> \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 <strong>Repka Pi<\/strong> \u0432 \u0432\u0438\u0434\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0430 \u0421\u0438, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <strong>WiringRP<\/strong>. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441 \u0435\u0435 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0435 \u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438, \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438 \u0438 \u0440\u0435\u043b\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 GPIO.<\/p>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c WiringRP \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438. \u042d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0435 \u0438 \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 IoT, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430.<\/p>\n<p>\u0410\u0432\u0442\u043e\u0440 \u0432\u044b\u0440\u0430\u0436\u0430\u0435\u0442 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP \u0421\u0435\u0440\u0433\u0435\u044e \u0428\u0430\u043b\u0430\u043f\u043e\u0432\u0443 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p><a href=\"#_Toc165629853\" rel=\"noopener noreferrer nofollow\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 WiringRP<\/a><\/p>\n<p><a href=\"#_Toc165629854\" rel=\"noopener noreferrer nofollow\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 WiringRP<\/a><\/p>\n<p><a href=\"#_Toc165629855\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP<\/a><\/p>\n<p><a href=\"#_Toc165629856\" rel=\"noopener noreferrer nofollow\">\u041c\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c<\/a><\/p>\n<p><a href=\"#_Toc165629857\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c multiBlink<\/a><\/p>\n<p><a href=\"#_Toc165629858\" rel=\"noopener noreferrer nofollow\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u043e\u0439<\/a><\/p>\n<p><a href=\"#_Toc165629859\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0438 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438<\/a><\/p>\n<p><a href=\"#_Toc165629860\" rel=\"noopener noreferrer nofollow\">\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u043b\u0435 \u0438 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438 \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435<\/a><\/p>\n<p><a href=\"#_Toc165629861\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/a><\/p>\n<p><a href=\"#_Toc165629862\" rel=\"noopener noreferrer nofollow\">\u0418\u0442\u043e\u0433\u0438<\/a><\/p>\n<p><a class=\"anchor\" name=\"_Toc165629853\" id=\"_Toc165629853\"><\/a><\/p>\n<h2>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 WiringRP<\/h2>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/repka-pi.ru\/project_documentation\/docs\/category\/%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0-wiringrp\" rel=\"noopener noreferrer nofollow\">WiringRP<\/a> \u043c\u043e\u0436\u0435\u0442 \u043c\u043d\u043e\u0433\u043e\u0435. \u042d\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 GPIO, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043d\u0438\u0445, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u043f\u043e\u0434\u0442\u044f\u0436\u043a\u0438 \u00ab\u0432\u043d\u0438\u0437\u00bb \u0438 \u00ab\u0432\u0432\u0435\u0440\u0445\u00bb, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 Repka Pi, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0448\u0438\u0440\u043e\u0442\u043d\u043e-\u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u0438 \u0428\u0418\u041c (Pulse Width Modulation, PWM).<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WiringRP \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0428\u0418\u041c, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0432 SoC Allwinner H5, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c UART, I2C \u0438 SPI, \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u0440\u0430\u0437\u044a\u0435\u043c GPIO.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0443, \u043e \u0447\u0435\u043c \u043c\u044b \u0435\u0449\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c.<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 WiringRP \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e <a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\/file\/?file=examples&amp;branch=master\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u041f\u041e \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0422\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b <a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b<\/a> \u0438 \u0441\u0430\u043c\u043e\u0439 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<p><a class=\"anchor\" name=\"_Toc165629854\" id=\"_Toc165629854\"><\/a><\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 WiringRP<\/h2>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c WiringRP \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (\u041e\u0421) Repka OS RT (Real Time). \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c WiringRP \u043d\u0430 Repka Pi, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u041e\u0421 Repka OS RT, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u041e\u0421.<\/p>\n<h3>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 Repka OS RT<\/h3>\n<p>\u0421\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u043e\u0431\u0440\u0430\u0437 \u044d\u0442\u043e\u0439 \u041e\u0421 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <a href=\"https:\/\/repka-pi.ru\/#operation-system-anchor\" rel=\"noopener noreferrer nofollow\">\u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Repka OS RT (Real Time) &#8212; \u041e\u0421 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/a>. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c: <a href=\"https:\/\/download.robointellect.ru\/arm64_ubuntu_20.04.6_desktop_RT_20.10.23_1.4.zip\" rel=\"noopener noreferrer nofollow\">1.3 \u0438 \u043c\u043b\u0430\u0434\u0448\u0435<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/download.robointellect.ru\/arm64_ubuntu_20.04.6_desktop_RT_20.10.23_ver-1.4.zip\" rel=\"noopener noreferrer nofollow\">1.4 \u0438 \u0432\u044b\u0448\u0435<\/a>.<\/p>\n<p>\u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 \u043d\u0430 \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <a href=\"https:\/\/github.com\/balena-io\/etcher\/blob\/master\/docs\/SUPPORT.md\" rel=\"noopener noreferrer nofollow\">balenaEtcher<\/a>, \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u0430\u0440\u0442\u0443 \u0432 Repka Pi.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 Repka OS RT \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"bash\"># apt update # apt upgrade<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:<\/p>\n<pre><code class=\"bash\"># apt-get install git gdb cmake<\/code><\/pre>\n<h3>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 \u041e\u0421<\/h3>\n<p>\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u041e\u0421.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b repka-config. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f repka-config-update.sh:<\/p>\n<pre><code class=\"bash\"># wget https:\/\/download.repka-pi.ru\/repka-tools\/repka-config\/repka-config-update.sh<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \/boot \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c repka-config.sh, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 repka-config.sh:<\/p>\n<pre><code class=\"bash\"># cp repka-config-update.sh \/boot\/repka-config.sh # chmod +x \/boot\/repka-config.sh<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"bash\"># cd \/boot  # .\/repka-config.sh<\/code><\/pre>\n<p>\u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u043a\u043d\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0438 \u043e\u0431\u044a\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0440\u0438\u0441. 1).<\/p>\n<figure class=\"\">\n<div><figcaption><strong>\u0420\u0438\u0441. 1. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0438 \u043e\u0431\u044a\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 <strong>Enter <\/strong>\u0438 \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 <strong>System Options<\/strong> \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u0440\u0438\u0441. 2).<\/p>\n<figure class=\"full-width\">\n<div><figcaption><strong>\u0420\u0438\u0441. 2. \u0412\u044b\u0431\u043e\u0440 System Options \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 <strong>S1 Select-kernel<\/strong> \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u044f\u0434\u0440\u0430 Linux (\u0440\u0438\u0441. 3).<\/p>\n<figure class=\"full-width\">\n<div><figcaption><strong>\u0420\u0438\u0441. 3. \u0421\u0442\u0440\u043e\u043a\u0430 S1 Select-kernel \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u044f\u0434\u0440\u0430 Linux.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0430\u043c \u0442\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044f\u0434\u0440\u043e Kernel-3 6.1.11-rt7-sunxi (\u0441 \u043f\u0430\u0442\u0447\u0435\u043c PREEMPT_RT), \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0440\u0438\u0441. 4.<\/p>\n<figure class=\"full-width\">\n<div><figcaption><strong>\u0420\u0438\u0441. 4. \u0412\u044b\u0431\u043e\u0440 \u044f\u0434\u0440\u0430 Kernel-3 6.1.11-rt7-sunxi (\u0441 \u043f\u0430\u0442\u0447\u0435\u043c PREEMPT_RT).<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u041e\u0421.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u044f\u0434\u0440\u0430:<\/p>\n<pre><code class=\"bash\"># uname -a Linux Repka-Pi 6.1.11-rt7 #2 SMP PREEMPT_RT Wed Jan 17 17:29:18 +04 2024 aarch64 aarch64 aarch64 GNU\/Linux   # uname -r 6.1.11-rt7<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u044f\u0434\u0440\u043e 6.1.11-rt7.<\/p>\n<p><a class=\"anchor\" name=\"_Toc165629855\" id=\"_Toc165629855\"><\/a><\/p>\n<h2>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP<\/h2>\n<p>\u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre><code class=\"bash\"># mkdir myprojects # cd myprojects # git clone https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka.git<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 wiring-repka:<\/p>\n<pre><code class=\"bash\"># cd wiring-repka<\/code><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 utility \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u041e\u0421:<\/p>\n<pre><code class=\"bash\"># cd utility  # cd repka-pi_1.2-1.6_kernel_6.1.11-rt<\/code><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u043c\u044b\u043c \u0444\u0430\u0439\u043b init_dev.sh \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0435\u0433\u043e:<\/p>\n<pre><code class=\"bash\"># chmod +x init_dev.sh # .\/init_dev.sh<\/code><\/pre>\n<p>\u041d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_gpio.ko \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c... chmod: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a '\/dev\/i2c-2': \u041d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 chmod: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a '\/dev\/spidev0.0': \u041d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 chmod: \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a '\/dev\/spidev1.0': \u041d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.<\/code><\/pre>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 \u044d\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u041e\u0421, \u0438 \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \/dev.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u0438\u043b\u0438 \u043f\u044f\u0442\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442:<\/p>\n<pre><code class=\"bash\">root@Repka-Pi:~\/wiring-repka\/utility\/repka-pi_1.2-1.6_kernel_6.1.11-rt# .\/init_dev.sh \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_gpio.ko \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c... \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430.<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 repka-config. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0430\u043c \u0441\u0442\u0440\u043e\u043a\u0443 <strong>Interface Options<\/strong>,\u00a0 \u0430 \u0437\u0430\u0442\u0435\u043c <strong>Frequency\/Pinout Options<\/strong>. \u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0438 \u0432\u0435\u0440\u0441\u0438\u044e \u0432\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u044b, \u0430 \u043f\u043e\u0442\u043e\u043c \u2014 \u043d\u0443\u0436\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438 (\u0440\u0438\u0441. 5).<\/p>\n<figure class=\"full-width\">\n<div><figcaption><strong>\u0420\u0438\u0441. 5. \u0412\u044b\u0431\u043e\u0440 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438.<\/strong><\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0428\u0418\u041c, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0432 SoC Allwinner H5, \u043d\u0443\u0436\u0435\u043d \u043f\u044f\u0442\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>\/root\/myprojects\/wiring-repka<\/code>, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432 \u043d\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u043c:<\/p>\n<pre><code class=\"bash\"># mkdir build &amp;&amp; cd build<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 CmakeLists.txt \u0441\u043d\u044f\u0442 \u0441\u0438\u043c\u0432\u043e\u043b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f # \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0438 `#add_subdirectory(driver). \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043e\u0434\u043d\u0430\u043a\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 wiring-repka\/utility.<\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<pre><code class=\"bash\"># cmake .. &amp;&amp; make<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \/root\/myprojects\/wiring-repka\/build\/bin \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 blink:<\/p>\n<pre><code class=\"bash\"># .\/blink<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043d\u0430\u0447\u043d\u0435\u0442 \u043c\u0438\u0433\u0430\u0442\u044c, \u0430 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f WiringRP... \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430: Repka-Pi3-H5 \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0426\u041f: 1.368 GHz SN: 82c00001e6cad661 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438: 1 \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0440\u0435\u0436\u0438\u043c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432: SUNXI \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_mmap... \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b GPIO \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 blink \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0441\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0436\u0438\u043c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0440\u0435\u0436\u0438\u043c\u0430 SUNXI \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b PHYSIC (\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 1\u201340) \u0438 WIRING (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430\u0434\u043f\u0438\u0441\u044f\u043c \u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c \u0432 Raspberry Pi \u0438 \u0448\u0438\u043b\u0434\u0430\u0445).<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u043e\u043a\u0430 \u043d\u043e\u0432\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 \u044f\u0434\u0440\u043e Repka OS, \u0438 <strong>\u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u043e\u0432\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 init_dev.sh<\/strong>. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b blink \u0434\u043e\u0441\u0442\u0443\u043f \u043a GPIO \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \/dev\/mem:<\/p>\n<pre><code class=\"bash\"># .\/blink \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f WiringRP... \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430: Repka-Pi3-H5 \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0426\u041f: 1.368 GHz SN: 82c00001e6cad661 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438: 1 \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0440\u0435\u0436\u0438\u043c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432: SUNXI \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_mmap... \u041e\u0448\u0438\u0431\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \/dev\/repka_gpio0 \u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \/dev\/mem \u041e\u0448\u0438\u0431\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \/dev\/repka_gpio1 \u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \/dev\/mem \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b GPIO \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/code><\/pre>\n<p>\u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u044f\u0434\u0440\u0430, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c init_dev.sh \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0445\u043e\u0442\u044f \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u041e\u0421 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \/root\/myprojects\/wiring-repka\/utility\/repka-pi_1.2-1.6_kernel_6.1.11-rt \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0430\u043c \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"bash\"># .\/init_dev.sh<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 blink:<\/p>\n<pre><code class=\"bash\"># \/root\/myprojects\/wiring-repka\/build\/bin\/blink \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f WiringRP... \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430: Repka-Pi3-H5 \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0426\u041f: 1.368 GHz SN: 82c00001e6cad661 \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0438: 1 \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0440\u0435\u0436\u0438\u043c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432: SUNXI \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 repka_mmap... \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b GPIO \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. <\/p>\n<p>\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 WiringRP \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 <a href=\"https:\/\/repka-pi.ru\/forum\/threads\/23\/\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0440\u0443\u043c\u0435 Repka-Pi<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"_Toc165629856\" id=\"_Toc165629856\"><\/a><\/p>\n<h2>\u041c\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c<\/h2>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b blink.c, \u043c\u0438\u0433\u0430\u044e\u0449\u0435\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c (\u043b\u0438\u0441\u0442\u0438\u043d\u0433 1). \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 WiringRP \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 <a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\/file\/?file=examples&amp;branch=master\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 examples<\/a>.<\/p>\n<p><strong>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 1. <\/strong><a href=\"https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\/blob\/raw?file=examples\/blink.c&amp;commit=8ae264b69c0eb8185a2c8431b4b5b0c3b374fc8a\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/gitflic.ru\/project\/repka_pi\/wiring-repka\/blob\/raw?file=examples\/blink.c&amp;commit=8ae264b69c0eb8185a2c8431b4b5b0c3b374fc8a<\/strong><\/a><\/p>\n<pre><code class=\"cpp\">#include &lt;stdio.h> #include &lt;stdlib.h> #include &lt;stdbool.h> #include \"wiringRP.h\"  \/\/ \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b const int LED_1 = 6;  void setup() {     \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a wiringRP     if(setupWiringRP(WRP_MODE_SUNXI) &lt; 0)         exit(EXIT_FAILURE);      \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432     pinMode(LED_1, OUTPUT); }  void loop() {     \/\/ \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b     digitalWrite(LED_1, HIGH);     delay(1000);     digitalWrite(LED_1, LOW);     delay(500); }  ONDESTROY(){     \/\/ \u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043d\u044f\u0442\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0438\u043d\u0430\u0445     digitalWrite(LED_1, LOW);     pinMode(LED_1, DISABLE);      \/\/ \u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a     releaseWiringRP();      exit(0);    \/\/ \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b }  MAIN_WIRINGRP();<\/code><\/pre>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 stdio.h, stdlib.h \u0438 stdbool.h. \u041f\u0435\u0440\u0432\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u2014 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 true \u0438 false.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b wiringRP.h, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 WiringRP.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435<\/p>\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-379822","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/379822","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=379822"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/379822\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=379822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=379822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=379822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}