demonstration program for the library created for PCA9685 PWM controller

Dependencies:   PCA9685PWM mbed

Committer:
dreamworker
Date:
Wed Jul 22 13:23:02 2015 +0000
Revision:
0:305237ecbbe5
Child:
1:9fd2d2f5184e
Hello World example for PCA9685 PWM controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dreamworker 0:305237ecbbe5 1 /*PCA9685 library example code
dreamworker 0:305237ecbbe5 2 *test library performed with two servomotor, attached in channel 0 and 1, that rotate to the right and to the left
dreamworker 0:305237ecbbe5 3 */
dreamworker 0:305237ecbbe5 4 #include"PCA9685.h"
dreamworker 0:305237ecbbe5 5 #include"mbed.h"
dreamworker 0:305237ecbbe5 6
dreamworker 0:305237ecbbe5 7
dreamworker 0:305237ecbbe5 8
dreamworker 0:305237ecbbe5 9 PCA9685 pwm(D14,D15);
dreamworker 0:305237ecbbe5 10
dreamworker 0:305237ecbbe5 11 void setServoPulse(uint8_t n, float pulse) {
dreamworker 0:305237ecbbe5 12 float pulselength = 10000; // 10,000 units per seconds
dreamworker 0:305237ecbbe5 13 pulse = 4094 * pulse / pulselength;
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 0:305237ecbbe5 19 pwm.setPrescale(64); //This value is decided for 10ms interval.
dreamworker 0:305237ecbbe5 20 pwm.frequencyI2C(400000); //400kHz
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 0:305237ecbbe5 27 wait(0.2);
dreamworker 0:305237ecbbe5 28 setServoPulse(0, 2300);
dreamworker 0:305237ecbbe5 29 setServoPulse(1, 500);
dreamworker 0:305237ecbbe5 30 wait(0.5);//delay necessary to perform the action
dreamworker 0:305237ecbbe5 31 setServoPulse(0, 1350);
dreamworker 0:305237ecbbe5 32 setServoPulse(1, 1350);
dreamworker 0:305237ecbbe5 33 wait(0.5);
dreamworker 0:305237ecbbe5 34 setServoPulse(0,550);
dreamworker 0:305237ecbbe5 35 setServoPulse(1, 2250);
dreamworker 0:305237ecbbe5 36 wait(0.5);
dreamworker 0:305237ecbbe5 37 setServoPulse(0, 2300);
dreamworker 0:305237ecbbe5 38 wait(2);
dreamworker 0:305237ecbbe5 39 for (int mov = 550; mov < 2300; mov++){
dreamworker 0:305237ecbbe5 40 setServoPulse(0, mov);
dreamworker 0:305237ecbbe5 41 wait(0.001);
dreamworker 0:305237ecbbe5 42 }
dreamworker 0:305237ecbbe5 43 for (int mov = 500; mov < 2200; mov++){
dreamworker 0:305237ecbbe5 44 setServoPulse(1, mov);
dreamworker 0:305237ecbbe5 45 wait(0.001);
dreamworker 0:305237ecbbe5 46 }
dreamworker 0:305237ecbbe5 47 }
dreamworker 0:305237ecbbe5 48 }