demonstration program for the library created for PCA9685 PWM controller

Dependencies:   PCA9685PWM mbed

Committer:
dreamworker
Date:
Fri Jul 24 09:04:32 2015 +0000
Revision:
1:9fd2d2f5184e
Parent:
0:305237ecbbe5
Pre-scale factor corrected

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dreamworker 0:305237ecbbe5 1 /*PCA9685 library example code
dreamworker 1:9fd2d2f5184e 2 *test library performed with two servomotors, attached in channel 0 and 1, that rotate to the right and to the left
dreamworker 1:9fd2d2f5184e 3 *servo in chanel 0: Tower Pro SG90
dreamworker 1:9fd2d2f5184e 4 *servo in chanel 1:Goteck GS9025 MG
dreamworker 0:305237ecbbe5 5 */
dreamworker 0:305237ecbbe5 6 #include"PCA9685.h"
dreamworker 0:305237ecbbe5 7 #include"mbed.h"
dreamworker 0:305237ecbbe5 8
dreamworker 0:305237ecbbe5 9
dreamworker 0:305237ecbbe5 10
dreamworker 0:305237ecbbe5 11 PCA9685 pwm(D14,D15);
dreamworker 0:305237ecbbe5 12
dreamworker 0:305237ecbbe5 13 void setServoPulse(uint8_t n, float pulse) {
dreamworker 0:305237ecbbe5 14 pwm.setPWM(n, 0, pulse);
dreamworker 0:305237ecbbe5 15 }
dreamworker 0:305237ecbbe5 16
dreamworker 0:305237ecbbe5 17 void initServoDriver() {
dreamworker 0:305237ecbbe5 18 pwm.begin();
dreamworker 1:9fd2d2f5184e 19 pwm.setPrescale(121); // set 20ms for generic servos
dreamworker 1:9fd2d2f5184e 20 pwm.frequencyI2C(400000); //400kHz fast I2C comunication
dreamworker 0:305237ecbbe5 21 }
dreamworker 0:305237ecbbe5 22
dreamworker 0:305237ecbbe5 23 int main() {
dreamworker 0:305237ecbbe5 24
dreamworker 0:305237ecbbe5 25 while(1){
dreamworker 0:305237ecbbe5 26 initServoDriver();
dreamworker 1:9fd2d2f5184e 27 setServoPulse(0, 308); //0 degree chanel 0
dreamworker 1:9fd2d2f5184e 28 setServoPulse(1, 495); //-90 degree chanel 1
dreamworker 1:9fd2d2f5184e 29 wait(1);
dreamworker 1:9fd2d2f5184e 30 setServoPulse(0, 135); //90 degree chanel 0
dreamworker 1:9fd2d2f5184e 31 setServoPulse(1, 308); //0 degree chanel 1
dreamworker 1:9fd2d2f5184e 32 wait(1);
dreamworker 1:9fd2d2f5184e 33 setServoPulse(1, 135); //90 degree chanel 1
dreamworker 1:9fd2d2f5184e 34 setServoPulse(0, 509); //0 degree chanel 1
dreamworker 1:9fd2d2f5184e 35 wait(1);
dreamworker 1:9fd2d2f5184e 36 for (int mov = 495; mov > 135; mov--){
dreamworker 1:9fd2d2f5184e 37 setServoPulse(1, mov);
dreamworker 1:9fd2d2f5184e 38 wait(0.003);}
dreamworker 1:9fd2d2f5184e 39 for (int mov = 115; mov < 509; mov++){
dreamworker 0:305237ecbbe5 40 setServoPulse(0, mov);
dreamworker 1:9fd2d2f5184e 41 wait(0.003);
dreamworker 1:9fd2d2f5184e 42 }
dreamworker 0:305237ecbbe5 43 }
dreamworker 0:305237ecbbe5 44 }