以往应用开发经历:Tenventos ch32v307 + 北京工业职业技术学院 印象_哔哩哔哩_bilibili
这次的小制作是Arduino 太极创客 meArm机械臂,
用到 Arduino IDE,版本试了,最新版和往期都可用,
上次说到一个手抓的舵机没有摇杆控制的效果,
找到原因了,
应该是D5而不是D8端口,
// 定义舵机连接的数字引脚const int basePin = 11;const int shoulderPin = 10;const int elbowPin = 9;const int wristPin = 5;
爪子的问题解决了,
后面是用串口助手交互的问题:
,
摇杆操作后:
Base-底盘平台,初始值为90°:第二项Shoulder是勾动摇杆的结果,
单独调试这个串口驱动舵机的程序:
/*Serial-Servo-2by太极创客(2016-06-03)www.taichi-maker.com 本示例程序为配合太极创客制作的《零基础入门学用Arduino教程-MeArm篇》使用本示例程序旨在演示如何通过串口监视器控制4个伺服电机(舵机)。 有关电路连接以及其他相关内容,请参见太极创客网站关于本示例程序的相关页面。This example code is in the public domain.*/#include <Servo.h> Servo base, fArm, rArm, claw; //建立4个电机对象 int dataIndex = 0;void setup() { base.attach(11); // base 伺服电机连接引脚11 电机代号'b' rArm.attach(10); // rArm 伺服电机连接引脚10 电机代号'r' fArm.attach(9); // fArm 伺服电机连接引脚9 电机代号'f' claw.attach(6); // claw 伺服电机连接引脚6 电机代号'c' Serial.begin(9600); Serial.println("Please input serial data.");} void loop() {delay(1000); if (Serial.available()) { // 检查串口缓存是否有数据等待传输 char servoName = Serial.read(); //获取电机指令中电机编号信息 Serial.print("servoName ="); Serial.print(servoName); Serial.print(" , "); int data = Serial.parseInt(); //获取电机指令中电机角度信息 switch(servoName){ //根据电机指令中电机信息决定对哪一个电机进行角度设置 case 'b': // 电机指令b,设置base电机角度 base.write(data); Serial.print("Set base servo value: "); Serial.println(data); break; case 'r': // 电机指令r,设置rArm电机角度 rArm.write(data); Serial.print("Set rArm servo value: "); Serial.println(data); break; case 'f': // 电机指令f,设置fArm电机角度 fArm.write(data); Serial.print("Set fArm servo value: "); Serial.println(data); break; case 'c': // 电机指令c,设置claw电机角度 claw.write(data); Serial.print("Set claw servo value: "); Serial.println(data); break; } }}
问题来了,P是为什么呢?程序里没有P啊,