{"id":490331,"date":"2026-08-09T21:26:31","date_gmt":"2026-08-09T21:26:31","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=490331"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=490331","title":{"rendered":"\u0420\u0430\u0437\u0431\u043e\u0440 \u043c\u0430\u0442-\u043c\u043e\u0434\u0435\u043b\u0438 \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u043d\u043e\u0433\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430-\u00ab\u043f\u0430\u0443\u043a\u0430\u00bb"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0425\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u0434 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0440\u043e\u0431\u043e\u0442\u0430-&#171;\u043f\u0430\u0443\u043a\u0430&#187;.<\/p>\n<p>\u0421\u0430\u043c\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 10-\u0442\u0438 \u043b\u0435\u0442, \u043d\u043e \u043b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439, \u0430 \u043d\u0435 \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 \u0443\u0433\u043b\u043e\u0432 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/510\/2e1\/265\/5102e126525f4d0a9cdd37c3cbd3a2ad.jpg\" alt=\"\u0420\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441 Printables\" title=\"\u0420\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441 Printables\" width=\"4160\" height=\"3120\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/510\/2e1\/265\/5102e126525f4d0a9cdd37c3cbd3a2ad.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/510\/2e1\/265\/5102e126525f4d0a9cdd37c3cbd3a2ad.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441 Printables<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430.<\/p>\n<p>\u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 <a href=\"https:\/\/www.printables.com\/model\/272529-spider-robotquad-robot-quadruped-sg90-by-regishsu\" rel=\"noopener noreferrer nofollow\">\u043e\u0434\u043d\u0443 \u0438\u0437 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439<\/a>, \u0438\u0449\u0430 \u0447\u0442\u043e \u0431\u044b \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u043d\u0430 \u0441\u0432\u0435\u0436\u0435\u043a\u0443\u043f\u043b\u0435\u043d\u043d\u043e\u043c 3D-\u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0435.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <a href=\"https:\/\/github.com\/regishsu\/SpiderRobot\" rel=\"noopener noreferrer nofollow\">GitHub \u0430\u0432\u0442\u043e\u0440\u0430<\/a>, \u043d\u043e \u0442\u0430\u043c \u043d\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043c \u043d\u0435\u0442 \u043a\u043e\u0434\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u0442\u044f\u0436\u043a\u043e\u0439 \u0432\u0438\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435: <a href=\"http:\/\/www.instructables.com\/id\/DIY-Spider-RobotQuad-robot-Quadruped\/\" rel=\"noopener noreferrer nofollow\">http:\/\/www.instructables.com\/id\/DIY-Spider-RobotQuad-robot-Quadruped\/<\/a> (\u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b &#8212; CDN \u043f\u043e\u043f\u0430\u043b\u0438 \u043f\u043e\u0434 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438, <a href=\"https:\/\/cloud.mail.ru\/public\/Y1nf\/mML48KAWc\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043f\u0438\u044f \u0437\u0434\u0435\u0441\u044c<\/a>)<\/p>\n<p>\u0425\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0440\u043e\u0431\u043e\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>4 &#171;\u043d\u043e\u0433\u0438&#187;<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f &#171;\u043d\u043e\u0433\u0430&#187; \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432 \u0442\u0438\u043f\u0430 SG90\/MG90<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 &#171;\u043c\u043e\u0437\u0433\u0430&#187; &#8212; Arduino Nano(\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0443\u044e \u0441 Arduino \u043f\u043b\u0430\u0442\u0443)<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u0434\u0430 \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u043e Bluetooth.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0441\u0430\u043c\u0438 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u044b \u0432 \u043f\u0438\u043a\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c, \u0442\u043e <strong>\u043a\u0440\u0430\u0439\u043d\u0435 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0449\u043d\u044b\u0439 DC-DC \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0437\u0430\u0440\u044f\u0434\u0430 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p>\u042f \u0436\u0435  <strong>\u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0430\u0434\u0440\u0443\u0433\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430.<\/p>\n<h2>\u0421\u043a\u0435\u043b\u0435\u0442\u044b \u0438 \u043a\u043e\u0441\u0442\u0438<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/01c\/c33\/e2b\/01cc33e2b891093d997470639e58d8c2.jpg\" alt=\"Coxa - Femur - Tibia\" title=\"Coxa - Femur - Tibia\" width=\"3706\" height=\"1977\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/01c\/c33\/e2b\/01cc33e2b891093d997470639e58d8c2.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/01c\/c33\/e2b\/01cc33e2b891093d997470639e58d8c2.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Coxa &#8212; Femur &#8212; Tibia<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u0440\u043e\u0431\u043e\u0442 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u043d \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0432\u043e\u0435\u0439 \u043e\u0441\u0438.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 &#171;\u043b\u0430\u043f\u0443&#187;:<\/p>\n<ul>\n<li>\n<p><strong>coxa <\/strong>&#8212; &#171;\u0441\u0443\u0441\u0442\u0430\u0432&#187;, \u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0433\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 \u043e\u0441\u0438 Z, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0437\u0430\u0434\u0430\u0435\u0442 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/p>\n<\/li>\n<li>\n<p><strong>femur <\/strong>&#8212; \u0441\u0440\u0435\u0434\u043d\u044f\u044f &#171;\u043a\u043e\u0441\u0442\u044c&#187;<\/p>\n<\/li>\n<li>\n<p><strong>tibia<\/strong> &#8212; \u043e\u043f\u043e\u0440\u043d\u0430\u044f \u043a\u043e\u0441\u0442\u044c, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u043e\u0431\u043e\u0442\u0430\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0441\u0442\u0435\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/208\/1c8\/895\/2081c8895ac4f532aa982369677b36af.jpg\" alt=\"\u0421\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u044b \u0432 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0421\u043a\u0435\u0442\u0447 legs_init\" title=\"\u0421\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u044b \u0432 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0421\u043a\u0435\u0442\u0447 legs_init\" width=\"2066\" height=\"1715\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/208\/1c8\/895\/2081c8895ac4f532aa982369677b36af.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/208\/1c8\/895\/2081c8895ac4f532aa982369677b36af.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u044b \u0432 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0421\u043a\u0435\u0442\u0447 legs_init<\/figcaption><\/div>\n<\/figure>\n<h2>\u0420\u0430\u0437\u0433\u0440\u0435\u0431\u0430\u044f \u043a\u043e\u0434<\/h2>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 &#171;\u0441\u043a\u0435\u0442\u0447\u0435\u0439&#187; &#8212; \u043c\u0430\u0441\u0441\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>setup<\/code> \u0438 <code>loop<\/code>, \u0438 \u0442.\u0434.<\/p>\n<p>\u0418\u0437 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>FlexiTimer2<\/code> \u0438 <code>Servo<\/code><\/p>\n<p>\u0411\u043b\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432:<\/p>\n<pre><code class=\"cpp\">\/\/define servos' ports\/\/\/ 4 \u043d\u043e\u0433\u0438 \u043f\u043e \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u044b\/\/\/ \u0422\u0443\u0442 \u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0433\u0430 \u0430\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u043f\u043e\u0440\u044f\u0434\u0435: {femur, tibia, coxa}\/\/\/ \u0427\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c\u0443 {coxa, femur, tibia}\/\/\/ \u0418 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0441\u0435\u0440\u0432 \u043a \u043f\u043b\u0430\u0442\u0435const int servo_pin[4][3] = { {2, 3, 4}, {5, 6, 7}, {8, 9, 10}, {11, 12, 13} };\/* Size of the robot ---------------------------------------------------------*\/\/\/ \u0414\u043b\u0438\u043d\u0430 femurconst float length_a = 55;\/\/ \u0414\u043b\u0438\u043d\u0430 tibiaconst float length_b = 77.5;\/\/ \u0414\u043b\u0438\u043d\u0430 coxaconst float length_c = 27.5;\/\/ ???const float length_side = 71;\/\/ \u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0438\u0437\u0430 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043e\u0442 \u043e\u0441\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f coxa-femurconst float z_absolute = -28;\/* Constants for movement ----------------------------------------------------*\/const float z_default = -50, z_up = -30, z_boot = z_absolute;const float x_default = 62, x_offset = 0;const float y_start = 0, y_step = 40;const float y_default = x_default;\/* variables for movement ----------------------------------------------------*\/\/\/ \u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0420\u0410\u0421\u0421\u0427\u0418\u0422\u0410\u041d\u041d\u041e\u0415 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435volatile float site_now[4][3];    \/\/real-time coordinates of the end of each leg\/\/ \u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435volatile float site_expect[4][3]; \/\/expected coordinates of the end of each leg\/\/ \u0434\u0435\u043b\u044c\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u0440\u0432\u044b \u0441\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043afloat temp_speed[4][3];   \/\/each axis' speed, needs to be recalculated before each movement<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0440\u043e\u0431\u043e\u0442\u0430:<\/p>\n<ul>\n<li>\n<p><code>set_site<\/code> &#8212; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u043e\u0440\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 &#171;\u043b\u0430\u043f\u044b&#187;, \u0440\u0430\u0441\u0447\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0435\u0439<\/p>\n<\/li>\n<li>\n<p><code>wait_all_reach<\/code> &#8212; \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a &#8212; \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p><code>servo_service<\/code> &#8212; \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u0435\u0440\u0435\u0441\u0447\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u0443\u0433\u043b\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 <code>set_site<\/code> \u0435\u0441\u0442\u044c \u0431\u0430\u0433: \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0434\u0435\u043b\u044c\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u043d\u043e\u0439 \u043d\u0443\u043b\u044e \u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f Infinity. \u041d\u043e &#171;\u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 \u043e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 float-\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438. \u041d\u0430 ATMega \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043e\u043d\u0430 \u0447\u0435\u043c \u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439.<\/p>\n<h2>\u0421\u0430\u043c\u043e\u0435 \u0432\u043a\u0443\u0441\u043d\u043e\u0435<\/h2>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>servo_service<\/code>, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 50Hz<\/p>\n<pre><code class=\"cpp\">#define E_DELTA 0.01void servo_service(void){  sei();  static float alpha, beta, gamma;  \/\/ \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0433\u0438  for (int i = 0; i &lt; 4; i++)  {    \/\/ \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u0439 \u0441\u0435\u0440\u0432\u044b    for (int j = 0; j &lt; 3; j++)    {      \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435      if (abs(site_now[i][j] - site_expect[i][j]) &lt; (abs(temp_speed[i][j])+E_DELTA))        site_now[i][j] = site_expect[i][j];      else        site_now[i][j] += temp_speed[i][j];    }    \/\/ \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432 \u0443\u0433\u043b\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430    cartesian_to_polar(alpha, beta, gamma, site_now[i][0], site_now[i][1], site_now[i][2]);    \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0433\u043b\u044b \u0441\u0435\u0440\u0432, \u0441\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u0438\u0445 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u043e\u043c\u0435\u0440\u0430 \u043d\u043e\u0433\u0438    polar_to_servo(i, alpha, beta, gamma);  }  rest_counter++;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0410 \u0442\u043e\u0447\u043d\u0435\u0435 \u0432 <code>cartesian_to_polar<\/code>:<\/p>\n<pre><code class=\"cpp\">void cartesian_to_polar(volatile float &amp;alpha, volatile float &amp;beta, volatile float &amp;gamma, volatile float x, volatile float y, volatile float z){  \/\/calculate w-z degree  float v, w;  w = (x &gt;= 0 ? 1 : -1) * (sqrt(pow(x, 2) + pow(y, 2)));  v = w - length_c;  alpha = atan2(z, v) + acos((pow(length_a, 2) - pow(length_b, 2) + pow(v, 2) + pow(z, 2)) \/ 2 \/ length_a \/ sqrt(pow(v, 2) + pow(z, 2)));  beta = acos((pow(length_a, 2) + pow(length_b, 2) - pow(v, 2) - pow(z, 2)) \/ 2 \/ length_a \/ length_b);  \/\/calculate x-y-z degree  gamma = (w &gt;= 0) ? atan2(y, x) : atan2(-y, -x);  \/\/trans degree pi-&gt;180  alpha = alpha \/ pi * 180;  beta = beta \/ pi * 180;  gamma = gamma \/ pi * 180;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/191\/ecb\/966\/191ecb9664dcb1ecc0b282f80deb3cdf.jpg\" alt=\"\u041a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442...\" title=\"\u041a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442...\" width=\"3120\" height=\"4160\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/191\/ecb\/966\/191ecb9664dcb1ecc0b282f80deb3cdf.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/191\/ecb\/966\/191ecb9664dcb1ecc0b282f80deb3cdf.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442&#8230;<\/figcaption><\/div>\n<\/figure>\n<div class=\"floating-image\">\n<p>\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u0434\u0430\u044e\u0442. \u041b\u0438\u0447\u043d\u043e \u044f \u0443\u0431\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043d\u0430 \u0440\u0430\u0437\u0431\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043a\u043e\u0434\u0430.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/369\/f75\/005\/369f7500514f0fa0d9bdc0d6395bdbe6.jpg\" alt=\"\u0410 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c?\" title=\"\u0410 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c?\" width=\"4160\" height=\"1647\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/369\/f75\/005\/369f7500514f0fa0d9bdc0d6395bdbe6.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/369\/f75\/005\/369f7500514f0fa0d9bdc0d6395bdbe6.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0410 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c?<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e \u0448\u0430\u0433\u0430\u043c:<\/p>\n<\/div>\n<ol>\n<li>\n<p>\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u0438\u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 w (\u043e\u0442 \u0446\u0435\u043d\u0442\u0440\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0434\u043e \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 XY)<\/p>\n<\/li>\n<li>\n<p>&#171;\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e&#187; \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c, \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u0443\u044e \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c w \u0438 \u043e\u0441\u044c\u044e Z.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 \u044d\u0442\u0443 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0441\u0442\u0435\u0439<\/p>\n<\/li>\n<li>\n<p>\u0421\u043c\u0435\u0449\u0430\u0435\u043c \u0446\u0435\u043d\u0442\u0440 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 coxa-femur<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0441\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Law_of_cosines\" rel=\"noopener noreferrer nofollow\">\u0442\u0435\u043e\u0440\u0435\u043c\u0435 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043e\u0432<\/a>, \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0432 \u0438\u043d\u0432\u0435\u0440\u0441\u043d\u043e\u0439 \u043a\u0438\u043d\u0435\u043c\u0430\u0442\u0438\u043a\u0435<\/p>\n<\/li>\n<\/ol>\n<p>\u0418 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445:<\/p>\n<ul>\n<li>\n<p><code>alpha<\/code> &#8212; \u0443\u0433\u043e\u043b \u043c\u0435\u0436\u0434\u0443 coxa \u0438 femur<\/p>\n<\/li>\n<li>\n<p><code>beta<\/code> &#8212; \u0443\u0433\u043e\u043b \u043c\u0435\u0436\u0434\u0443 femur \u0438 tibia<\/p>\n<\/li>\n<li>\n<p><code>gamma<\/code> &#8212; \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 coxa<\/p>\n<\/li>\n<\/ul>\n<h2>P.S.:<\/h2>\n<p>\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c, \u043a\u0430\u043a \u0447\u0442\u043e \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438\/\u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043d\u0430 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0442\u043e \u0443 \u0442\u0435\u0445 \u0436\u0435 \u0440\u043e\u0431\u043e\u0442\u043e\u0432 \u0441\u043e\u0431\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043b\u0430\u043f \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0443 \u0441 \u0442\u0440\u0435\u043c\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c\u0438&#8230;.<\/p>\n<p>\u0412 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u043a\u043e\u0434\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0441\u0442\u0430\u0442\u044c\u044f <a href=\"https:\/\/habr.com\/ru\/articles\/358798\/\" rel=\"noopener noreferrer nofollow\">&#171;\u0418\u043d\u0432\u0435\u0440\u0441\u043d\u0430\u044f \u043a\u0438\u043d\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0432 2D&#187;<\/a><\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1068430\/\">https:\/\/habr.com\/ru\/articles\/1068430\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0425\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u0434 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0440\u043e\u0431\u043e\u0442\u0430-&#171;\u043f\u0430\u0443\u043a\u0430&#187;.\u0421\u0430\u043c\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 10-\u0442\u0438 \u043b\u0435\u0442, \u043d\u043e \u043b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439, \u0430 \u043d\u0435 \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 \u0443\u0433\u043b\u043e\u0432 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432.\u041f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438\u0420\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441 Printables\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u043e\u0431\u043e\u0442\u0430.\u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043e\u0434\u043d\u0443 \u0438\u0437 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439, \u0438\u0449\u0430 \u0447\u0442\u043e \u0431\u044b \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u043d\u0430 \u0441\u0432\u0435\u0436\u0435\u043a\u0443\u043f\u043b\u0435\u043d\u043d\u043e\u043c 3D-\u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0435.\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 GitHub \u0430\u0432\u0442\u043e\u0440\u0430, \u043d\u043e \u0442\u0430\u043c \u043d\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043c \u043d\u0435\u0442 \u043a\u043e\u0434\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u0442\u044f\u0436\u043a\u043e\u0439 \u0432\u0438\u043d\u0442\u043e\u0432.\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435: http:\/\/www.instructables.com\/id\/DIY-Spider-RobotQuad-robot-Quadruped\/ (\u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b &#8212; CDN \u043f\u043e\u043f\u0430\u043b\u0438 \u043f\u043e\u0434 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438, \u043a\u043e\u043f\u0438\u044f \u0437\u0434\u0435\u0441\u044c)\u0425\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0440\u043e\u0431\u043e\u0442\u0430:4 &#171;\u043d\u043e\u0433\u0438&#187;\u041a\u0430\u0436\u0434\u0430\u044f &#171;\u043d\u043e\u0433\u0430&#187; \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432 \u0442\u0438\u043f\u0430 SG90\/MG90\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 &#171;\u043c\u043e\u0437\u0433\u0430&#187; &#8212; Arduino Nano(\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0443\u044e \u0441 Arduino \u043f\u043b\u0430\u0442\u0443)\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u0434\u0430 \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u043e Bluetooth.\u0422\u0430\u043a \u043a\u0430\u043a \u0441\u0430\u043c\u0438 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u044b \u0432 \u043f\u0438\u043a\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c, \u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0449\u043d\u044b\u0439 DC-DC \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0437\u0430\u0440\u044f\u0434\u0430 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432.\u042f \u0436\u0435  \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0430\u0434\u0440\u0443\u0433\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430.\u0421\u043a\u0435\u043b\u0435\u0442\u044b \u0438 \u043a\u043e\u0441\u0442\u0438Coxa &#8212; Femur &#8212; Tibia\u041c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u0440\u043e\u0431\u043e\u0442 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u043d \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0432\u043e\u0435\u0439 \u043e\u0441\u0438.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 &#171;\u043b\u0430\u043f\u0443&#187;:coxa &#8212; &#171;\u0441\u0443\u0441\u0442\u0430\u0432&#187;, \u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0433\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 \u043e\u0441\u0438 Z, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0437\u0430\u0434\u0430\u0435\u0442 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044cfemur &#8212; \u0441\u0440\u0435\u0434\u043d\u044f\u044f &#171;\u043a\u043e\u0441\u0442\u044c&#187;tibia &#8212; \u043e\u043f\u043e\u0440\u043d\u0430\u044f \u043a\u043e\u0441\u0442\u044c, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u043e\u0431\u043e\u0442\u0430\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0441\u0442\u0435\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432:\u0421\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u044b \u0432 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0421\u043a\u0435\u0442\u0447 legs_init\u0420\u0430\u0437\u0433\u0440\u0435\u0431\u0430\u044f \u043a\u043e\u0434\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 &#171;\u0441\u043a\u0435\u0442\u0447\u0435\u0439&#187; &#8212; \u043c\u0430\u0441\u0441\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 setup \u0438 loop, \u0438 \u0442.\u0434.\u0418\u0437 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f FlexiTimer2 \u0438 Servo\u0411\u043b\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432:\/\/define servos&#8217; ports\/\/\/ 4 \u043d\u043e\u0433\u0438 \u043f\u043e \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u044b\/\/\/ \u0422\u0443\u0442 \u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u043a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0433\u0430 \u0430\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u043f\u043e\u0440\u044f\u0434\u0435: {femur, tibia, coxa}\/\/\/ \u0427\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u043c\u0443 {coxa, femur, tibia}\/\/\/ \u0418 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0441\u0435\u0440\u0432 \u043a \u043f\u043b\u0430\u0442\u0435const int servo_pin[4][3] = { {2, 3, 4}, {5, 6, 7}, {8, 9, 10}, {11, 12, 13} };\/* Size of the robot &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*\/\/\/ \u0414\u043b\u0438\u043d\u0430 femurconst float length_a = 55;\/\/ \u0414\u043b\u0438\u043d\u0430 tibiaconst float length_b = 77.5;\/\/ \u0414\u043b\u0438\u043d\u0430 coxaconst float length_c = 27.5;\/\/ ???const float length_side = 71;\/\/ \u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0438\u0437\u0430 \u043a\u043e\u0440\u043f\u0443\u0441\u0430 \u043e\u0442 \u043e\u0441\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f coxa-femurconst float z_absolute = -28;\/* Constants for movement &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*\/const float z_default = -50, z_up = -30, z_boot = z_absolute;const float x_default = 62, x_offset = 0;const float y_start = 0, y_step = 40;const float y_default = x_default;\/* variables for movement &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-*\/\/\/ \u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0420\u0410\u0421\u0421\u0427\u0418\u0422\u0410\u041d\u041d\u041e\u0415 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435volatile float site_now[4][3];    \/\/real-time coordinates of the end of each leg\/\/ \u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435volatile float site_expect[4][3]; \/\/expected coordinates of the end of each leg\/\/ \u0434\u0435\u043b\u044c\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u0440\u0432\u044b \u0441\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043afloat temp_speed[4][3];   \/\/each axis&#8217; speed, needs to be recalculated before each movement\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0440\u043e\u0431\u043e\u0442\u0430:set_site &#8212; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u043e\u0440\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 &#171;\u043b\u0430\u043f\u044b&#187;, \u0440\u0430\u0441\u0447\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0435\u0439wait_all_reach &#8212; \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a &#8212; \u0432 \u0446\u0438\u043a\u043b\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435servo_service &#8212; \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u0435\u0440\u0435\u0441\u0447\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u0443\u0433\u043b\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0441\u0435\u0440\u0432\u043e\u043f\u0440\u0438\u0432\u043e\u0434\u043e\u0432\u0412 set_site \u0435\u0441\u0442\u044c \u0431\u0430\u0433: \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0434\u0435\u043b\u044c\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u043d\u043e\u0439 \u043d\u0443\u043b\u044e \u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f Infinity. \u041d\u043e &#171;\u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 \u043e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 float-\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438. \u041d\u0430 ATMega \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043e\u043d\u0430 \u0447\u0435\u043c \u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439.\u0421\u0430\u043c\u043e\u0435 \u0432\u043a\u0443\u0441\u043d\u043e\u0435\u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 servo_service, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 50Hz#define E_DELTA 0.01void servo_service(void){  sei();  static float alpha, beta, gamma;  \/\/ \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0433\u0438  for (int i = 0; i &lt; 4; i++)  {    \/\/ \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u0439 \u0441\u0435\u0440\u0432\u044b    for (int j = 0; j &lt; 3; j++)    {      \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435      if (abs(site_now[i][j] &#8212; site_expect[i][j]) &lt; (abs(temp_speed[i][j])+E_DELTA))        site_now[i][j] = site_expect[i][j];      else        site_now[i][j] += temp_speed[i][j];    }    \/\/ \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432 \u0443\u0433\u043b\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430    cartesian_to_polar(alpha, beta, gamma, site_now[i][0], site_now[i][1], site_now[i][2]);    \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0433\u043b\u044b \u0441\u0435\u0440\u0432, \u0441\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u0438\u0445 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u043e\u043c\u0435\u0440\u0430 \u043d\u043e\u0433\u0438    polar_to_servo(i, alpha, beta, gamma);  }  rest_counter++;}\u0410 \u0442\u043e\u0447\u043d\u0435\u0435 \u0432 cartesian_to_polar:void cartesian_to_polar(volatile float &amp;alpha, volatile float &amp;beta, volatile float &amp;gamma, volatile float x, volatile float y, volatile float z){  \/\/calculate w-z degree  float v, w;  w = (x &gt;= 0 ? 1 : -1) * (sqrt(pow(x, 2) + pow(y, 2)));  v = w &#8212; length_c;  alpha = atan2(z, v) + acos((pow(length_a, 2) &#8212; pow(length_b, 2) + pow(v, 2) + pow(z, 2)) \/ 2 \/ length_a \/ sqrt(pow(v, 2) + pow(z, 2)));  beta = acos((pow(length_a, 2) + pow(length_b, 2) &#8212; pow(v, 2) &#8212; pow(z, 2)) \/ 2 \/ length_a \/ length_b);  \/\/calculate x-y-z degree  gamma = (w &gt;= 0) ? atan2(y, x) : atan2(-y, -x);  \/\/trans degree pi-&gt;180  alpha = alpha \/ pi * 180;  beta = beta \/ pi * 180;  gamma = gamma \/ pi * 180;}\u041a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442&#8230;\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u0434\u0430\u044e\u0442. \u041b\u0438\u0447\u043d\u043e \u044f \u0443\u0431\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043d\u0430 \u0440\u0430\u0437\u0431\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043a\u043e\u0434\u0430.\u0410 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c?\u041f\u043e \u0448\u0430\u0433\u0430\u043c:\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u0438\u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 w (\u043e\u0442 \u0446\u0435\u043d\u0442\u0440\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0434\u043e \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 XY)&#187;\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e&#187; \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c, \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u0443\u044e \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c w \u0438 \u043e\u0441\u044c\u044e Z.\u041d\u0430 \u044d\u0442\u0443 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0441\u0442\u0435\u0439\u0421\u043c\u0435\u0449\u0430\u0435\u043c \u0446\u0435\u043d\u0442\u0440 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 coxa-femur\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0441\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0442\u0435\u043e\u0440\u0435\u043c\u0435 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043e\u0432, \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0432 \u0438\u043d\u0432\u0435\u0440\u0441\u043d\u043e\u0439 \u043a\u0438\u043d\u0435\u043c\u0430\u0442\u0438\u043a\u0435\u0418 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445:alpha &#8212; \u0443\u0433\u043e\u043b \u043c\u0435\u0436\u0434\u0443 coxa \u0438 femurbeta &#8212; \u0443\u0433\u043e\u043b \u043c\u0435\u0436\u0434\u0443 femur \u0438 tibiagamma &#8212; \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 coxaP.S.:\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c, \u043a\u0430\u043a \u0447\u0442\u043e \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438\/\u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043d\u0430 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0442\u043e \u0443 \u0442\u0435\u0445 \u0436\u0435 \u0440\u043e\u0431\u043e\u0442\u043e\u0432 \u0441\u043e\u0431\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043b\u0430\u043f \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0443 \u0441 \u0442\u0440\u0435\u043c\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c\u0438&#8230;.\u0412 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u043a\u043e\u0434\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0441\u0442\u0430\u0442\u044c\u044f &#171;\u0418\u043d\u0432\u0435\u0440\u0441\u043d\u0430\u044f \u043a\u0438\u043d\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0432 2D&#187;\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 https:\/\/habr.com\/ru\/articles\/1068430\/<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-490331","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490331","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=490331"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490331\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=490331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=490331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=490331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}