PCA9685模块
Arduino uno与模块连线
Adafruit库安装
使用Arduino的好处之一是有丰富的库支持。PC9685模块也有对应的库可以使用,这是一个外部库,由Adafruit提供。
选择工具菜单下的管理库选项

搜索adafruit pwm

点击安装

安装完后,即可在文件下示例里面找到对应的示例

控制程序
PCA9685可以设置更新频率,时基脉冲周期20ms相当于50HZ更新频率。PCA9685采用12位的寄存器来控制PWM占比,对于0.5ms,相当于0.5/204096=102的寄存器值。以此类推如下:
0.5ms————–0度:0.5/20
4096 = 102
1.0ms————45度:1/204096 = 204
1.5ms————90度:1.5/20
4096 = 306
2.0ms———–135度:2/204096 = 408
2.5ms———–180度:2.5/20
4096 =510
控制程序使用串口通讯接受指令,实现0/45/90/135/180度,总共5种角度的控制。
#include
#include
// 默认地址 0x40 Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); #define SERVO_0 102 #define SERVO_45 187 #define SERVO_90 280 #define SERVO_135 373 #define SERVO_180 510 // our servo # counter uint8_t servonum = 0; char comchar; void setup() {
Serial.begin(9600); Serial.println("8 channel Servo test!"); pwm.begin(); pwm.setPWMFreq(50); // 50HZ更新频率,相当于20ms的周期 delay(10); } void loop() {
while(Serial.available()>0){
comchar = Serial.read();//读串口第一个字节 switch(comchar) {
case '0': pwm.setPWM(0, 0, SERVO_0); Serial.write(comchar); break; case '1': pwm.setPWM(0, 0, SERVO_45); Serial.write(comchar); break; case '2': pwm.setPWM(0, 0, SERVO_90); Serial.write(comchar); break; case '3': pwm.setPWM(0, 0, SERVO_135); Serial.write(comchar); break; case '4': pwm.setPWM(0, 0, SERVO_180); Serial.write(comchar); break; default: Serial.write(comchar); break; } } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211622.html原文链接:https://javaforall.net
