ドローン用計測制御基板の作り方 vol.1 ハードウェア編 p.20掲載 サーボモータ(SG-90)の駆動

Dependencies:   mbed

Committer:
Joeatsumi
Date:
Mon Dec 30 08:55:35 2019 +0000
Revision:
0:0add14ba6212
20191230

Who changed what in which revision?

UserRevisionLine numberNew 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