version qui tourne avec un servo
Dependencies: Adafruit-PWM-Servo-Driver mbed
main.cpp@1:b6bd2138631e, 2017-11-14 (annotated)
- Committer:
- fixair
- Date:
- Tue Nov 14 18:09:28 2017 +0000
- Revision:
- 1:b6bd2138631e
- Parent:
- 0:1fe8151cd4e1
toto v2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fixair | 0:1fe8151cd4e1 | 1 | #include"Adafruit_PWMServoDriver.h" |
fixair | 0:1fe8151cd4e1 | 2 | |
fixair | 0:1fe8151cd4e1 | 3 | Adafruit_PWMServoDriver pwm(PA_10, PA_9, 0x82); |
fixair | 0:1fe8151cd4e1 | 4 | |
fixair | 0:1fe8151cd4e1 | 5 | void setServoPulse(uint8_t n, float pulse) { |
fixair | 0:1fe8151cd4e1 | 6 | float pulselength = 10000; // 10,000 units per seconds |
fixair | 0:1fe8151cd4e1 | 7 | pulse = 4094 * pulse / pulselength; |
fixair | 0:1fe8151cd4e1 | 8 | pwm.setPWM(n, 0, pulse); |
fixair | 0:1fe8151cd4e1 | 9 | } |
fixair | 0:1fe8151cd4e1 | 10 | |
fixair | 0:1fe8151cd4e1 | 11 | void initServoDriver() { |
fixair | 0:1fe8151cd4e1 | 12 | pwm.begin(); |
fixair | 0:1fe8151cd4e1 | 13 | pwm.i2c_probe(); |
fixair | 0:1fe8151cd4e1 | 14 | pwm.setPrescale(64); //This value is decided for 10ms interval. |
fixair | 0:1fe8151cd4e1 | 15 | pwm.setI2Cfreq(400000); //400kHz |
fixair | 0:1fe8151cd4e1 | 16 | } |
fixair | 0:1fe8151cd4e1 | 17 | |
fixair | 0:1fe8151cd4e1 | 18 | int main() { |
fixair | 0:1fe8151cd4e1 | 19 | |
fixair | 0:1fe8151cd4e1 | 20 | while(1){ |
fixair | 0:1fe8151cd4e1 | 21 | initServoDriver(); |
fixair | 0:1fe8151cd4e1 | 22 | wait(0.2); |
fixair | 0:1fe8151cd4e1 | 23 | setServoPulse(0, 2300); |
fixair | 0:1fe8151cd4e1 | 24 | setServoPulse(1, 500); |
fixair | 0:1fe8151cd4e1 | 25 | wait(0.5);//delay necessary to perform the action |
fixair | 0:1fe8151cd4e1 | 26 | setServoPulse(0, 1350); |
fixair | 0:1fe8151cd4e1 | 27 | setServoPulse(1, 1350); |
fixair | 0:1fe8151cd4e1 | 28 | wait(0.5); |
fixair | 0:1fe8151cd4e1 | 29 | setServoPulse(0,550); |
fixair | 0:1fe8151cd4e1 | 30 | setServoPulse(1, 2250); |
fixair | 0:1fe8151cd4e1 | 31 | wait(0.5); |
fixair | 0:1fe8151cd4e1 | 32 | setServoPulse(0, 2300); |
fixair | 0:1fe8151cd4e1 | 33 | wait(2); |
fixair | 0:1fe8151cd4e1 | 34 | for (int mov = 550; mov < 2300; mov++){ |
fixair | 0:1fe8151cd4e1 | 35 | setServoPulse(0, mov); |
fixair | 0:1fe8151cd4e1 | 36 | wait(0.001); |
fixair | 0:1fe8151cd4e1 | 37 | } |
fixair | 0:1fe8151cd4e1 | 38 | for (int mov = 500; mov < 2200; mov++){ |
fixair | 0:1fe8151cd4e1 | 39 | setServoPulse(1, mov); |
fixair | 0:1fe8151cd4e1 | 40 | wait(0.001); |
fixair | 0:1fe8151cd4e1 | 41 | } |
fixair | 0:1fe8151cd4e1 | 42 | } |
fixair | 0:1fe8151cd4e1 | 43 | } |