Paolo Sanna
/
PCA9685_Hello_World
demonstration program for the library created for PCA9685 PWM controller
main.cpp@1:9fd2d2f5184e, 2015-07-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |