demonstration program for the library created for PCA9685 PWM controller

Dependencies:   PCA9685PWM mbed

main.cpp

Committer:
dreamworker
Date:
2015-07-22
Revision:
0:305237ecbbe5
Child:
1:9fd2d2f5184e

File content as of revision 0:305237ecbbe5:

/*PCA9685 library example code
 *test library performed with two servomotor, attached in channel 0 and 1,  that rotate to the right and to the left
 */ 
#include"PCA9685.h"
#include"mbed.h"



PCA9685 pwm(D14,D15);
 
void setServoPulse(uint8_t n, float pulse) {
    float pulselength = 10000;   // 10,000 units per seconds
    pulse = 4094 * pulse / pulselength;
    pwm.setPWM(n, 0, pulse);
}
 
void initServoDriver() {
    pwm.begin();
    pwm.setPrescale(64);    //This value is decided for 10ms interval.
    pwm.frequencyI2C(400000); //400kHz
}
 
int main() {

    while(1){
    initServoDriver();
    wait(0.2);
    setServoPulse(0, 2300);
    setServoPulse(1, 500);    
    wait(0.5);//delay necessary to perform the action
    setServoPulse(0, 1350);
    setServoPulse(1, 1350);
    wait(0.5);
    setServoPulse(0,550);
    setServoPulse(1, 2250);
    wait(0.5);
    setServoPulse(0, 2300);
    wait(2);
    for (int mov = 550; mov < 2300; mov++){
    setServoPulse(0, mov);
    wait(0.001); 
    }  
    for (int mov = 500; mov < 2200; mov++){
    setServoPulse(1, mov);
    wait(0.001); 
    }     
    }
}