
Kildekode
Fork of PRO1 by
nucleo_servo.cpp@2:1c27a43bb9b7, 2016-11-02 (annotated)
- Committer:
- kimnielsen
- Date:
- Wed Nov 02 08:05:41 2016 +0000
- Revision:
- 2:1c27a43bb9b7
- Parent:
- 0:d3dbe632b1a9
Team5 kildekode 2-11-16
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 | } |