kubtss / Mbed 2 deprecated BIRD2017

Dependencies:   mbed-rtos mbed

Committer:
shimogamo
Date:
Thu Nov 26 08:14:41 2015 +0000
Revision:
10:0a4bf8c82493
Parent:
9:d1fc0805ec7d
Child:
12:8e39bb45c61c
previous pin assign

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shimogamo 0:2a15bd367891 1 #include "mbed.h"
shimogamo 0:2a15bd367891 2 #include "Global.h"
shimogamo 9:d1fc0805ec7d 3 #include "rtos.h"
shimogamo 9:d1fc0805ec7d 4
shimogamo 3:e3c41153e5fe 5
shimogamo 3:e3c41153e5fe 6 //トリムはGlobalで足したほうがいいかも
shimogamo 3:e3c41153e5fe 7
shimogamo 3:e3c41153e5fe 8
shimogamo 9:d1fc0805ec7d 9 Queue<char, 20> Global::queue;
shimogamo 3:e3c41153e5fe 10 //----------------普段は変動しない変数(定数)------------------------------------------------------
shimogamo 9:d1fc0805ec7d 11 //サーボのパラメータ(角度(度数法)で設定)max,minはニュートラルを基準にしている
shimogamo 4:650af94bf062 12 double Global::maxpitch = 5.0;
shimogamo 4:650af94bf062 13 double Global::minpitch = -5.0;
shimogamo 4:650af94bf062 14 double Global::neutralpitch = 0;
shimogamo 4:650af94bf062 15 double Global::maxyaw = 30.0;
shimogamo 4:650af94bf062 16 double Global::minyaw = -30.0;
shimogamo 4:650af94bf062 17 double Global::neutralyaw = 0;
shimogamo 8:ca92cb674004 18 //ジョイスティックのパラメータ(mbedのAnalogIn値[0,1])/max, min, neu全て[0,1]の絶対的な値をとる
shimogamo 4:650af94bf062 19 double Global::maxpitchdegree = 1.0;
shimogamo 4:650af94bf062 20 double Global::minpitchdegree = 0;
shimogamo 4:650af94bf062 21 double Global::neutralpitchdegree = 0.5;
shimogamo 4:650af94bf062 22 double Global::maxyawdegree = 1.0;
shimogamo 4:650af94bf062 23 double Global::minyawdegree = 0;
shimogamo 4:650af94bf062 24 double Global::neutralyawdegree = 0.5;
shimogamo 9:d1fc0805ec7d 25 //ジョイスティックの遊び([-1,1]でニュートラルを0とした時の値)
shimogamo 8:ca92cb674004 26 double Global::maxpitchplayratio = 0;
shimogamo 8:ca92cb674004 27 double Global::minpitchplayratio = 0;
shimogamo 8:ca92cb674004 28 double Global::maxyawplayratio = 0;
shimogamo 8:ca92cb674004 29 double Global::minyawplayratio = 0;
shimogamo 9:d1fc0805ec7d 30 //トリムの変化率(角度(度数法)で設定)
shimogamo 9:d1fc0805ec7d 31 double Global::trimpitchrate = 0.5;
shimogamo 3:e3c41153e5fe 32
shimogamo 3:e3c41153e5fe 33 //----------------周期的に変動する変数------------------------------------------------------
shimogamo 8:ca92cb674004 34 double Global::pitch;
shimogamo 8:ca92cb674004 35 double Global::pitchdegree;//controllerの生データ
shimogamo 0:2a15bd367891 36 double Global::trimpitch;
shimogamo 10:0a4bf8c82493 37 int Global::inttrimpitch;
shimogamo 8:ca92cb674004 38 double Global::yaw;
shimogamo 8:ca92cb674004 39 double Global::yawdegree;//controllerの生データ
shimogamo 8:ca92cb674004 40 double Global::trimyaw;
shimogamo 10:0a4bf8c82493 41 int Global::inttrimyaw;
shimogamo 1:3f857674a290 42 double Global::airspeed;
shimogamo 1:3f857674a290 43 double Global::cadence;
shimogamo 1:3f857674a290 44 double Global::altitude;
shimogamo 10:0a4bf8c82493 45 double Global::ultsonic;
shimogamo 10:0a4bf8c82493 46 double Global::atmpress;
shimogamo 0:2a15bd367891 47
shimogamo 4:650af94bf062 48 //----------------どこからでも使えるled,スイッチ,タイマーの一括管理-----------------------------
shimogamo 0:2a15bd367891 49 Timer Global::timer;
shimogamo 0:2a15bd367891 50 DigitalIn Global::initializeswitch(p23,PullUp);//否定で押しているとき
shimogamo 0:2a15bd367891 51 DigitalOut Global::led1(LED1);
shimogamo 0:2a15bd367891 52 DigitalOut Global::led2(LED2);
shimogamo 0:2a15bd367891 53 DigitalOut Global::led3(LED3);
shimogamo 0:2a15bd367891 54 DigitalOut Global::led4(LED4);
shimogamo 6:0d9fa7152934 55 LocalFileSystem Global::local("local");
shimogamo 6:0d9fa7152934 56
shimogamo 0:2a15bd367891 57
shimogamo 5:9a1ec02229dd 58 void Global::initialize(){
shimogamo 6:0d9fa7152934 59 timer.start();
shimogamo 6:0d9fa7152934 60 fileread();
shimogamo 6:0d9fa7152934 61 }
shimogamo 6:0d9fa7152934 62
shimogamo 6:0d9fa7152934 63 void Global::fileread(){
shimogamo 6:0d9fa7152934 64 float a, b, c, d, e, f;
shimogamo 6:0d9fa7152934 65
shimogamo 6:0d9fa7152934 66 FILE* fp = fopen("/local/init.csv", "r");
shimogamo 6:0d9fa7152934 67 if(fp == NULL) {
shimogamo 6:0d9fa7152934 68 filewrite();
shimogamo 6:0d9fa7152934 69 return;
shimogamo 6:0d9fa7152934 70 }
shimogamo 6:0d9fa7152934 71 //1行目
shimogamo 7:6f7bd18ce796 72 fscanf(fp, "%f,%f,%f,%f,%f,%f",&a, &b, &c, &d, &e, &f);
shimogamo 6:0d9fa7152934 73 setneutralpitch(a);
shimogamo 6:0d9fa7152934 74 setmaxpitch(b);
shimogamo 6:0d9fa7152934 75 setminpitch(c);
shimogamo 6:0d9fa7152934 76 setneutralyaw(d);
shimogamo 6:0d9fa7152934 77 setmaxyaw(e);
shimogamo 6:0d9fa7152934 78 setminyaw(f);
shimogamo 8:ca92cb674004 79 //2行目
shimogamo 8:ca92cb674004 80 fscanf(fp, "%f,%f,%f,%f,%f,%f",&a, &b, &c, &d, &e, &f);
shimogamo 8:ca92cb674004 81 setneutralpitchdegree(a);
shimogamo 8:ca92cb674004 82 setmaxpitchdegree(b);
shimogamo 8:ca92cb674004 83 setminpitchdegree(c);
shimogamo 8:ca92cb674004 84 setneutralyawdegree(d);
shimogamo 8:ca92cb674004 85 setmaxyawdegree(e);
shimogamo 8:ca92cb674004 86 setminyawdegree(f);
shimogamo 8:ca92cb674004 87 //3行目
shimogamo 9:d1fc0805ec7d 88 fscanf(fp, "%f,%f,%f,%f,%f",&a, &b, &c, &d, &e);
shimogamo 8:ca92cb674004 89 setmaxpitchplayratio(a);
shimogamo 8:ca92cb674004 90 setminpitchplayratio(b);
shimogamo 8:ca92cb674004 91 setmaxyawplayratio(c);
shimogamo 8:ca92cb674004 92 setminyawplayratio(d);
shimogamo 9:d1fc0805ec7d 93 settrimpitchrate(e);
shimogamo 6:0d9fa7152934 94 fclose(fp);
shimogamo 6:0d9fa7152934 95 }
shimogamo 6:0d9fa7152934 96
shimogamo 6:0d9fa7152934 97 void Global::filewrite(){
shimogamo 6:0d9fa7152934 98 FILE* fp = fopen("/local/init.csv", "w");
shimogamo 6:0d9fa7152934 99 if(fp == NULL) {
shimogamo 6:0d9fa7152934 100 error("Could not open file for write\n");
shimogamo 6:0d9fa7152934 101 }
shimogamo 6:0d9fa7152934 102 fprintf(fp, "%f,%f,%f,%f,%f,%f\n",
shimogamo 6:0d9fa7152934 103 getneutralpitch(),
shimogamo 6:0d9fa7152934 104 getmaxpitch(),
shimogamo 6:0d9fa7152934 105 getminpitch(),
shimogamo 6:0d9fa7152934 106 getneutralyaw(),
shimogamo 6:0d9fa7152934 107 getmaxyaw(),
shimogamo 6:0d9fa7152934 108 getminyaw());
shimogamo 8:ca92cb674004 109 fprintf(fp, "%f,%f,%f,%f,%f,%f\n",
shimogamo 8:ca92cb674004 110 getneutralpitchdegree(),
shimogamo 8:ca92cb674004 111 getmaxpitchdegree(),
shimogamo 8:ca92cb674004 112 getminpitchdegree(),
shimogamo 8:ca92cb674004 113 getneutralyawdegree(),
shimogamo 8:ca92cb674004 114 getmaxyawdegree(),
shimogamo 8:ca92cb674004 115 getminyawdegree());
shimogamo 9:d1fc0805ec7d 116 fprintf(fp, "%f,%f,%f,%f,%f\n",
shimogamo 8:ca92cb674004 117 getmaxpitchplayratio(),
shimogamo 8:ca92cb674004 118 getminpitchplayratio(),
shimogamo 8:ca92cb674004 119 getmaxyawplayratio(),
shimogamo 9:d1fc0805ec7d 120 getminyawplayratio(),
shimogamo 9:d1fc0805ec7d 121 gettrimpitchrate());
shimogamo 8:ca92cb674004 122
shimogamo 6:0d9fa7152934 123 fclose(fp);
shimogamo 5:9a1ec02229dd 124 }
shimogamo 5:9a1ec02229dd 125
shimogamo 1:3f857674a290 126
shimogamo 4:650af94bf062 127 //定数チックな変数
shimogamo 4:650af94bf062 128 double Global::getmaxpitch(){return maxpitch;}
shimogamo 4:650af94bf062 129 double Global::getminpitch(){return minpitch;}
shimogamo 4:650af94bf062 130 double Global::getneutralpitch(){return neutralpitch;}
shimogamo 4:650af94bf062 131 double Global::getmaxyaw(){return maxyaw;}
shimogamo 4:650af94bf062 132 double Global::getminyaw(){return minyaw;}
shimogamo 4:650af94bf062 133 double Global::getneutralyaw(){return neutralyaw;}
shimogamo 4:650af94bf062 134
shimogamo 4:650af94bf062 135 void Global::setmaxpitch(double _maxpitch){maxpitch = _maxpitch;}
shimogamo 4:650af94bf062 136 void Global::setminpitch(double _minpitch){minpitch = _minpitch;}
shimogamo 4:650af94bf062 137 void Global::setneutralpitch(double _neutralpitch){neutralpitch = _neutralpitch;}
shimogamo 4:650af94bf062 138 void Global::setmaxyaw(double _maxyaw){maxyaw = _maxyaw;}
shimogamo 4:650af94bf062 139 void Global::setminyaw(double _minyaw){minyaw = _minyaw;}
shimogamo 4:650af94bf062 140 void Global::setneutralyaw(double _neutralyaw){neutralyaw = _neutralyaw;}
shimogamo 4:650af94bf062 141
shimogamo 4:650af94bf062 142 double Global::getmaxpitchdegree(){return maxpitchdegree;}
shimogamo 4:650af94bf062 143 double Global::getneutralpitchdegree(){return neutralpitchdegree;}
shimogamo 4:650af94bf062 144 double Global::getminpitchdegree(){return minpitchdegree;}
shimogamo 4:650af94bf062 145 double Global::getmaxyawdegree(){return maxyawdegree;}
shimogamo 4:650af94bf062 146 double Global::getneutralyawdegree(){return neutralyawdegree;}
shimogamo 4:650af94bf062 147 double Global::getminyawdegree(){return minyawdegree;}
shimogamo 4:650af94bf062 148
shimogamo 0:2a15bd367891 149 void Global::setmaxpitchdegree(double _maxpitchdegree){maxpitchdegree=_maxpitchdegree;}
shimogamo 0:2a15bd367891 150 void Global::setneutralpitchdegree(double _neutralpitchdegree){neutralpitchdegree=_neutralpitchdegree;}
shimogamo 0:2a15bd367891 151 void Global::setminpitchdegree(double _minpitchdegree){minpitchdegree=_minpitchdegree;}
shimogamo 0:2a15bd367891 152 void Global::setmaxyawdegree(double _maxyawdegree){maxyawdegree=_maxyawdegree;}
shimogamo 0:2a15bd367891 153 void Global::setneutralyawdegree(double _neutralyawdegree){neutralyawdegree=_neutralyawdegree;}
shimogamo 0:2a15bd367891 154 void Global::setminyawdegree(double _minyawdegree){minyawdegree=_minyawdegree;}
shimogamo 4:650af94bf062 155
shimogamo 4:650af94bf062 156
shimogamo 8:ca92cb674004 157 double Global::getmaxpitchplayratio(){return maxpitchplayratio;}
shimogamo 8:ca92cb674004 158 double Global::getminpitchplayratio(){return minpitchplayratio;}
shimogamo 8:ca92cb674004 159 double Global::getmaxyawplayratio(){return maxyawplayratio;}
shimogamo 8:ca92cb674004 160 double Global::getminyawplayratio(){return minyawplayratio;}
shimogamo 8:ca92cb674004 161
shimogamo 8:ca92cb674004 162 void Global::setmaxpitchplayratio(double _maxpitchplayratio){maxpitchplayratio=_maxpitchplayratio;}
shimogamo 8:ca92cb674004 163 void Global::setminpitchplayratio(double _minpitchplayratio){minpitchplayratio=_minpitchplayratio;}
shimogamo 8:ca92cb674004 164 void Global::setmaxyawplayratio(double _maxyawplayratio){maxyawplayratio=_maxyawplayratio;}
shimogamo 8:ca92cb674004 165 void Global::setminyawplayratio(double _minyawplayratio){minyawplayratio=_minyawplayratio;}
shimogamo 8:ca92cb674004 166
shimogamo 9:d1fc0805ec7d 167 double Global::gettrimpitchrate(){return trimpitchrate;}
shimogamo 1:3f857674a290 168
shimogamo 9:d1fc0805ec7d 169 void Global::settrimpitchrate(double _trimpitchrate){trimpitchrate=_trimpitchrate;}
shimogamo 1:3f857674a290 170
shimogamo 1:3f857674a290 171
shimogamo 0:2a15bd367891 172 //変数
shimogamo 1:3f857674a290 173 double Global::getpitch(){return pitch;}
shimogamo 8:ca92cb674004 174 double Global::getpitchdegree(){return pitchdegree;}
shimogamo 1:3f857674a290 175 double Global::gettrimpitch(){return trimpitch;}
shimogamo 10:0a4bf8c82493 176 int Global::getinttrimpitch(){return inttrimpitch;}
shimogamo 1:3f857674a290 177 double Global::getyaw(){return yaw;}
shimogamo 8:ca92cb674004 178 double Global::getyawdegree(){return yawdegree;}
shimogamo 1:3f857674a290 179 double Global::gettrimyaw(){return trimyaw;}
shimogamo 10:0a4bf8c82493 180 int Global::getinttrimyaw(){return inttrimyaw;}
shimogamo 1:3f857674a290 181 double Global::getairspeed(){return airspeed;}
shimogamo 1:3f857674a290 182 double Global::getcadence(){return cadence;}
shimogamo 1:3f857674a290 183 double Global::getaltitude(){return altitude;}
shimogamo 10:0a4bf8c82493 184 double Global::getultsonic(){return ultsonic;}
shimogamo 10:0a4bf8c82493 185 double Global::getatmpress(){return atmpress;}
shimogamo 10:0a4bf8c82493 186
shimogamo 0:2a15bd367891 187
shimogamo 1:3f857674a290 188 void Global::setpitch(double _pitch){pitch = _pitch;}
shimogamo 8:ca92cb674004 189 void Global::setpitchdegree(double _pitchdegree){pitchdegree = _pitchdegree;}
shimogamo 1:3f857674a290 190 void Global::settrimpitch(double _trimpitch){trimpitch = _trimpitch;}
shimogamo 10:0a4bf8c82493 191 void Global::setinttrimpitch(int _inttrimpitch){inttrimpitch = _inttrimpitch;}
shimogamo 1:3f857674a290 192 void Global::setyaw(double _yaw){yaw = _yaw;}
shimogamo 8:ca92cb674004 193 void Global::setyawdegree(double _yawdegree){yawdegree = _yawdegree;}
shimogamo 1:3f857674a290 194 void Global::settrimyaw(double _trimyaw){trimyaw = _trimyaw;}
shimogamo 10:0a4bf8c82493 195 void Global::setinttrimyaw(int _inttrimyaw){inttrimyaw = _inttrimyaw;}
shimogamo 1:3f857674a290 196 void Global::setairspeed(double _airspeed){airspeed = _airspeed;}
shimogamo 1:3f857674a290 197 void Global::setcadence(double _cadence){cadence = _cadence;}
shimogamo 1:3f857674a290 198 void Global::setaltitude(double _altitude){altitude = _altitude;}
shimogamo 10:0a4bf8c82493 199 void Global::setultsonic(double _ultsonic){ultsonic = _ultsonic;}
shimogamo 10:0a4bf8c82493 200 void Global::setatmpress(double _atmpress){atmpress = _atmpress;}
shimogamo 4:650af94bf062 201
shimogamo 10:0a4bf8c82493 202