Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Global.cpp@16:7e36177b4435, 2016-02-09 (annotated)
- Committer:
- shimogamo
- Date:
- Tue Feb 09 13:07:29 2016 +0000
- Revision:
- 16:7e36177b4435
- Parent:
- 13:a8e10a69df45
- Child:
- 17:887cfe1d309f
Selector??????
Who changed what in which revision?
User | Revision | Line number | New 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 | 12:8e39bb45c61c | 9 | Queue<char, 20> Global::initqueue; |
shimogamo | 16:7e36177b4435 | 10 | Queue<char, 20> Global::displayqueue; |
shimogamo | 3:e3c41153e5fe | 11 | //----------------普段は変動しない変数(定数)------------------------------------------------------ |
shimogamo | 9:d1fc0805ec7d | 12 | //サーボのパラメータ(角度(度数法)で設定)max,minはニュートラルを基準にしている |
shimogamo | 4:650af94bf062 | 13 | double Global::maxpitch = 5.0; |
shimogamo | 4:650af94bf062 | 14 | double Global::minpitch = -5.0; |
shimogamo | 4:650af94bf062 | 15 | double Global::neutralpitch = 0; |
shimogamo | 4:650af94bf062 | 16 | double Global::maxyaw = 30.0; |
shimogamo | 4:650af94bf062 | 17 | double Global::minyaw = -30.0; |
shimogamo | 4:650af94bf062 | 18 | double Global::neutralyaw = 0; |
shimogamo | 8:ca92cb674004 | 19 | //ジョイスティックのパラメータ(mbedのAnalogIn値[0,1])/max, min, neu全て[0,1]の絶対的な値をとる |
shimogamo | 4:650af94bf062 | 20 | double Global::maxpitchdegree = 1.0; |
shimogamo | 4:650af94bf062 | 21 | double Global::minpitchdegree = 0; |
shimogamo | 4:650af94bf062 | 22 | double Global::neutralpitchdegree = 0.5; |
shimogamo | 4:650af94bf062 | 23 | double Global::maxyawdegree = 1.0; |
shimogamo | 4:650af94bf062 | 24 | double Global::minyawdegree = 0; |
shimogamo | 4:650af94bf062 | 25 | double Global::neutralyawdegree = 0.5; |
shimogamo | 9:d1fc0805ec7d | 26 | //ジョイスティックの遊び([-1,1]でニュートラルを0とした時の値) |
shimogamo | 8:ca92cb674004 | 27 | double Global::maxpitchplayratio = 0; |
shimogamo | 8:ca92cb674004 | 28 | double Global::minpitchplayratio = 0; |
shimogamo | 8:ca92cb674004 | 29 | double Global::maxyawplayratio = 0; |
shimogamo | 8:ca92cb674004 | 30 | double Global::minyawplayratio = 0; |
shimogamo | 9:d1fc0805ec7d | 31 | //トリムの変化率(角度(度数法)で設定) |
shimogamo | 9:d1fc0805ec7d | 32 | double Global::trimpitchrate = 0.5; |
shimogamo | 3:e3c41153e5fe | 33 | |
shimogamo | 3:e3c41153e5fe | 34 | //----------------周期的に変動する変数------------------------------------------------------ |
shimogamo | 8:ca92cb674004 | 35 | double Global::pitch; |
shimogamo | 8:ca92cb674004 | 36 | double Global::pitchdegree;//controllerの生データ |
shimogamo | 10:0a4bf8c82493 | 37 | int Global::inttrimpitch; |
shimogamo | 8:ca92cb674004 | 38 | double Global::yaw; |
shimogamo | 8:ca92cb674004 | 39 | double Global::yawdegree;//controllerの生データ |
shimogamo | 10:0a4bf8c82493 | 40 | int Global::inttrimyaw; |
shimogamo | 1:3f857674a290 | 41 | double Global::airspeed; |
shimogamo | 1:3f857674a290 | 42 | double Global::cadence; |
shimogamo | 10:0a4bf8c82493 | 43 | double Global::ultsonic; |
shimogamo | 10:0a4bf8c82493 | 44 | double Global::atmpress; |
shimogamo | 16:7e36177b4435 | 45 | int Global::selector; |
shimogamo | 0:2a15bd367891 | 46 | |
shimogamo | 13:a8e10a69df45 | 47 | int Global::pitchtime; |
shimogamo | 13:a8e10a69df45 | 48 | int Global::pitchdegreetime; |
shimogamo | 13:a8e10a69df45 | 49 | int Global::inttrimpitchtime; |
shimogamo | 13:a8e10a69df45 | 50 | int Global::yawtime; |
shimogamo | 13:a8e10a69df45 | 51 | int Global::yawdegreetime; |
shimogamo | 13:a8e10a69df45 | 52 | int Global::inttrimyawtime; |
shimogamo | 13:a8e10a69df45 | 53 | int Global::airspeedtime; |
shimogamo | 13:a8e10a69df45 | 54 | int Global::cadencetime; |
shimogamo | 13:a8e10a69df45 | 55 | int Global::ultsonictime; |
shimogamo | 13:a8e10a69df45 | 56 | int Global::atmpresstime; |
shimogamo | 16:7e36177b4435 | 57 | int Global::selectortime; |
shimogamo | 12:8e39bb45c61c | 58 | |
shimogamo | 4:650af94bf062 | 59 | //----------------どこからでも使えるled,スイッチ,タイマーの一括管理----------------------------- |
shimogamo | 0:2a15bd367891 | 60 | Timer Global::timer; |
shimogamo | 0:2a15bd367891 | 61 | DigitalIn Global::initializeswitch(p23,PullUp);//否定で押しているとき |
shimogamo | 16:7e36177b4435 | 62 | DigitalOut Global::led[] = {LED1,LED2,LED3,LED4}; |
shimogamo | 6:0d9fa7152934 | 63 | LocalFileSystem Global::local("local"); |
shimogamo | 6:0d9fa7152934 | 64 | |
shimogamo | 0:2a15bd367891 | 65 | |
shimogamo | 5:9a1ec02229dd | 66 | void Global::initialize(){ |
shimogamo | 6:0d9fa7152934 | 67 | timer.start(); |
shimogamo | 6:0d9fa7152934 | 68 | fileread(); |
shimogamo | 6:0d9fa7152934 | 69 | } |
shimogamo | 6:0d9fa7152934 | 70 | |
shimogamo | 6:0d9fa7152934 | 71 | void Global::fileread(){ |
shimogamo | 6:0d9fa7152934 | 72 | float a, b, c, d, e, f; |
shimogamo | 6:0d9fa7152934 | 73 | |
shimogamo | 6:0d9fa7152934 | 74 | FILE* fp = fopen("/local/init.csv", "r"); |
shimogamo | 6:0d9fa7152934 | 75 | if(fp == NULL) { |
shimogamo | 6:0d9fa7152934 | 76 | filewrite(); |
shimogamo | 6:0d9fa7152934 | 77 | return; |
shimogamo | 6:0d9fa7152934 | 78 | } |
shimogamo | 6:0d9fa7152934 | 79 | //1行目 |
shimogamo | 7:6f7bd18ce796 | 80 | fscanf(fp, "%f,%f,%f,%f,%f,%f",&a, &b, &c, &d, &e, &f); |
shimogamo | 6:0d9fa7152934 | 81 | setneutralpitch(a); |
shimogamo | 6:0d9fa7152934 | 82 | setmaxpitch(b); |
shimogamo | 6:0d9fa7152934 | 83 | setminpitch(c); |
shimogamo | 6:0d9fa7152934 | 84 | setneutralyaw(d); |
shimogamo | 6:0d9fa7152934 | 85 | setmaxyaw(e); |
shimogamo | 6:0d9fa7152934 | 86 | setminyaw(f); |
shimogamo | 8:ca92cb674004 | 87 | //2行目 |
shimogamo | 8:ca92cb674004 | 88 | fscanf(fp, "%f,%f,%f,%f,%f,%f",&a, &b, &c, &d, &e, &f); |
shimogamo | 8:ca92cb674004 | 89 | setneutralpitchdegree(a); |
shimogamo | 8:ca92cb674004 | 90 | setmaxpitchdegree(b); |
shimogamo | 8:ca92cb674004 | 91 | setminpitchdegree(c); |
shimogamo | 8:ca92cb674004 | 92 | setneutralyawdegree(d); |
shimogamo | 8:ca92cb674004 | 93 | setmaxyawdegree(e); |
shimogamo | 8:ca92cb674004 | 94 | setminyawdegree(f); |
shimogamo | 8:ca92cb674004 | 95 | //3行目 |
shimogamo | 9:d1fc0805ec7d | 96 | fscanf(fp, "%f,%f,%f,%f,%f",&a, &b, &c, &d, &e); |
shimogamo | 8:ca92cb674004 | 97 | setmaxpitchplayratio(a); |
shimogamo | 8:ca92cb674004 | 98 | setminpitchplayratio(b); |
shimogamo | 8:ca92cb674004 | 99 | setmaxyawplayratio(c); |
shimogamo | 8:ca92cb674004 | 100 | setminyawplayratio(d); |
shimogamo | 9:d1fc0805ec7d | 101 | settrimpitchrate(e); |
shimogamo | 6:0d9fa7152934 | 102 | fclose(fp); |
shimogamo | 6:0d9fa7152934 | 103 | } |
shimogamo | 6:0d9fa7152934 | 104 | |
shimogamo | 6:0d9fa7152934 | 105 | void Global::filewrite(){ |
shimogamo | 6:0d9fa7152934 | 106 | FILE* fp = fopen("/local/init.csv", "w"); |
shimogamo | 6:0d9fa7152934 | 107 | if(fp == NULL) { |
shimogamo | 6:0d9fa7152934 | 108 | error("Could not open file for write\n"); |
shimogamo | 6:0d9fa7152934 | 109 | } |
shimogamo | 6:0d9fa7152934 | 110 | fprintf(fp, "%f,%f,%f,%f,%f,%f\n", |
shimogamo | 6:0d9fa7152934 | 111 | getneutralpitch(), |
shimogamo | 6:0d9fa7152934 | 112 | getmaxpitch(), |
shimogamo | 6:0d9fa7152934 | 113 | getminpitch(), |
shimogamo | 6:0d9fa7152934 | 114 | getneutralyaw(), |
shimogamo | 6:0d9fa7152934 | 115 | getmaxyaw(), |
shimogamo | 6:0d9fa7152934 | 116 | getminyaw()); |
shimogamo | 8:ca92cb674004 | 117 | fprintf(fp, "%f,%f,%f,%f,%f,%f\n", |
shimogamo | 8:ca92cb674004 | 118 | getneutralpitchdegree(), |
shimogamo | 8:ca92cb674004 | 119 | getmaxpitchdegree(), |
shimogamo | 8:ca92cb674004 | 120 | getminpitchdegree(), |
shimogamo | 8:ca92cb674004 | 121 | getneutralyawdegree(), |
shimogamo | 8:ca92cb674004 | 122 | getmaxyawdegree(), |
shimogamo | 8:ca92cb674004 | 123 | getminyawdegree()); |
shimogamo | 9:d1fc0805ec7d | 124 | fprintf(fp, "%f,%f,%f,%f,%f\n", |
shimogamo | 8:ca92cb674004 | 125 | getmaxpitchplayratio(), |
shimogamo | 8:ca92cb674004 | 126 | getminpitchplayratio(), |
shimogamo | 8:ca92cb674004 | 127 | getmaxyawplayratio(), |
shimogamo | 9:d1fc0805ec7d | 128 | getminyawplayratio(), |
shimogamo | 9:d1fc0805ec7d | 129 | gettrimpitchrate()); |
shimogamo | 8:ca92cb674004 | 130 | |
shimogamo | 6:0d9fa7152934 | 131 | fclose(fp); |
shimogamo | 5:9a1ec02229dd | 132 | } |
shimogamo | 5:9a1ec02229dd | 133 | |
shimogamo | 1:3f857674a290 | 134 | |
shimogamo | 4:650af94bf062 | 135 | //定数チックな変数 |
shimogamo | 4:650af94bf062 | 136 | double Global::getmaxpitch(){return maxpitch;} |
shimogamo | 4:650af94bf062 | 137 | double Global::getminpitch(){return minpitch;} |
shimogamo | 4:650af94bf062 | 138 | double Global::getneutralpitch(){return neutralpitch;} |
shimogamo | 4:650af94bf062 | 139 | double Global::getmaxyaw(){return maxyaw;} |
shimogamo | 4:650af94bf062 | 140 | double Global::getminyaw(){return minyaw;} |
shimogamo | 4:650af94bf062 | 141 | double Global::getneutralyaw(){return neutralyaw;} |
shimogamo | 4:650af94bf062 | 142 | |
shimogamo | 4:650af94bf062 | 143 | void Global::setmaxpitch(double _maxpitch){maxpitch = _maxpitch;} |
shimogamo | 4:650af94bf062 | 144 | void Global::setminpitch(double _minpitch){minpitch = _minpitch;} |
shimogamo | 4:650af94bf062 | 145 | void Global::setneutralpitch(double _neutralpitch){neutralpitch = _neutralpitch;} |
shimogamo | 4:650af94bf062 | 146 | void Global::setmaxyaw(double _maxyaw){maxyaw = _maxyaw;} |
shimogamo | 4:650af94bf062 | 147 | void Global::setminyaw(double _minyaw){minyaw = _minyaw;} |
shimogamo | 4:650af94bf062 | 148 | void Global::setneutralyaw(double _neutralyaw){neutralyaw = _neutralyaw;} |
shimogamo | 4:650af94bf062 | 149 | |
shimogamo | 4:650af94bf062 | 150 | double Global::getmaxpitchdegree(){return maxpitchdegree;} |
shimogamo | 4:650af94bf062 | 151 | double Global::getneutralpitchdegree(){return neutralpitchdegree;} |
shimogamo | 4:650af94bf062 | 152 | double Global::getminpitchdegree(){return minpitchdegree;} |
shimogamo | 4:650af94bf062 | 153 | double Global::getmaxyawdegree(){return maxyawdegree;} |
shimogamo | 4:650af94bf062 | 154 | double Global::getneutralyawdegree(){return neutralyawdegree;} |
shimogamo | 4:650af94bf062 | 155 | double Global::getminyawdegree(){return minyawdegree;} |
shimogamo | 4:650af94bf062 | 156 | |
shimogamo | 0:2a15bd367891 | 157 | void Global::setmaxpitchdegree(double _maxpitchdegree){maxpitchdegree=_maxpitchdegree;} |
shimogamo | 0:2a15bd367891 | 158 | void Global::setneutralpitchdegree(double _neutralpitchdegree){neutralpitchdegree=_neutralpitchdegree;} |
shimogamo | 0:2a15bd367891 | 159 | void Global::setminpitchdegree(double _minpitchdegree){minpitchdegree=_minpitchdegree;} |
shimogamo | 0:2a15bd367891 | 160 | void Global::setmaxyawdegree(double _maxyawdegree){maxyawdegree=_maxyawdegree;} |
shimogamo | 0:2a15bd367891 | 161 | void Global::setneutralyawdegree(double _neutralyawdegree){neutralyawdegree=_neutralyawdegree;} |
shimogamo | 0:2a15bd367891 | 162 | void Global::setminyawdegree(double _minyawdegree){minyawdegree=_minyawdegree;} |
shimogamo | 4:650af94bf062 | 163 | |
shimogamo | 4:650af94bf062 | 164 | |
shimogamo | 8:ca92cb674004 | 165 | double Global::getmaxpitchplayratio(){return maxpitchplayratio;} |
shimogamo | 8:ca92cb674004 | 166 | double Global::getminpitchplayratio(){return minpitchplayratio;} |
shimogamo | 8:ca92cb674004 | 167 | double Global::getmaxyawplayratio(){return maxyawplayratio;} |
shimogamo | 8:ca92cb674004 | 168 | double Global::getminyawplayratio(){return minyawplayratio;} |
shimogamo | 8:ca92cb674004 | 169 | |
shimogamo | 8:ca92cb674004 | 170 | void Global::setmaxpitchplayratio(double _maxpitchplayratio){maxpitchplayratio=_maxpitchplayratio;} |
shimogamo | 8:ca92cb674004 | 171 | void Global::setminpitchplayratio(double _minpitchplayratio){minpitchplayratio=_minpitchplayratio;} |
shimogamo | 8:ca92cb674004 | 172 | void Global::setmaxyawplayratio(double _maxyawplayratio){maxyawplayratio=_maxyawplayratio;} |
shimogamo | 8:ca92cb674004 | 173 | void Global::setminyawplayratio(double _minyawplayratio){minyawplayratio=_minyawplayratio;} |
shimogamo | 8:ca92cb674004 | 174 | |
shimogamo | 9:d1fc0805ec7d | 175 | double Global::gettrimpitchrate(){return trimpitchrate;} |
shimogamo | 1:3f857674a290 | 176 | |
shimogamo | 9:d1fc0805ec7d | 177 | void Global::settrimpitchrate(double _trimpitchrate){trimpitchrate=_trimpitchrate;} |
shimogamo | 1:3f857674a290 | 178 | |
shimogamo | 1:3f857674a290 | 179 | |
shimogamo | 0:2a15bd367891 | 180 | //変数 |
shimogamo | 1:3f857674a290 | 181 | double Global::getpitch(){return pitch;} |
shimogamo | 8:ca92cb674004 | 182 | double Global::getpitchdegree(){return pitchdegree;} |
shimogamo | 10:0a4bf8c82493 | 183 | int Global::getinttrimpitch(){return inttrimpitch;} |
shimogamo | 1:3f857674a290 | 184 | double Global::getyaw(){return yaw;} |
shimogamo | 8:ca92cb674004 | 185 | double Global::getyawdegree(){return yawdegree;} |
shimogamo | 10:0a4bf8c82493 | 186 | int Global::getinttrimyaw(){return inttrimyaw;} |
shimogamo | 1:3f857674a290 | 187 | double Global::getairspeed(){return airspeed;} |
shimogamo | 1:3f857674a290 | 188 | double Global::getcadence(){return cadence;} |
shimogamo | 10:0a4bf8c82493 | 189 | double Global::getultsonic(){return ultsonic;} |
shimogamo | 10:0a4bf8c82493 | 190 | double Global::getatmpress(){return atmpress;} |
shimogamo | 16:7e36177b4435 | 191 | int Global::getselector(){return selector;} |
shimogamo | 10:0a4bf8c82493 | 192 | |
shimogamo | 13:a8e10a69df45 | 193 | int Global::getpitchtime(){return pitchtime;} |
shimogamo | 13:a8e10a69df45 | 194 | int Global::getpitchdegreetime(){return pitchdegreetime;} |
shimogamo | 13:a8e10a69df45 | 195 | int Global::getinttrimpitchtime(){return inttrimpitchtime;} |
shimogamo | 13:a8e10a69df45 | 196 | int Global::getyawtime(){return yawtime;} |
shimogamo | 13:a8e10a69df45 | 197 | int Global::getyawdegreetime(){return yawdegreetime;} |
shimogamo | 13:a8e10a69df45 | 198 | int Global::getinttrimyawtime(){return inttrimyawtime;} |
shimogamo | 13:a8e10a69df45 | 199 | int Global::getairspeedtime(){return airspeedtime;} |
shimogamo | 13:a8e10a69df45 | 200 | int Global::getcadencetime(){return cadencetime;} |
shimogamo | 13:a8e10a69df45 | 201 | int Global::getultsonictime(){return ultsonictime;} |
shimogamo | 13:a8e10a69df45 | 202 | int Global::getatmpresstime(){return atmpresstime;} |
shimogamo | 16:7e36177b4435 | 203 | int Global::getselectortime(){return selectortime;} |
shimogamo | 13:a8e10a69df45 | 204 | |
shimogamo | 13:a8e10a69df45 | 205 | |
shimogamo | 0:2a15bd367891 | 206 | |
shimogamo | 12:8e39bb45c61c | 207 | void Global::setpitch(double _pitch){ |
shimogamo | 12:8e39bb45c61c | 208 | pitch = _pitch; |
shimogamo | 13:a8e10a69df45 | 209 | pitchtime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 210 | } |
shimogamo | 12:8e39bb45c61c | 211 | void Global::setpitchdegree(double _pitchdegree){ |
shimogamo | 12:8e39bb45c61c | 212 | pitchdegree = _pitchdegree; |
shimogamo | 13:a8e10a69df45 | 213 | pitchdegreetime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 214 | } |
shimogamo | 12:8e39bb45c61c | 215 | void Global::setinttrimpitch(int _inttrimpitch){ |
shimogamo | 12:8e39bb45c61c | 216 | inttrimpitch = _inttrimpitch; |
shimogamo | 13:a8e10a69df45 | 217 | inttrimpitchtime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 218 | } |
shimogamo | 12:8e39bb45c61c | 219 | void Global::setyaw(double _yaw){ |
shimogamo | 12:8e39bb45c61c | 220 | yaw = _yaw; |
shimogamo | 13:a8e10a69df45 | 221 | yawtime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 222 | } |
shimogamo | 12:8e39bb45c61c | 223 | void Global::setyawdegree(double _yawdegree){ |
shimogamo | 12:8e39bb45c61c | 224 | yawdegree = _yawdegree; |
shimogamo | 13:a8e10a69df45 | 225 | yawdegreetime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 226 | } |
shimogamo | 12:8e39bb45c61c | 227 | void Global::setinttrimyaw(int _inttrimyaw){ |
shimogamo | 12:8e39bb45c61c | 228 | inttrimyaw = _inttrimyaw; |
shimogamo | 13:a8e10a69df45 | 229 | inttrimyawtime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 230 | } |
shimogamo | 12:8e39bb45c61c | 231 | void Global::setairspeed(double _airspeed){ |
shimogamo | 12:8e39bb45c61c | 232 | airspeed = _airspeed; |
shimogamo | 13:a8e10a69df45 | 233 | airspeedtime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 234 | } |
shimogamo | 12:8e39bb45c61c | 235 | void Global::setcadence(double _cadence){ |
shimogamo | 12:8e39bb45c61c | 236 | cadence = _cadence; |
shimogamo | 13:a8e10a69df45 | 237 | cadencetime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 238 | } |
shimogamo | 12:8e39bb45c61c | 239 | void Global::setultsonic(double _ultsonic){ |
shimogamo | 12:8e39bb45c61c | 240 | ultsonic = _ultsonic; |
shimogamo | 13:a8e10a69df45 | 241 | ultsonictime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 242 | } |
shimogamo | 12:8e39bb45c61c | 243 | void Global::setatmpress(double _atmpress){ |
shimogamo | 12:8e39bb45c61c | 244 | atmpress = _atmpress; |
shimogamo | 13:a8e10a69df45 | 245 | atmpresstime = timer.read_ms(); |
shimogamo | 12:8e39bb45c61c | 246 | } |
shimogamo | 16:7e36177b4435 | 247 | void Global::setselector(int _selector){ |
shimogamo | 16:7e36177b4435 | 248 | selector = _selector; |
shimogamo | 16:7e36177b4435 | 249 | selectortime = timer.read_ms(); |
shimogamo | 16:7e36177b4435 | 250 | } |