课程使用

Dependencies:   mbed xiugai

Committer:
lant19
Date:
Fri Oct 25 02:12:38 2019 +0000
Revision:
2:8acbbc5baa0a
Parent:
1:9fd2d2f5184e
with two pca9685

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lant19 2:8acbbc5baa0a 1
dreamworker 0:305237ecbbe5 2 #include"PCA9685.h"
dreamworker 0:305237ecbbe5 3 #include"mbed.h"
dreamworker 0:305237ecbbe5 4
dreamworker 0:305237ecbbe5 5
dreamworker 0:305237ecbbe5 6
lant19 2:8acbbc5baa0a 7 PCA9685 pwm(PB_7,PB_6);//设置SDA与SCL连接的引脚
dreamworker 0:305237ecbbe5 8
lant19 2:8acbbc5baa0a 9
lant19 2:8acbbc5baa0a 10 void setServoPulse(uint8_t n, float angel,int address,float T) { //n为通道 T单位为ms
lant19 2:8acbbc5baa0a 11 float freq;
lant19 2:8acbbc5baa0a 12 freq=1000/T;
lant19 2:8acbbc5baa0a 13
lant19 2:8acbbc5baa0a 14 pwm.setPWMFreq(freq,address);
lant19 2:8acbbc5baa0a 15
lant19 2:8acbbc5baa0a 16 float pulse;
lant19 2:8acbbc5baa0a 17 pulse=(angel/90+0.5)*4096/T;
lant19 2:8acbbc5baa0a 18 pwm.setPWM(n, 0, pulse,address);//pulse为下降沿位置如果希望调整上升沿位置
dreamworker 0:305237ecbbe5 19 }
dreamworker 0:305237ecbbe5 20
lant19 2:8acbbc5baa0a 21 void initServoDriver() {//整体初始化
dreamworker 0:305237ecbbe5 22 pwm.begin();
lant19 2:8acbbc5baa0a 23
lant19 2:8acbbc5baa0a 24 pwm.setPrescale(121,0x80); // 设置20ms用于通用伺服
lant19 2:8acbbc5baa0a 25 pwm.setPrescale(121,0x82);
lant19 2:8acbbc5baa0a 26 pwm.frequencyI2C(400000); //400kHz 快速I2C通信
dreamworker 0:305237ecbbe5 27 }
dreamworker 0:305237ecbbe5 28
dreamworker 0:305237ecbbe5 29 int main() {
lant19 2:8acbbc5baa0a 30 initServoDriver();
dreamworker 0:305237ecbbe5 31
dreamworker 0:305237ecbbe5 32 while(1){
lant19 2:8acbbc5baa0a 33
lant19 2:8acbbc5baa0a 34 setServoPulse(1, 45,0x80,20);
lant19 2:8acbbc5baa0a 35 wait(1);
lant19 2:8acbbc5baa0a 36 setServoPulse(1, 135,0x80,20) ;
lant19 2:8acbbc5baa0a 37 wait(1);
lant19 2:8acbbc5baa0a 38 //for (int mov = 115; mov < 509; mov++){
lant19 2:8acbbc5baa0a 39 //setServoPulse(1, mov,0x82); wait(0.003); }
lant19 2:8acbbc5baa0a 40 //for (int mov = 495; mov > 135; mov--){
lant19 2:8acbbc5baa0a 41 //setServoPulse(1, mov,0x80); wait(0.003);}
lant19 2:8acbbc5baa0a 42
lant19 2:8acbbc5baa0a 43
dreamworker 0:305237ecbbe5 44 }
dreamworker 0:305237ecbbe5 45 }