
Kildekode til robot
Fork of PRO1 by
nucleo_servo.cpp@1:396a582e8861, 2016-10-31 (annotated)
- Committer:
- kimnielsen
- Date:
- Mon Oct 31 10:00:46 2016 +0000
- Revision:
- 1:396a582e8861
- Parent:
- 0:d3dbe632b1a9
added double
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kimnielsen | 0:d3dbe632b1a9 | 1 | #include "mbed.h" |
kimnielsen | 0:d3dbe632b1a9 | 2 | #include "nucleo_servo.h" |
kimnielsen | 0:d3dbe632b1a9 | 3 | |
kimnielsen | 0:d3dbe632b1a9 | 4 | Servo::Servo(PinName pin){ |
kimnielsen | 0:d3dbe632b1a9 | 5 | servoPWM = new PwmOut(pin); |
kimnielsen | 0:d3dbe632b1a9 | 6 | servoPWM->period_ms(20); //Do not change ;) |
kimnielsen | 0:d3dbe632b1a9 | 7 | servoPWM->pulsewidth_us(600); |
kimnielsen | 0:d3dbe632b1a9 | 8 | degrees = 0; |
kimnielsen | 0:d3dbe632b1a9 | 9 | } |
kimnielsen | 0:d3dbe632b1a9 | 10 | Servo::~Servo(){ |
kimnielsen | 0:d3dbe632b1a9 | 11 | delete servoPWM; |
kimnielsen | 0:d3dbe632b1a9 | 12 | } |
kimnielsen | 0:d3dbe632b1a9 | 13 | |
kimnielsen | 0:d3dbe632b1a9 | 14 | void Servo::set_position(float deg){ |
kimnielsen | 0:d3dbe632b1a9 | 15 | degrees = deg; |
kimnielsen | 0:d3dbe632b1a9 | 16 | if(degrees > 180)degrees = 180; |
kimnielsen | 0:d3dbe632b1a9 | 17 | if(degrees < 0)degrees = 0; |
kimnielsen | 0:d3dbe632b1a9 | 18 | int pw_us = 640 + (degrees / 180 * 1900); |
kimnielsen | 0:d3dbe632b1a9 | 19 | servoPWM->pulsewidth_us(pw_us); |
kimnielsen | 0:d3dbe632b1a9 | 20 | } |
kimnielsen | 0:d3dbe632b1a9 | 21 | |
kimnielsen | 0:d3dbe632b1a9 | 22 | void Servo::turn_left(float deg){ |
kimnielsen | 0:d3dbe632b1a9 | 23 | degrees -= deg; |
kimnielsen | 0:d3dbe632b1a9 | 24 | set_position(degrees); |
kimnielsen | 0:d3dbe632b1a9 | 25 | } |
kimnielsen | 0:d3dbe632b1a9 | 26 | |
kimnielsen | 0:d3dbe632b1a9 | 27 | void Servo::turn_right(float deg){ |
kimnielsen | 0:d3dbe632b1a9 | 28 | degrees += deg; |
kimnielsen | 0:d3dbe632b1a9 | 29 | set_position(degrees); |
kimnielsen | 0:d3dbe632b1a9 | 30 | } |