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
- Committer:
- naoya1687
- Date:
- 2017-02-16
- Revision:
- 32:13aba70baa4b
- Parent:
- 31:cef6ee7af014
- Child:
- 33:d939479e7b13
File content as of revision 32:13aba70baa4b:
#include "mbed.h" #include "Global.h" #include "rtos.h" //クラスじゃなくてnamespaceのほうが綺麗にかけるかもね Queue<char, 20> Global::initqueue; //----------------普段は変動しない変数------------------------------------------------------ //サーボのパラメータ(角度(度数法)で設定)max,minはニュートラルを基準にしている double Global::maxpitch = 5.0; double Global::minpitch = -5.0; double Global::neutralpitch = 0; double Global::maxyaw = 30.0; double Global::minyaw = -30.0; double Global::neutralyaw = 0; //ジョイスティックのパラメータ(mbedのAnalogIn値[0,1])/max, min, neu全て[0,1]の絶対的な値をとる double Global::maxpitchdegree = 1.0; double Global::minpitchdegree = 0; double Global::neutralpitchdegree = 0.5; double Global::maxyawdegree = 1.0; double Global::minyawdegree = 0; double Global::neutralyawdegree = 0.5; //ジョイスティックの遊び([-1,1]でニュートラルを0とした時の値) double Global::maxpitchplayratio = 0; double Global::minpitchplayratio = 0; double Global::maxyawplayratio = 0; double Global::minyawplayratio = 0; //トリムの変化率(角度(度数法)で設定) double Global::trimpitchrate = 0.5; //----------------周期的に変動する変数------------------------------------------------------ double Global::pitch; double Global::pitchdegree;//controllerの生データ int Global::inttrimpitch; double Global::yaw; double Global::yawdegree;//controllerの生データ int Global::inttrimyaw; double Global::airspeed; double Global::cadence; double Global::ultsonic; double Global::atmpress; //int Global::selector; double Global::cadencevolt; double Global::ultsonicvolt; double Global::servovolt; double Global::miconvolt; int Global::pitchtime; int Global::pitchdegreetime; int Global::inttrimpitchtime; int Global::yawtime; int Global::yawdegreetime; int Global::inttrimyawtime; int Global::airspeedtime; int Global::cadencetime; int Global::ultsonictime; int Global::atmpresstime; //int Global::selectortime; int Global::cadencevolttime; int Global::ultsonicvolttime; int Global::servovolttime; int Global::miconvolttime; //----------------どこからでも使えるled,スイッチ,タイマーの一括管理----------------------------- Timer Global::timer; DigitalOut Global::led[] = {LED1,LED2,LED3,LED4}; LocalFileSystem Global::local("local"); //ここでINIT.csvファイルが読み込まれる void Global::initialize(){ timer.start(); fileread(); } //INITファイルの読み込み void Global::fileread(){ float a, b, c, d, e, f; FILE* fp = fopen("/local/init.csv", "r"); if(fp == NULL) { filewrite(); return; } //1行目 fscanf(fp, "%f,%f,%f,%f,%f,%f",&a, &b, &c, &d, &e, &f); setneutralpitch(a); setmaxpitch(b); setminpitch(c); setneutralyaw(d); setmaxyaw(e); setminyaw(f); //2行目 fscanf(fp, "%f,%f,%f,%f,%f,%f",&a, &b, &c, &d, &e, &f); setneutralpitchdegree(a); setmaxpitchdegree(b); setminpitchdegree(c); setneutralyawdegree(d); setmaxyawdegree(e); setminyawdegree(f); //3行目 fscanf(fp, "%f,%f,%f,%f,%f",&a, &b, &c, &d, &e); setmaxpitchplayratio(a); setminpitchplayratio(b); setmaxyawplayratio(c); setminyawplayratio(d); settrimpitchrate(e); fclose(fp); } //INITファイルの書き込み void Global::filewrite(){ FILE* fp = fopen("/local/init.csv", "w"); if(fp == NULL) { error("Could not open file for write\n"); } fprintf(fp, "%f,%f,%f,%f,%f,%f\n", getneutralpitch(), getmaxpitch(), getminpitch(), getneutralyaw(), getmaxyaw(), getminyaw()); fprintf(fp, "%f,%f,%f,%f,%f,%f\n", getneutralpitchdegree(), getmaxpitchdegree(), getminpitchdegree(), getneutralyawdegree(), getmaxyawdegree(), getminyawdegree()); fprintf(fp, "%f,%f,%f,%f,%f\n", getmaxpitchplayratio(), getminpitchplayratio(), getmaxyawplayratio(), getminyawplayratio(), gettrimpitchrate()); fclose(fp); } //init等で更新される変数 double Global::getmaxpitch(){return maxpitch;} double Global::getminpitch(){return minpitch;} double Global::getneutralpitch(){return neutralpitch;} double Global::getmaxyaw(){return maxyaw;} double Global::getminyaw(){return minyaw;} double Global::getneutralyaw(){return neutralyaw;} void Global::setmaxpitch(double _maxpitch){maxpitch = _maxpitch;} void Global::setminpitch(double _minpitch){minpitch = _minpitch;} void Global::setneutralpitch(double _neutralpitch){neutralpitch = _neutralpitch;} void Global::setmaxyaw(double _maxyaw){maxyaw = _maxyaw;} void Global::setminyaw(double _minyaw){minyaw = _minyaw;} void Global::setneutralyaw(double _neutralyaw){neutralyaw = _neutralyaw;} double Global::getmaxpitchdegree(){return maxpitchdegree;} double Global::getneutralpitchdegree(){return neutralpitchdegree;} double Global::getminpitchdegree(){return minpitchdegree;} double Global::getmaxyawdegree(){return maxyawdegree;} double Global::getneutralyawdegree(){return neutralyawdegree;} double Global::getminyawdegree(){return minyawdegree;} void Global::setmaxpitchdegree(double _maxpitchdegree){maxpitchdegree=_maxpitchdegree;} void Global::setneutralpitchdegree(double _neutralpitchdegree){neutralpitchdegree=_neutralpitchdegree;} void Global::setminpitchdegree(double _minpitchdegree){minpitchdegree=_minpitchdegree;} void Global::setmaxyawdegree(double _maxyawdegree){maxyawdegree=_maxyawdegree;} void Global::setneutralyawdegree(double _neutralyawdegree){neutralyawdegree=_neutralyawdegree;} void Global::setminyawdegree(double _minyawdegree){minyawdegree=_minyawdegree;} double Global::getmaxpitchplayratio(){return maxpitchplayratio;} double Global::getminpitchplayratio(){return minpitchplayratio;} double Global::getmaxyawplayratio(){return maxyawplayratio;} double Global::getminyawplayratio(){return minyawplayratio;} void Global::setmaxpitchplayratio(double _maxpitchplayratio){maxpitchplayratio=_maxpitchplayratio;} void Global::setminpitchplayratio(double _minpitchplayratio){minpitchplayratio=_minpitchplayratio;} void Global::setmaxyawplayratio(double _maxyawplayratio){maxyawplayratio=_maxyawplayratio;} void Global::setminyawplayratio(double _minyawplayratio){minyawplayratio=_minyawplayratio;} double Global::gettrimpitchrate(){return trimpitchrate;} void Global::settrimpitchrate(double _trimpitchrate){trimpitchrate=_trimpitchrate;} //常に更新される変数 double Global::getpitch(){return pitch;} double Global::getpitchdegree(){return pitchdegree;} int Global::getinttrimpitch(){return inttrimpitch;} double Global::getyaw(){return yaw;} double Global::getyawdegree(){return yawdegree;} int Global::getinttrimyaw(){return inttrimyaw;} double Global::getairspeed(){return airspeed;} double Global::getcadence(){return cadence;} double Global::getultsonic(){return ultsonic;} double Global::getatmpress(){return atmpress;} //int Global::getselector(){return selector;} double Global::getcadencevolt(){return cadencevolt;} double Global::getultsonicvolt(){return ultsonicvolt;} double Global::getservovolt(){return servovolt;} double Global::getmiconvolt(){return miconvolt;} int Global::getpitchtime(){return pitchtime;} int Global::getpitchdegreetime(){return pitchdegreetime;} int Global::getinttrimpitchtime(){return inttrimpitchtime;} int Global::getyawtime(){return yawtime;} int Global::getyawdegreetime(){return yawdegreetime;} int Global::getinttrimyawtime(){return inttrimyawtime;} int Global::getairspeedtime(){return airspeedtime;} int Global::getcadencetime(){return cadencetime;} int Global::getultsonictime(){return ultsonictime;} int Global::getatmpresstime(){return atmpresstime;} //int Global::getselectortime(){return selectortime;} int Global::getcadencevolttime(){return cadencevolttime;} int Global::getultsonicvolttime(){return ultsonicvolttime;} int Global::getservovolttime(){return servovolttime;} int Global::getmiconvolttime(){return miconvolttime;} void Global::setpitch(double _pitch){ pitch = _pitch; pitchtime = timer.read_ms(); } void Global::setpitchdegree(double _pitchdegree){ pitchdegree = _pitchdegree; pitchdegreetime = timer.read_ms(); } void Global::setinttrimpitch(int _inttrimpitch){ inttrimpitch = _inttrimpitch; inttrimpitchtime = timer.read_ms(); } void Global::setyaw(double _yaw){ yaw = _yaw; yawtime = timer.read_ms(); } void Global::setyawdegree(double _yawdegree){ yawdegree = _yawdegree; yawdegreetime = timer.read_ms(); } void Global::setinttrimyaw(int _inttrimyaw){ inttrimyaw = _inttrimyaw; inttrimyawtime = timer.read_ms(); } void Global::setairspeed(double _airspeed){ airspeed = _airspeed; airspeedtime = timer.read_ms(); } void Global::setcadence(double _cadence){ cadence = _cadence; cadencetime = timer.read_ms(); } void Global::setultsonic(double _ultsonic){ ultsonic = _ultsonic; ultsonictime = timer.read_ms(); } void Global::setatmpress(double _atmpress){ atmpress = _atmpress; atmpresstime = timer.read_ms(); } /*void Global::setselector(int _selector){ selector = _selector; selectortime = timer.read_ms(); }*/ void Global::setcadencevolt(double _cadencevolt){ cadencevolt = _cadencevolt; cadencevolttime = timer.read_ms(); } void Global::setultsonicvolt(double _ultsonicvolt){ ultsonicvolt = _ultsonicvolt; ultsonicvolttime = timer.read_ms(); } void Global::setservovolt(double _servovolt){ servovolt = _servovolt; servovolttime = timer.read_ms(); } void Global::setmiconvolt(double _miconvolt){ miconvolt = _miconvolt; miconvolttime = timer.read_ms(); }