{"id":6212,"date":"2022-05-03T18:06:09","date_gmt":"2022-05-03T10:06:09","guid":{"rendered":"https:\/\/yanjingang.com\/blog\/?p=6212"},"modified":"2022-05-28T15:30:03","modified_gmt":"2022-05-28T07:30:03","slug":"%e5%b0%8f%e7%8c%aa%e5%ad%a6arduino-qgp-motorshiled%e9%a9%b1%e5%8a%a8%e6%9d%bf","status":"publish","type":"post","link":"https:\/\/yanjingang.com\/blog\/?p=6212","title":{"rendered":"\u5c0f\u732a\u5b66arduino\u2014\u4f7f\u7528QGPMotorShiled\u9a71\u52a8\u677f\u5236\u4f5c\u6392\u7206\u673a\u5668\u4eba"},"content":{"rendered":"<p>\u4e94\u4e00\u75ab\u60c5\u9632\u63a7\u4e0d\u80fd\u5916\u51fa\uff0c\u5446\u5728\u5bb6\u91cc\u5b9e\u5728\u65e0\u804a\uff0c\u51b3\u5b9a\u8ddf\u513f\u5b50\u4e00\u8d77\u505a\u4e2a\u6392\u7206\u673a\u5668\u4eba\uff0c\u9700\u8981\u540c\u65f6\u63a7\u52364\u4e2a\u8235\u673a\u30012\u4e2a\u5e95\u76d8\u7535\u673a\u30011\u4e2a\u65e0\u7ebf\u624b\u67c4\u7684\u63a7\u5236\u548c\u63a5\u6536\uff0c\u4f46L298P\u53ea\u67091\u4e2a\u4f3a\u5019\uff0c\u518d\u5916\u6302\u4e2a16\u8def\u8235\u673a\u677f\u7684\u8bdd\u6709\u70b9\u592a\u4e71\u4e86\u3002\u5076\u7136\u95f4\u770b\u5230\u4e00\u5757\u529f\u80fd\u6bd4\u8f83\u5168\u9762\u7684\u9a71\u52a8\u677f\uff0c\u53ef\u4ee5\u540c\u65f6\u9a71\u52a8\u7535\u673a\u3001\u8235\u673a\u3001\u84dd\u7259\u3001\u8d85\u58f0\u6ce2\u7b49\uff0c\u6211\u4eec\u5c31\u4f7f\u7528\u8fd9\u5757\u677f\u5b50\u5c1d\u8bd5\u505a\u4e2a\u6392\u7206\u673a\u5668\u4eba\u3002<\/p>\n<p>\u5148\u7ed9\u4e2a\u6548\u679c\u56fe\uff1a<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot1.jpeg\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-6243\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot1-1024x768.jpeg\" alt=\"\" width=\"625\" height=\"469\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot1-1024x768.jpeg 1024w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot1-300x225.jpeg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot1-768x576.jpeg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot1-1536x1152.jpeg 1536w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot1-624x468.jpeg 624w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot1.jpeg 1702w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<h1>\u4e00\u3001\u6982\u8ff0<\/h1>\n<p>\u8fd9\u6b3e\u9a71\u52a8\u7248\u662f\u5947\u679c\u6d3e\u51fa\u54c1\u7684Arduino MotorShiled V5.5\uff0c\u80fd\u540c\u65f6\u9a71\u52a84\u4e2a\u652f\u6d41\u7535\u673a\u62162\u4e2a\u6b65\u8fdb\u7535\u673a\u30018\u8def\u5168\u901fPWM\u4f3a\u5019\u63a7\u5236\u3001PS2\u65e0\u7ebf\u624b\u67c4\u3001\u84dd\u7259\u3001\u8d85\u58f0\u6ce2\uff0c\u6700\u5927\u7684\u4f18\u70b9\u662f\uff0c\u5b83\u5360\u7528\u4e86\u5f88\u5c11\u7684\u5f15\u811a\uff0c\u4f7f\u7528I2C\u901a\u4fe1\u7684PCA9685 PWM\u9a71\u52a8\u82af\u7247\u63a7\u5236\u7535\u673a\u901f\u5ea6\u548c\u65b9\u5411\uff0c\u53ea\u75282\u6839IO\u5f15\u811a(SDA&amp;SCL)\u5c31\u53ef\u4ee5\u9a71\u52a8\u591a\u4e2a\u7535\u673a\uff0c\u591a\u4e2a\u9a71\u52a8\u677f\u8fd8\u53ef\u4ee5\u7ea7\u8054\u4f7f\u7528\uff0c\u770b\u8d77\u6765\u76f8\u5f53\u4e0d\u9519\u3002<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/motorshiled.jpg\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-6216\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/motorshiled-1024x1024.jpg\" alt=\"\" width=\"625\" height=\"625\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/motorshiled.jpg 1024w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/motorshiled-300x300.jpg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/motorshiled-150x150.jpg 150w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/motorshiled-768x768.jpg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/motorshiled-624x624.jpg 624w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>\u63a5\u53e3\u8bf4\u660e\u53ca\u7aef\u53e3\u5360\u7528\u60c5\u51b5\uff1a<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/MotorShieldV5_sch.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-6222\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/MotorShieldV5_sch.jpg\" alt=\"\" width=\"960\" height=\"871\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/MotorShieldV5_sch.jpg 960w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/MotorShieldV5_sch-300x272.jpg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/MotorShieldV5_sch-768x697.jpg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/MotorShieldV5_sch-624x566.jpg 624w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/><\/a><\/p>\n<p>\u53c2\u6570\u8bf4\u660e\uff1a<\/p>\n<ul>\n<li>\u4f7f\u7528\u4e1c\u829d\u9ad8\u6027\u80fd\u9a71\u52a8\u82af\u7247\uff0c\u63d0\u4f9b\u6bcf\u8def2.2A\uff083.6A\u5cf0\u503c\uff09\u8f93\u51fa\uff0c\u53ef\u8fd0\u884c4.5-13.5V\u76f4\u6d41\u7535\u673a\uff1b<\/li>\n<li>\u53ef\u4ee5\u9a71\u52a84\u4e2a\u76f4\u6d41\u7535\u673a\u62162\u4e2a\u6b65\u8fdb\u7535\u673a\uff1b<\/li>\n<li>\u989d\u5916\u63d0\u4f9b8\u8defPWM\u8f93\u51fa\uff0c\u53ef\u4ee5\u63a7\u52368\u8def\u8235\u673a\uff1b<\/li>\n<li>\u652f\u6301PS2\u65e0\u7ebf\u624b\u67c4\uff1b<\/li>\n<li>\u652f\u6301\u84dd\u7259\u6a21\u5757\u548c\u8d85\u58f0\u6ce2\u4f20\u611f\u5668\uff1b<\/li>\n<li>\u53ef\u81ea\u5b9a\u4e49I2C\u5730\u5740\uff0c\u652f\u6301\u591a\u4e2a\u9a71\u52a8\u5668\u53e0\u52a0\u7ea7\u8054\uff1b<\/li>\n<li>\u63d0\u4f9b\u5b8c\u6574\u7684\u4ee3\u7801\u5e93\u548c\u4e30\u5bcc\u793a\u4f8b\u7a0b\u5e8f\uff0c\u652f\u6301\u56fe\u5f62\u7f16\u7a0b\uff0c\u7b80\u5355\u6613\u7528\u3002<\/li>\n<\/ul>\n<h1>\u4e8c\u3001\u4f9b\u7535\u65b9\u6848<\/h1>\n<h3>1.\u5355\u7535\u6e90\u4f9b\u7535<\/h3>\n<ul>\n<li>\u5355\u7535\u6e90\u53ef\u540c\u65f6\u4e3a\u9a71\u52a8\u5668\u548c\u5f00\u53d1\u677f\u4f9b\u7535<\/li>\n<li>\u677f\u8f7d\u5185\u5d4c5V\u7a33\u538b\u5668\uff0c\u53ef\u4e3a\u8235\u673a\u7aef\u53e3\u63d0\u4f9b5V3A\u7535\u6e90\u3002<\/li>\n<li>\u7535\u6e90\u8f93\u51fa\u529f\u7387\uff08\u653e\u7535\u7535\u6d41\uff09\u8981\u591f\u5927\uff0c\u5426\u5219\u4f1a\u5f71\u54cd\u7a33\u5b9a\u6027<\/li>\n<\/ul>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063956.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-6219\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063956.jpg\" alt=\"\" width=\"800\" height=\"800\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063956.jpg 800w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063956-300x300.jpg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063956-150x150.jpg 150w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063956-768x768.jpg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063956-624x624.jpg 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<h3>2.\u8235\u673a\u72ec\u7acb\u4f9b\u7535<\/h3>\n<p>\u5f53\u9700\u8981\u63a5\u5165\u591a\u4e2a\u8235\u673a\u6216\u5927\u529f\u7387\u8235\u673a\u7684\u65f6\u5019\uff0c\u8bf7\u9009\u62e9\u6b64\u65b9\u6848\u4f9b\u7535<\/p>\n<ul>\n<li>\u5148\u62d4\u6389\u5de6\u4e0a\u89d2\u8df3\u7ebf\u5e3d\uff0c\u65ad\u5f00\u677f\u8f7d\u7535\u6e90<\/li>\n<li>\u63a5\u4e0a\u8ddf\u8235\u673a\u5339\u914d\u7535\u538b\u5339\u914d\u7684\u7535\u6e90\uff0c\u6ce8\u610f\u5339\u914d\u53c2\u6570\uff0c\u5927\u591a\u6570\u8235\u673a\u8010\u538b\u662f5-6V\uff0c\u7535\u538b\u592a\u9ad8\u4f1a\u4f7f\u8235\u673a\u70e7\u6bc1<\/li>\n<\/ul>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063399.jpg\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-6220\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063399.jpg\" alt=\"\" width=\"625\" height=\"625\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063399.jpg 800w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063399-300x300.jpg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063399-150x150.jpg 150w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063399-768x768.jpg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010702063399-624x624.jpg 624w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h1>\u4e09\u3001\u529f\u80fd\u9a8c\u8bc1<\/h1>\n<h3>1\u3001\u8235\u673a\u63a7\u5236\uff08Servo\uff09<\/h3>\n<p>\u9a71\u52a8\u677f\u7684\u8235\u673a\u63a7\u5236\u901a\u8fc7PWM\u4e13\u7528\u82af\u7247PCA9685\u5b9e\u73b0\uff0c\u5bf9\u5e94\u7684\u7f16\u53f7\u5206\u522b\u4e3a0-7\u63a5\u53e3\u3002\u9a71\u52a8\u5668\u5185\u5d4c\u7a33\u538b\u7535\u8def\uff0c\u53ef\u4ee5\u8f93\u51fa5V\uff0c3A\u7684\u7535\u6d41\u7ed9\u8235\u673a\u4f9b\u7535\u3002\u5c3d\u91cf\u907f\u514d\u8235\u673a\u5835\u8f6c\u6216\u8d85\u8d1f\u8377\uff0c\u4ee5\u514d\u5f71\u54cd\u7cfb\u7edf\u7a33\u5b9a\u6027\u6216\u635f\u574f\u8235\u673a\u3002<\/p>\n<p>\u8235\u673a\u63a5\u7ebf\uff1a<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-6229\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd.jpg\" alt=\"\" width=\"800\" height=\"800\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd.jpg 800w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd-300x300.jpg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd-150x150.jpg 150w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd-768x768.jpg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd-624x624.jpg 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>\u6ce8\u610f\uff1a\u5bf9\u4e8e\u5927\u529f\u7387\u7684\u8235\u673a\uff08\u7535\u6e90\u8981\u6c42\u8d85\u8fc75V3A\uff09\uff0c\u8bf7\u62d4\u6389\u7ea2\u8272\u8df3\u7ebf\u5e3d\uff0c\u518d\u4f7f\u7528\u8ddf\u8235\u673a\u5339\u914d\u7684\u7535\u6e90\u901a\u8fc7\u201c\u8235\u673a\u8f85\u52a9\u7535\u6e90\u201d\u63a5\u53e3\u72ec\u7acb\u4f9b\u7535\u3002\u5b9e\u6d4b\u6765\u770b\uff0c\u57fa\u672c&gt;2\u4e2aMG995\u91d1\u5c5e\u8235\u673a\u5c31\u9700\u8981\u72ec\u7acb\u4f9b\u7535\u4e86\u3002<\/p>\n<p>\u4ee3\u7801\u793a\u4f8b\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">\r\n#include &lt;Wire.h&gt;\r\n#include \"QGPMaker_MotorShield.h\"\r\n\r\n\/\/ Create the motor shield object with the default I2C address\r\nQGPMaker_MotorShield AFMS = QGPMaker_MotorShield();\r\n\r\nconst int SERVOS = 4;       \/\/\u5b9a\u4e49\u53d8\u91cfSERVOS,\u8868\u793a\u8235\u673a\u6570\uff0c\u9884\u5148\u8d4b\u503c4\r\nint INITANGLE[SERVOS];      \/\/\u5b9a\u4e49\u53d8\u91cf\u6570\u7ec4INITANGLE[SERVOS]\uff0c\u7528\u4e8e\u5b58\u653e\u5f53\u524d\u8235\u673a\u7684\u521d\u59cb\u89d2\u5ea6\u503c\r\n\r\n\/\/ \u8bbe\u7f6e\u8235\u673a\u9891\u7387\r\nvoid setServoPulse( uint8_t n, double pulse )  \/\/n:\u8235\u673a\u53f7\uff1b pulse\uff1a\u8109\u51b2\u65f6\u95f4\r\n{\r\n    double pulselength;\r\n    pulselength = 1000000;      \/\/ \u767e\u4e07\u5206\u4e4b\u4e00\u79d2\r\n    pulselength \/= 50;          \/\/50 Hz\r\n    pulselength \/= 4096;        \/\/(12\u4f4d\u5206\u8fa8\u7387)\r\n    pulse *= 1000;              \/\/\u4e58\u4ee51000\r\n    pulse \/= pulselength;       \/\/\u9664\u4ee5pulselength\u53d8\u91cf\r\n    AFMS.setPWM( n, pulse );    \/\/\u8bbe\u7f6ePWM\u503c\r\n}\r\n\r\n\/\/ PWM\u503c\u8f6c\u5316\u4e3a\u89d2\u5ea6\r\nvoid writeServo( uint8_t n, uint8_t angle )  \/\/n:\u8235\u673a\u53f7\uff1b angle\uff1a\u8235\u673a\u9700\u8981\u8f6c\u5230\u7684\u89d2\u5ea6\r\n{\r\n    double pulse;\r\n    angle = (int)angle*0.922222;  \/\/\u6839\u636e\u8235\u673a\u6279\u6b21\u7684\u4e0d\u540c\uff0c\u6b64\u6279\u8235\u673a\u5b9e\u9645\u8f6c\u89d2\u4e0e\u7406\u8bba\u8f93\u5165\u503c\u5b58\u57280.922222\u7684\u7cfb\u6570\u5173\u7cfb\u3002\u5982\u679c\u8235\u673a\u5b9e\u9645\u8f6c\u89d2\u4e0e\u7406\u8bba\u8f93\u5165\u503c\u4e00\u6837\uff0c\u5219\u53ef\u5220\u9664\u6b64\u8bed\u53e5\r\n    pulse = 0.5 + angle \/ 90.0;  \/\/\u8109\u51b2\u65f6\u95f4\u548c\u89d2\u5ea6\u503c\u7684\u5173\u7cfb\u516c\u5f0f\r\n    setServoPulse( n, pulse );  \/\/\u8ba9\u6307\u5b9a\u7684\u8235\u673a\u901a\u8fc7\u76f8\u5bf9\u5e94\u7684\u8109\u51b2\u65f6\u95f4\u8f6c\u5230\u6307\u5b9a\u7684\u89d2\u5ea6\r\n}\r\n\r\n\r\n\r\n\/\/\u521d\u59cb\u5316\u8235\u673a\u53c2\u6570\r\nvoid initServos(){  \r\n    INITANGLE[0] = 75;  \/\/\u53f3\u811a\u8235\u673a\u539f\u70b9\u89d2\u5ea6\r\n    INITANGLE[1] = 75;  \/\/\u5de6\u811a\u8235\u673a\u539f\u70b9\u89d2\u5ea6\r\n    INITANGLE[2] = 90;  \/\/\u53f3\u817f\u8235\u673a\u539f\u70b9\u89d2\u5ea6\r\n    INITANGLE[3] = 90;  \/\/\u5de6\u817f\u8235\u673a\u539f\u70b9\u89d2\u5ea6\r\n}\r\n\r\n\r\nvoid setup() {\r\n    Serial.begin(9600);           \/\/ set up Serial library at 9600 bps\r\n    Serial.println(\"Servo PWM test!\");\r\n\r\n    \/\/ \u521d\u59cb\u5316\u53c2\u6570\r\n    initServos();\r\n\r\n    \/\/ \u542f\u52a8\u9a71\u52a8\u677f\r\n    AFMS.begin( 50 );\r\n    \r\n    \/\/ \u521d\u59cb\u5316\u8235\u673a\u89d2\u5ea6\r\n    for ( int i = 0; i &lt; SERVOS; i ++ ){  \/\/For\u5faa\u73af\u521d\u59cb\u5316\u8d4b\u503c\u8bbe\u5b9a\u89d2\u5ea6\uff08\u5f00\u59cb\u5c068\u4e2a\u8235\u673a\u56de\u539f\u70b9\uff09\r\n        \/\/ \u65cb\u8f6c\u5230\u6307\u5b9a\u89d2\u5ea6\r\n        writeServo(i, INITANGLE[i]);\r\n    }\r\n}\r\n\r\n\r\nvoid loop() {\r\n    \/\/ \u62ac\u5de6\u817f\r\n    for ( int i = 0; i &lt; 130 - INITANGLE[0] ; i++ ){  \/\/For\u5faa\u73af\u521d\u59cb\u5316\u8d4b\u503c\u8bbe\u5b9a\u89d2\u5ea6\uff08\u5f00\u59cb\u5c068\u4e2a\u8235\u673a\u56de\u539f\u70b9\uff09\r\n        writeServo( 0, INITANGLE[0]+i );\/\/\u53f3\u811a\r\n        writeServo( 1, INITANGLE[1]+i );\/\/\u5de6\u811a\r\n        delay(100);\r\n    }\r\n    \/\/writeServo( 0, 120 );\/\/\u53f3\u811a\r\n    \/\/writeServo( 1, 120 );\/\/\u5de6\u811a\r\n    delay(2000);\r\n    \/\/ \u5de6\u817f\u524d\u79fb\r\n    writeServo( 2, 70 );\/\/\u53f3\u817f\r\n    writeServo( 3, 70 );\/\/\u5de6\u817f\r\n    delay(2000);\r\n    \/\/ \u843d\u5de6\u817f\r\n    writeServo( 0, 75 );\/\/\u53f3\u811a\r\n    writeServo( 1, 75 );\/\/\u5de6\u811a\r\n    delay(2000);\r\n    \r\n    \/\/ \u62ac\u53f3\u817f\r\n    \/\/writeServo( 0, 30 );\r\n    \/\/writeServo( 1, 30 );\r\n    for ( int i = 0; i &lt; INITANGLE[0] - 30 ; i++ ){  \/\/For\u5faa\u73af\u521d\u59cb\u5316\u8d4b\u503c\u8bbe\u5b9a\u89d2\u5ea6\uff08\u5f00\u59cb\u5c068\u4e2a\u8235\u673a\u56de\u539f\u70b9\uff09\r\n        writeServo( 0, INITANGLE[0]-i );\/\/\u53f3\u811a\r\n        writeServo( 1, INITANGLE[1]-i );\/\/\u5de6\u811a\r\n        delay(100);\r\n    }\r\n    delay(2000);\r\n    \/\/ \u53f3\u817f\u524d\u79fb\r\n    writeServo( 2, 110 );\r\n    writeServo( 3, 110 );\r\n    delay(2000);\r\n    \/\/ \u843d\u5de6\u817f\r\n    writeServo( 0, 75 );\/\/\u53f3\u811a\r\n    writeServo( 1, 75 );\/\/\u5de6\u811a\r\n    delay(3000);\r\n}<\/code><\/pre>\n<h3>2\u3001\u76f4\u6d41\u7f16\u7801\u7535\u673a\u63a7\u5236\uff08DC Motor\uff09<\/h3>\n<p>\u7535\u673a\u63a5\u7ebf\uff1a<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010709553228.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-6228\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010709553228.jpg\" alt=\"\" width=\"800\" height=\"800\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010709553228.jpg 800w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010709553228-300x300.jpg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010709553228-150x150.jpg 150w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010709553228-768x768.jpg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010709553228-624x624.jpg 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>\u7535\u673a\u7f16\u7801\u5668\u63a5\u7ebf\uff1a<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd.jpg\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-6229\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd.jpg\" alt=\"\" width=\"625\" height=\"625\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd.jpg 800w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd-300x300.jpg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd-150x150.jpg 150w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd-768x768.jpg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2psd-624x624.jpg 624w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>\u4ee3\u7801\u793a\u4f8b\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">#include &lt;Wire.h&gt;\r\n#include \"QGPMaker_MotorShield.h\"\r\n#include \"QGPMaker_Encoder.h\"\r\n\r\nQGPMaker_MotorShield AFMS = QGPMaker_MotorShield();\r\nQGPMaker_DCMotor *DCMotor_1 = AFMS.getMotor(1);  \/\/ 1-4\u9a6c\u8fbe\r\nQGPMaker_DCMotor *DCMotor_2 = AFMS.getMotor(2);\r\nQGPMaker_Encoder Encoder1(1);\r\nQGPMaker_Encoder Encoder2(2);\r\n\r\nvoid setup(){\r\n  AFMS.begin(50);  \/\/ create with the default frequency 50Hz\r\n  Serial.begin(9600);\r\n  DCMotor_1-&gt;setSpeed(50); \/\/\u8bbe\u7f6e\u7535\u673a\u901f\u5ea6(0 stopped ~ 255 full speed)\r\n  DCMotor_1-&gt;run(FORWARD); \/\/\u542f\u52a8\u7535\u673a(FORWARD \u6b63\u8f6c, BACKWARD \u53cd\u8f6c ,BRAKE \u5239\u8f66\u6025\u505c or RELEASE \u5173\u95ed\u7535\u673a\uff09\r\n  DCMotor_2-&gt;setSpeed(50);\r\n  DCMotor_2-&gt;run(FORWARD);\r\n}\r\n\r\nvoid loop(){\r\n\r\n  Serial.print(Encoder1.read()); \/\/\u83b7\u53d6\u7f16\u7801\u5668\u6570\u503c\r\n  Serial.print('-');\r\n  Serial.print(Encoder2.read());\r\n  Serial.print('-');\r\n  Serial.println(Encoder1.getRPM());\/\/\u83b7\u53d6\u7f16\u7801\u5668\u7535\u673a\u5bf9\u5e94\u7684\u6bcf\u5206\u949f\u8f6c\u901f\uff08RPM\uff09\r\n  delay(50);\r\n}<\/code><\/pre>\n<p>*\u6ce8\uff1a\u5982\u679c\u8981\u4f7f\u7528PID\uff0c\u63a5\u7ebf\u548cPID\u53c2\u6570\u4f1a\u6709\u6240\u4e0d\u540c\uff0c\u9700\u8981\u6bcf\u4e2a\u8f6e\u5b50\u5355\u72ec\u8c03\u8bd5\u8f6c\u52a8\u65b9\u5411\u548cpid\u53c2\u6570\u3002<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2021\/12\/WechatIMG87.jpeg\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-6309\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2021\/12\/WechatIMG87-892x1024.jpeg\" alt=\"\" width=\"625\" height=\"717\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2021\/12\/WechatIMG87-892x1024.jpeg 892w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2021\/12\/WechatIMG87-261x300.jpeg 261w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2021\/12\/WechatIMG87-768x882.jpeg 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2021\/12\/WechatIMG87-624x717.jpeg 624w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2021\/12\/WechatIMG87.jpeg 1279w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>PID\u8c03\u8bd5\u65b9\u6cd5\u8be6\u89c1https:\/\/yanjingang.com\/blog\/?p=5604\u3002<\/p>\n<h3>3\u3001\u65e0\u7ebf\u624b\u67c4\u63a7\u5236\uff08PS2\uff09<\/h3>\n<p>\u9a71\u52a8\u5668\u5185\u7f6ePS2\u63a5\u6536\u5668\u63d2\u5ea7\uff0c\u5c06\u63a5\u6536\u5668\u76f4\u63a5\u63d2\u5165\u4f7f\u7528\u3002<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010514151711.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-6221\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010514151711.jpg\" alt=\"\" width=\"744\" height=\"503\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010514151711.jpg 744w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010514151711-300x203.jpg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021010514151711-624x422.jpg 624w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><\/a><\/p>\n<p>ps2\u63a7\u5236\u5e95\u76d8\u7535\u673a\u79fb\u52a8\u4ee3\u7801\u793a\u4f8b\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">#include \"PS2X_lib.h\"  \/\/\u8c03\u7528\u5e93\u6587\u4ef6PS2X_lib\uff0c\u8fd9\u4e2a\u662f\u65e0\u7ebf\u624b\u67c4\u5e93\r\n#include \"QGPMaker_Encoder.h\"\r\n#include \"QGPMaker_MotorShield.h\"\r\n\r\n#define PS2_DAT        12  \/\/14    \r\n#define PS2_CMD        11  \/\/15\r\n#define PS2_SEL        10  \/\/16\r\n#define PS2_CLK        13  \/\/17\r\n\r\n#define pressures   true\r\n#define rumble      true\r\n\r\nPS2X ps2x; \/\/ create PS2 Controller Class\r\n\r\n\/\/right now, the library does NOT support hot pluggable controllers, meaning\r\n\/\/you must always either restart your Arduino after you connect the controller,\r\n\/\/or call config_gamepad(pins) again after connecting the controller.\r\n\r\nint error = 0;\/\/\u8fde\u63a5\u9519\u8bef\r\nbyte type = 0;\/\/\u624b\u67c4\u5f62\u5f0f\r\nbyte vibrate = 0;\/\/\u9707\u52a8\r\n\r\n\/\/ Create the motor shield object with the default I2C address\r\nQGPMaker_MotorShield AFMS = QGPMaker_MotorShield();\r\n\r\nQGPMaker_DCMotor  *DCMotor_1 = AFMS.getMotor(1);\r\nQGPMaker_DCMotor  *DCMotor_2 = AFMS.getMotor(2);\r\n\r\n\/\/ \u8235\u673a\u89d2\u5ea6 \r\nint currentAngle = 90;\r\n\/\/ \u9a6c\u8fbe\u901f\u5ea6\r\nint motorSpeed = 150;\r\n\/\/ \u8bbe\u7f6e\u8235\u673a\u9891\u7387\r\nvoid setServoPulse( uint8_t n, double pulse ) \/\/n:\u8235\u673a\u53f7\uff1b pulse\uff1a\u8109\u51b2\u65f6\u95f4\r\n{\r\n  double pulselength;\r\n  pulselength = 1000000; \/\/ \u767e\u4e07\u5206\u4e4b\u4e00\u79d2\r\n  pulselength \/= 50; \/\/50 Hz\r\n  pulselength \/= 4096; \/\/(12\u4f4d\u5206\u8fa8\u7387)\r\n  pulse *= 1000; \/\/\u4e58\u4ee51000\r\n  pulse \/= pulselength; \/\/\u9664\u4ee5pulselength\u53d8\u91cf\r\n  AFMS.setPWM( n, pulse ); \/\/\u8bbe\u7f6ePWM\u503c\r\n}\r\n\r\n\/\/ PWM\u503c\u8f6c\u5316\u4e3a\u89d2\u5ea6\r\nvoid writeServo( uint8_t n, uint8_t angle ) \/\/n:\u8235\u673a\u53f7\uff1b angle\uff1a\u8235\u673a\u9700\u8981\u8f6c\u5230\u7684\u89d2\u5ea6\r\n{\r\n  double pulse;\r\n  angle = (int)angle*0.922222; \/\/\u6839\u636e\u8235\u673a\u6279\u6b21\u7684\u4e0d\u540c\uff0c\u6b64\u6279\u8235\u673a\u5b9e\u9645\u8f6c\u89d2\u4e0e\u7406\u8bba\u8f93\u5165\u503c\u5b58\u57280.922222\u7684\u7cfb\u6570\u5173\u7cfb\u3002\u5982\u679c\u8235\u673a\u5b9e\u9645\u8f6c\u89d2\u4e0e\u7406\u8bba\u8f93\u5165\u503c\u4e00\u6837\uff0c\u5219\u53ef\u5220\u9664\u6b64\u8bed\u53e5\r\n  pulse = 0.5 + angle \/ 90.0; \/\/\u8109\u51b2\u65f6\u95f4\u548c\u89d2\u5ea6\u503c\u7684\u5173\u7cfb\u516c\u5f0f\r\n  setServoPulse( n, pulse ); \/\/\u8ba9\u6307\u5b9a\u7684\u8235\u673a\u901a\u8fc7\u76f8\u5bf9\u5e94\u7684\u8109\u51b2\u65f6\u95f4\u8f6c\u5230\u6307\u5b9a\u7684\u89d2\u5ea6\r\n}\r\n\r\nvoid setup() {\r\n  Serial.begin(9600);\r\n  AFMS.begin(50);\r\n  Serial.println(\"===========beging==========\");\r\n  int wait_ps2 = 500; \/\/\u641c\u7d22\u624b\u67c4\u65f6\u95f4\r\n  do {\r\n    error = ps2x.config_gamepad(13, 11, 10, 12, true, true);  \/\/ setup pins and settings: GamePad(clock, command, attention, data, Pressures, Rumble)\r\n    if (error == 0) {\r\n      Serial.println(\"\\nConfigured successful! \");\r\n      break;\r\n    } else {\r\n      delay(100);\r\n      wait_ps2 -= 100;\r\n    }\r\n  }while(wait_ps2 &gt; 0); \/\/while\u5faa\u73af\u76f4\u5230\u624b\u67c4\u8fde\u63a5\u6210\u529f\r\n\r\n  \/\/ \u8235\u673a\u89d2\u5ea6\u521d\u59cb\u5316\r\n  writeServo( 0, currentAngle );\r\n}\r\n\r\nvoid loop() {\r\n  ps2x.read_gamepad(false, vibrate); \/\/read controller and set large motor to spin at 'vibrate' speed\r\n  if (ps2x.Button(PSB_START))        \/\/will be TRUE as long as button is pressed\r\n    Serial.println(\"Start is being held\");\r\n  if (ps2x.Button(PSB_SELECT))\r\n    Serial.println(\"Select is being held\");\r\n\r\n  if (ps2x.Button(PSB_PAD_UP)) {     \/\/will be TRUE as long as button is pressed\r\n    Serial.print(\"Up held this hard: \");\r\n    Serial.println(ps2x.Analog(PSAB_PAD_UP), DEC);\r\n    DCMotor_1-&gt;setSpeed(motorSpeed);\r\n    DCMotor_2-&gt;setSpeed(motorSpeed);\r\n    DCMotor_1-&gt;run(FORWARD);\r\n    DCMotor_2-&gt;run(FORWARD);\r\n  } else  if (ps2x.Button(PSB_PAD_RIGHT)) {\r\n    Serial.print(\"Right held this hard: \");\r\n    Serial.println(ps2x.Analog(PSAB_PAD_RIGHT), DEC);\r\n    DCMotor_1-&gt;setSpeed(motorSpeed);\r\n    DCMotor_2-&gt;setSpeed(motorSpeed);\r\n    DCMotor_1-&gt;run(BACKWARD);\r\n    DCMotor_2-&gt;run(FORWARD);\r\n  } else  if (ps2x.Button(PSB_PAD_LEFT)) {\r\n    Serial.print(\"LEFT held this hard: \");\r\n    Serial.println(ps2x.Analog(PSAB_PAD_LEFT), DEC);\r\n    DCMotor_1-&gt;setSpeed(motorSpeed);\r\n    DCMotor_2-&gt;setSpeed(motorSpeed);\r\n    DCMotor_1-&gt;run(FORWARD);\r\n    DCMotor_2-&gt;run(BACKWARD);\r\n  } else  if (ps2x.Button(PSB_PAD_DOWN)) {\r\n    Serial.print(\"DOWN held this hard: \");\r\n    Serial.println(ps2x.Analog(PSAB_PAD_DOWN), DEC);\r\n    DCMotor_1-&gt;setSpeed(motorSpeed);\r\n    DCMotor_2-&gt;setSpeed(motorSpeed);\r\n    DCMotor_1-&gt;run(BACKWARD);\r\n    DCMotor_2-&gt;run(BACKWARD);\r\n  } else {\r\n    DCMotor_1-&gt;setSpeed(0);\r\n    DCMotor_1-&gt;run(RELEASE);\r\n    DCMotor_2-&gt;setSpeed(0);\r\n    DCMotor_2-&gt;run(RELEASE);\r\n  }\r\n\r\n  if (ps2x.Button(PSB_CROSS)) {\r\n    Serial.println(\"X-X-X-X\");\r\n    ps2x.read_gamepad(true, 200);\r\n    delay(300);\r\n    ps2x.read_gamepad(false, 0);\r\n  }\r\n\r\n  vibrate = ps2x.Analog(PSAB_CROSS);  \/\/this will set the large motor vibrate speed based on how hard you press the blue (X) button\r\n  if (ps2x.NewButtonState()) {        \/\/will be TRUE if any button changes state (on to off, or off to on)\r\n    if (ps2x.Button(PSB_L3))\r\n      Serial.println(\"L3 pressed\");\r\n    if (ps2x.Button(PSB_R3))\r\n      Serial.println(\"R3 pressed\");\r\n    if (ps2x.Button(PSB_L2))\r\n      Serial.println(\"L2 pressed\");\r\n    if (ps2x.Button(PSB_R2))\r\n      Serial.println(\"R2 pressed\");\r\n    if (ps2x.Button(PSB_TRIANGLE))\r\n      Serial.println(\"Triangle pressed\");\r\n  }\r\n\r\n  if (ps2x.ButtonPressed(PSB_CIRCLE)){               \/\/will be TRUE if button was JUST pressed\r\n    Serial.println(\"Circle just pressed\");\r\n    \/\/ \u8235\u673a\u89d2\u5ea6\r\n    for ( int i = 0; i &lt; 10 ; i++ ){ \r\n        currentAngle += i;\r\n        writeServo( 0, currentAngle );\r\n        delay(10);\r\n    }\r\n  }\r\n  if (ps2x.NewButtonState(PSB_CROSS))              \/\/will be TRUE if button was JUST pressed OR released\r\n    Serial.println(\"X just changed\");\r\n  if (ps2x.ButtonReleased(PSB_SQUARE)){              \/\/will be TRUE if button was JUST released\r\n    Serial.println(\"Square just released\");\r\n    \/\/ \u8235\u673a\u89d2\u5ea6\r\n    for ( int i = 0; i &lt; 10 ; i++ ){ \r\n        currentAngle -= i;\r\n        writeServo( 0, currentAngle );\r\n        delay(10);\r\n    }\r\n  }\r\n\r\n  if (ps2x.Button(PSB_L1) || ps2x.Button(PSB_R1)) { \/\/print stick values if either is TRUE\r\n    Serial.print(\"Stick Values:\");\r\n    Serial.print(ps2x.Analog(PSS_LY), DEC); \/\/Left stick, Y axis. Other options: LX, RY, RX\r\n    Serial.print(\",\");\r\n    Serial.print(ps2x.Analog(PSS_LX), DEC);\r\n    Serial.print(\",\");\r\n    Serial.print(ps2x.Analog(PSS_RY), DEC);\r\n    Serial.print(\",\");\r\n    Serial.println(ps2x.Analog(PSS_RX), DEC);\r\n  }\r\n  delay(50);\r\n}<\/code><\/pre>\n<p>\u6ce8\u610f\uff1a<\/p>\n<ul>\n<li>PS2\u624b\u67c4\u4e3a\u975e\u70ed\u63d2\u62d4\uff0c\u5728\u5b9e\u9645\u9879\u76ee\u7528\uff0c\u9700\u8981\u7f16\u5199\u91cd\u8fde\u68c0\u6d4b\uff0c\u5982\u65e0\u6cd5\u627e\u5230\u8bbe\u5907\uff0c\u8bf7\u91cd\u542fArduino\u63a7\u5236\u5668\u3002<\/li>\n<li>\u624b\u67c4\u4e00\u6bb5\u65f6\u95f4\u4e0d\u64cd\u4f5c\u4f1a\u81ea\u52a8\u4f11\u7720\uff0c\u6309start\u6216analog\u5524\u9192\u3002<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>4\u3001\u7ee7\u7535\u5668\u63a7\u5236<\/h3>\n<p>\u5c06\u7535\u5b50\u5f00\u5173\u3001\u7ee7\u7535\u5668\u6216\u8005\u76f8\u5173\u6a21\u5757\u63a7\u5236\u7aef\uff0c\u63a5\u5230Servo\u8235\u673a\u5f15\u811a\uff08\u8f93\u5165\u7535\u6e90\u9ed8\u8ba4\u4e0d\u9700\u8981\u63a5\uff09\u3002<\/p>\n<p><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021022704515460.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-6232\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021022704515460.jpg\" alt=\"\" width=\"680\" height=\"668\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021022704515460.jpg 680w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021022704515460-300x295.jpg 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/2021022704515460-624x613.jpg 624w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><\/a><\/p>\n<p>\u4ee3\u7801\u793a\u4f8b\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">#include &lt;Wire.h&gt;\r\n#include \"QGPMaker_MotorShield.h\"\r\nQGPMaker_MotorShield AFMS = QGPMaker_MotorShield();\r\nvoid setup(){\r\n  AFMS.begin(50);\r\n}\r\nvoid loop(){\r\n  AFMS.setPin(2, HIGH); \/\/2#\u8235\u673a\u53e3\u8f93\u51fa\u9ad8\u7535\u5e73\uff08\u7535\u5b50\u5f00\u5173\u6253\u5f00\uff09\r\n  \/\/AFMS.setPWM(2, 100); \/\/2#\u8235\u673a\u53e3\u8f93\u51faPWM\u503c4000\uff08\u53ef\u4f5c\u4e3aPWM\u63a7\u5236\uff0c\u7535\u673a\u8c03\u901f\uff0cLED\u4eae\u5ea6\u8c03\u8282\u7b49\uff09\r\n  delay(300);\r\n  AFMS.setPWM(2, LOW);\r\n  delay(3000);\r\n  }<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h1>\u56db\u3001\u6392\u7206\u673a\u5668\u4eba<\/h1>\n<p>\u8fd9\u6b21\u505a\u7684\u6392\u7206\u673a\u5668\u4ebaV1.0\u4e3b\u8981\u5b9e\u73b0\u4e86\u673a\u68b0\u81c2\u63a7\u5236\u3001\u5e95\u76d8\u63a7\u5236\u3001\u65e0\u7ebf\u624b\u67c4\u63a7\u5236\uff0c\u540e\u7eed\u518d\u589e\u52a0\u6444\u50cf\u5934\u548c\u81ea\u52a8\u8bc6\u522b\u548c\u63a7\u5236\u3002<\/p>\n<p>\u5b9e\u73b0\u65b9\u6cd5\u5176\u5b9e\u4e5f\u5f88\u7b80\u5355\uff0c\u53c2\u8003\u4e0a\u65b9\u7684\u9a71\u52a8\u7248\u4f7f\u7528\u65b9\u6cd5\u5373\u53ef\uff0c\u4e0d\u5728\u8fd9\u91cc\u8d58\u8ff0\uff0c\u4ee3\u7801\u8be6\u89c1\uff1ahttps:\/\/github.com\/yanjingang\/robot_arm_control<\/p>\n<p>\u8fd0\u884c\u6548\u679c\uff1a<\/p>\n<div style=\"width: 625px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-6212-1\" width=\"625\" height=\"1111\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot.mp4?_=1\" \/><a href=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot.mp4\">https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2022\/04\/explosion-proof-robot.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<p>yan 22.5.4<\/p>\n<p>&nbsp;<\/p>\n<p>\u53c2\u8003\uff1a<\/p>\n<p><a href=\"https:\/\/www.7gp.cn\/archives\/308\" target=\"_blank\" rel=\"noopener\">Arduino MotorShiled\u7535\u673a\u9a71\u52a8\u5668\u8bf4\u660e<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e94\u4e00\u75ab\u60c5\u9632\u63a7\u4e0d\u80fd\u5916\u51fa\uff0c\u5446\u5728\u5bb6\u91cc\u5b9e\u5728\u65e0\u804a\uff0c\u51b3\u5b9a\u8ddf\u513f\u5b50\u4e00\u8d77\u505a\u4e2a\u6392\u7206\u673a\u5668\u4eba\uff0c\u9700\u8981\u540c\u65f6\u63a7\u52364\u4e2a\u8235\u673a\u30012\u4e2a\u5e95\u76d8\u7535\u673a\u30011\u4e2a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[353],"tags":[354,1195,1196,428,1194],"_links":{"self":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/6212"}],"collection":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6212"}],"version-history":[{"count":2,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/6212\/revisions"}],"predecessor-version":[{"id":6404,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/6212\/revisions\/6404"}],"wp:attachment":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}