Takeuchi Kouichi
/
2bk0819_Gyro_test03
エレキジャックweb mbed入門 ジャイロとサーボを動かそう 課題3です。
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 //Gyro test03 00002 // Akidukidensi AE-GYRO-SMD 00003 #include "mbed.h" 00004 #include "TextLCD0420.h" 00005 00006 #define ON 1 00007 #define OFF 0 00008 #define Gy1_offset 0.01 00009 00010 DigitalOut mled0(LED1); 00011 DigitalOut mled1(LED2); 00012 AnalogIn gy1_adc(p16); 00013 AnalogIn gy2_adc(p17); 00014 00015 TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3 00016 00017 double round3(double x){ 00018 double y; 00019 y=double(int((x+0.005)*100))/100; 00020 return(y); 00021 } 00022 00023 int main() { 00024 float gy1_data; 00025 float gy1_center; 00026 float gy1_sgm=0; 00027 float gy1_wk0=0,gy1_wk1=0; 00028 float gy1_avg=0,gy1_sum; 00029 int i; 00030 00031 lcd.cls(); 00032 lcd.locate(0,0); 00033 lcd.printf("*** Gyro test03 ****\n"); 00034 00035 gy1_center=0; 00036 for(i=0;i<10;i++){ 00037 gy1_center=gy1_center+round3(gy1_adc.read()*3.3); 00038 wait(0.01); 00039 } 00040 gy1_center=round3(gy1_center/10); 00041 00042 00043 while(1){ 00044 gy1_sum=0; 00045 for(i=0;i<10;i++){ 00046 gy1_sum=gy1_sum+round3(gy1_adc.read()*3.3); 00047 wait(0.01); 00048 } 00049 gy1_avg=round3(gy1_sum/10); 00050 00051 gy1_wk1=round3((gy1_avg-gy1_center)*1000/6.7); 00052 gy1_sgm=round3(gy1_sgm+(gy1_wk0+gy1_wk1)*0.1/2); 00053 gy1_wk0=gy1_wk1; 00054 00055 if(gy1_sgm > 90){ 00056 gy1_sgm=90; 00057 } 00058 else if(gy1_sgm < -90){ 00059 gy1_sgm=-90; 00060 } 00061 00062 lcd.locate(0,1); 00063 lcd.printf("%3.4f %3.4f",gy1_avg,gy1_center); 00064 lcd.locate(0,2); 00065 lcd.printf("Deg:%2.0f",gy1_sgm); 00066 }//while 00067 }//main 00068
Generated on Sun Aug 14 2022 16:12:58 by 1.7.2