- 我用的机械臂的动力来源是舵机,所以需要通过pwm波来控制,而在arduino中没有专门输出pwm波的函数有的是一个ledc的函数,它是用来控制led灯的,但是同样可以用来输出pwm波。
- ledc详细的学习可以参考这位大佬的博客
- 我们首先需要确定机械臂的初始位置并找到各个舵机的初始值,这需要根据实际的数据去自己测定,这里我们以
L2与Z轴重合方向指向Z轴正方向,L3垂直L2方向指向X正轴
为初始位置且认为舵机此时的角度为0度(这里舵机的角度取值范围为-90°~90°)机械臂状态如下图:
正视图
俯视图
下面是程序实现
#include <WiFi.h>
double x, y, z, AE, AC,A, L2 = 10, L3 = 10; //L2和L3输入机械臂各部分的长度,这里假设都为10
#define DJ0_PWM 13 //定义输出pwm波的IO口
#define DJ1_PWM 12
#define DJ2_PWM 14
int freq = 50; //设置频率50Hz也就是周期20ms
int freq0 = freq; // 频率
int channel0 = 0; // 通道0,共16个通道,0~15
int resolution0 = 10;