Atsumi Toda
/
Auto_pilot_servo
ドローン用計測制御基板の作り方 vol.1 ハードウェア編 p.20掲載 サーボモータ(SG-90)の駆動
main.cpp@0:0add14ba6212, 2019-12-30 (annotated)
- Committer:
- Joeatsumi
- Date:
- Mon Dec 30 08:55:35 2019 +0000
- Revision:
- 0:0add14ba6212
20191230
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Joeatsumi | 0:0add14ba6212 | 1 | //================================================== |
Joeatsumi | 0:0add14ba6212 | 2 | //Servo |
Joeatsumi | 0:0add14ba6212 | 3 | // |
Joeatsumi | 0:0add14ba6212 | 4 | //MPU board: mbed LPC1768 |
Joeatsumi | 0:0add14ba6212 | 5 | //2019/11/17 A.Toda |
Joeatsumi | 0:0add14ba6212 | 6 | //================================================== |
Joeatsumi | 0:0add14ba6212 | 7 | #include "mbed.h" |
Joeatsumi | 0:0add14ba6212 | 8 | |
Joeatsumi | 0:0add14ba6212 | 9 | //================================================== |
Joeatsumi | 0:0add14ba6212 | 10 | #define SERVO_PERIOD 0.020 |
Joeatsumi | 0:0add14ba6212 | 11 | //================================================== |
Joeatsumi | 0:0add14ba6212 | 12 | |
Joeatsumi | 0:0add14ba6212 | 13 | //Port Setting |
Joeatsumi | 0:0add14ba6212 | 14 | |
Joeatsumi | 0:0add14ba6212 | 15 | PwmOut ELE(p21); |
Joeatsumi | 0:0add14ba6212 | 16 | Serial pc(USBTX, USBRX); //UART |
Joeatsumi | 0:0add14ba6212 | 17 | |
Joeatsumi | 0:0add14ba6212 | 18 | //================================================== |
Joeatsumi | 0:0add14ba6212 | 19 | //Timer valiables |
Joeatsumi | 0:0add14ba6212 | 20 | //================================================== |
Joeatsumi | 0:0add14ba6212 | 21 | |
Joeatsumi | 0:0add14ba6212 | 22 | double pulse_width_ele; |
Joeatsumi | 0:0add14ba6212 | 23 | |
Joeatsumi | 0:0add14ba6212 | 24 | //================================================== |
Joeatsumi | 0:0add14ba6212 | 25 | //Main |
Joeatsumi | 0:0add14ba6212 | 26 | //================================================== |
Joeatsumi | 0:0add14ba6212 | 27 | int main() { |
Joeatsumi | 0:0add14ba6212 | 28 | |
Joeatsumi | 0:0add14ba6212 | 29 | //UART initialization |
Joeatsumi | 0:0add14ba6212 | 30 | pc.baud(115200); |
Joeatsumi | 0:0add14ba6212 | 31 | |
Joeatsumi | 0:0add14ba6212 | 32 | //define servo period |
Joeatsumi | 0:0add14ba6212 | 33 | ELE.period(SERVO_PERIOD); // servo requires 20ms period |
Joeatsumi | 0:0add14ba6212 | 34 | pulse_width_ele=0.6/1000.0; |
Joeatsumi | 0:0add14ba6212 | 35 | |
Joeatsumi | 0:0add14ba6212 | 36 | //while |
Joeatsumi | 0:0add14ba6212 | 37 | while(1) { |
Joeatsumi | 0:0add14ba6212 | 38 | |
Joeatsumi | 0:0add14ba6212 | 39 | // servo position determined by a pulsewidth between 0.6-2.4ms |
Joeatsumi | 0:0add14ba6212 | 40 | |
Joeatsumi | 0:0add14ba6212 | 41 | for(int i=0;i<18;i++){ |
Joeatsumi | 0:0add14ba6212 | 42 | pulse_width_ele += ( 0.1/1000.0 ); |
Joeatsumi | 0:0add14ba6212 | 43 | ELE.pulsewidth(pulse_width_ele); |
Joeatsumi | 0:0add14ba6212 | 44 | pc.printf("Pulse width is %f\r\n",pulse_width_ele); |
Joeatsumi | 0:0add14ba6212 | 45 | wait(1.0); |
Joeatsumi | 0:0add14ba6212 | 46 | } |
Joeatsumi | 0:0add14ba6212 | 47 | |
Joeatsumi | 0:0add14ba6212 | 48 | pulse_width_ele=0.6/1000.0; |
Joeatsumi | 0:0add14ba6212 | 49 | |
Joeatsumi | 0:0add14ba6212 | 50 | }//while ends |
Joeatsumi | 0:0add14ba6212 | 51 | |
Joeatsumi | 0:0add14ba6212 | 52 | }//main ends |