Kobayashi Akihiro / Mbed OS controllerForMbed_test
Committer:
e5119053f6
Date:
Tue Sep 06 06:07:56 2022 +0000
Revision:
2:507b31207449
Parent:
0:4f5b9889cbc4
controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
e5119053f6 2:507b31207449 1 /*
e5119053f6 2:507b31207449 2 *https://os.mbed.com/users/kikuchi8810/code/controllerForMbed_test//file/ab1c94d6f4fb/main.cpp/
e5119053f6 2:507b31207449 3 *元データ
e5119053f6 2:507b31207449 4 *作:菊池
e5119053f6 2:507b31207449 5 */
e5119053f6 2:507b31207449 6
e5119053f6 2:507b31207449 7
e5119053f6 2:507b31207449 8
kikuchi8810 0:4f5b9889cbc4 9 #ifndef CONTROLLER_H
kikuchi8810 0:4f5b9889cbc4 10 #define CONTROLLER_H
e5119053f6 2:507b31207449 11
kikuchi8810 0:4f5b9889cbc4 12 #include "mbed.h"
kikuchi8810 0:4f5b9889cbc4 13 #include "RawSerial.h"
kikuchi8810 0:4f5b9889cbc4 14 #include "define.h"
e5119053f6 2:507b31207449 15
kikuchi8810 0:4f5b9889cbc4 16 struct ControllerData{
kikuchi8810 0:4f5b9889cbc4 17 unsigned int ButtonState;
kikuchi8810 0:4f5b9889cbc4 18 uint8_t RJoyX, RJoyY, LJoyX, LJoyY;
kikuchi8810 0:4f5b9889cbc4 19 };
e5119053f6 2:507b31207449 20
kikuchi8810 0:4f5b9889cbc4 21 class Controller{
kikuchi8810 0:4f5b9889cbc4 22 public:
kikuchi8810 0:4f5b9889cbc4 23 Controller(PinName tx, PinName rx, int baudrate);
kikuchi8810 0:4f5b9889cbc4 24 int count_ms, pre_count_ms; //受信時刻と前回の受信時刻
e5119053f6 2:507b31207449 25
kikuchi8810 0:4f5b9889cbc4 26 bool readButton_bin(unsigned int ButtonNum); //押していない時はfalse(0),押してるときはtrue(1)を返す. ButtonNumはデータの欲しいボタンの名前を
kikuchi8810 0:4f5b9889cbc4 27 int readButton(unsigned int ButtonNum); //上にプラスして 押した瞬間は2,放した瞬間は-1を返す. define.hを参考に数字を入力しても良い
kikuchi8810 0:4f5b9889cbc4 28 bool getComCheck(void); //値が更新されたときにtrueを返す.
kikuchi8810 0:4f5b9889cbc4 29 bool update(); //受信の処理+ボタンの情報の更新.受信割込みで処理
e5119053f6 2:507b31207449 30 bool clearBuffer(void);//buffer消去用.falseが返ってくれば消去完了.
e5119053f6 2:507b31207449 31 bool rate(void);//送信側で入力がある場合にtrue.
kikuchi8810 0:4f5b9889cbc4 32
kikuchi8810 0:4f5b9889cbc4 33 void init(int _time_out_ms, int _int_time_ms); //コントローラの通信速度と通信のタイムアウト時間を設定
kikuchi8810 0:4f5b9889cbc4 34 bool available(void);
e5119053f6 2:507b31207449 35
kikuchi8810 0:4f5b9889cbc4 36 unsigned int getButtonState(); //分解する前のButtonStateの情報をprint 0~255の値をとる
kikuchi8810 0:4f5b9889cbc4 37 void clearButtonState();
kikuchi8810 0:4f5b9889cbc4 38 ControllerData getConData();
kikuchi8810 0:4f5b9889cbc4 39 unsigned int getButtonFlagRise();
kikuchi8810 0:4f5b9889cbc4 40 unsigned int getButtonFlagFall();
kikuchi8810 0:4f5b9889cbc4 41
kikuchi8810 0:4f5b9889cbc4 42 // X
kikuchi8810 0:4f5b9889cbc4 43 double readJoyRX(); // ^
kikuchi8810 0:4f5b9889cbc4 44 double readJoyRY(); // |
kikuchi8810 0:4f5b9889cbc4 45 double readJoyLX(); // Y<---+----
kikuchi8810 0:4f5b9889cbc4 46 double readJoyLY(); // |
kikuchi8810 0:4f5b9889cbc4 47 // |
kikuchi8810 0:4f5b9889cbc4 48 // 1.0 ~ -1.0
e5119053f6 2:507b31207449 49
kikuchi8810 0:4f5b9889cbc4 50 // X
kikuchi8810 0:4f5b9889cbc4 51 uint8_t readJoyRXbyte(); // ^
kikuchi8810 0:4f5b9889cbc4 52 uint8_t readJoyRYbyte(); // |
kikuchi8810 0:4f5b9889cbc4 53 uint8_t readJoyLXbyte(); // Y<---+----
kikuchi8810 0:4f5b9889cbc4 54 uint8_t readJoyLYbyte(); // |
kikuchi8810 0:4f5b9889cbc4 55 // |
kikuchi8810 0:4f5b9889cbc4 56 // 255 ~ 0
e5119053f6 2:507b31207449 57
kikuchi8810 0:4f5b9889cbc4 58 private:
kikuchi8810 0:4f5b9889cbc4 59
kikuchi8810 0:4f5b9889cbc4 60 RawSerial serial;
kikuchi8810 0:4f5b9889cbc4 61 //Timer timer;
e5119053f6 2:507b31207449 62
kikuchi8810 0:4f5b9889cbc4 63 bool comCheck;
kikuchi8810 0:4f5b9889cbc4 64 ControllerData conData;
kikuchi8810 0:4f5b9889cbc4 65 ControllerData pre_conData;
kikuchi8810 0:4f5b9889cbc4 66 unsigned int lastButtonState;
e5119053f6 2:507b31207449 67
kikuchi8810 0:4f5b9889cbc4 68 int time_out_ms;
kikuchi8810 0:4f5b9889cbc4 69 double int_time_ms;
kikuchi8810 0:4f5b9889cbc4 70 bool conAvailable;
e5119053f6 2:507b31207449 71
kikuchi8810 0:4f5b9889cbc4 72 uint8_t serial_recieve(){
kikuchi8810 0:4f5b9889cbc4 73 char temp;
kikuchi8810 0:4f5b9889cbc4 74 do{
kikuchi8810 0:4f5b9889cbc4 75 temp = serial.getc();
kikuchi8810 0:4f5b9889cbc4 76 }
kikuchi8810 0:4f5b9889cbc4 77 while(temp==-1);
kikuchi8810 0:4f5b9889cbc4 78 //CONTROL.write(temp); //受け取ったデータをTXピンからそのまま送っている.他のマイコンにも流したいとき用.
kikuchi8810 0:4f5b9889cbc4 79 return temp;
kikuchi8810 0:4f5b9889cbc4 80 }
kikuchi8810 0:4f5b9889cbc4 81 };
e5119053f6 2:507b31207449 82
e5119053f6 2:507b31207449 83 #endif