![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
课程使用
main.cpp@2:8acbbc5baa0a, 2019-10-25 (annotated)
- 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?
User | Revision | Line number | New 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 | } |