エレキジャックweb mbed入門 ジャイロとサーボを動かそう 課題3です。

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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