编辑: 元素吧里的召唤 | 2019-09-01 |
实验材料 : 伺服马达 (笔者采用的型号是 Futaba S3003,很容易在模型玩具店买到,价格 也比较低廉)
1 个10KΩ可变电阻 (或类比摇杆模组)
2 个 外接 5V 电源
1 组 笔者将早期 5.25 既淼乃芙和夂懈脑斐闪礁鏊欧泶锏闹Ъ, 读者可以 采用压克力板、 文具整理盒或甚至瓦楞纸板等素材 ,来制作支架, 不用拘泥特 定的材质或形式 . 底部的马达可左右摆动, 上面的马达可上下旋转.
2 不过, 即使没有类比摇杆也无妨 , 读者可用两个可变电阻代替. 实验电路: 下图用两个可变电阻代表类比摇杆的 X, Y 轴控制器,请将输出分 别接在 Arduino 的类比 A0 和A1 脚,若采用类比摇杆模组 , 请将 X 与Y的输出分别接在类比 A0 与A1 脚:本单元将采用俗称 「香菇头」 的电玩类比摇杆来控制自制机械手臂.类比摇杆 内部由两个 10KΩ 可变电阻组成.市面上可以买到现成的类比摇杆模组,笔 者是从旧的 Sony PlayStation
2 摇杆拆下来的, 其外观结构如下 :
3 伺服马达讯号输入端子可接在 Arduino 的数位脚 2~13 脚, 此例接在数位
8 和9脚.Arduino 板子的电源输出无法同时供应两组伺服马达使用 , 请读者外 接5V 电源 , 且外部 5V 电源的接地要和 Arduino 板的接地相连结.
4 外接电源可用 USB 电源 , 或者安装四个
3 号电池的电池盒: 实验程式: 使用类比摇杆 (两个可变电阻) 操控机械手臂的程式码如下 : #include Servo servoX, servoY;
// 宣告两个伺服马达程式物件 const byte pinX = A0;
// 宣告可变电阻的输入端子 const byte pinY = A1;
int valX, posX;
// 暂存类比输入值的变数 int valY, posY;
void setup() { servoX.attach(8);
// 设定伺服马达的接脚 servoY.attach(9);
} void loop() { valX = analogRead(pinX);
// 读取可变电阻(摇杆)的输入值 valY = analogRead(pinY);
// 将类比输入值 0~1024,对应成伺服马达的 0~179 度posX = map(valX, 0, 1023, 0, 179);
posY = map(valY, 0, 1023, 0, 179);
servoX.write(posX);
// 设定伺服马达的旋转角度 servoY.write(posY);
delay(15);
// 延迟一段时间,让伺服马达转到定位 }