Communicate with PS3 controller
Dependencies: omni_wheel PID jy901 solenoid Master kohiMD lpf SerialArduino RCJESC
main.cpp
- Committer:
- piroro4560
- Date:
- 2022-06-11
- Revision:
- 0:00ce070b2f06
- Child:
- 1:692623e55ff7
File content as of revision 0:00ce070b2f06:
/** 300_PS3com * PS3と通信して表示、ボタンに応じてモーターを動かす * モーターのピン確認、通信の確認用 * ButtonEnumを実装したい * ライブラリの実装したい */ //--------操作方法-------- // ボタン1:モード変更 // ボタン2:スタート、ストップ // ボタン3:動作1 // ボタン4:動作2 #include "main.h" #include "Master.h" #include "SerialArduino.h" #define PS3UI 0 #define PS3COM 0 DigitalOut led(LED1); Master Master;// 出力等の基本クラス #if PS3COM SerialArduino mini(A0, A1, 115200);// Arduinoを用いてPS3コントローラと通信するクラス #endif #if PS3UI DigitalIn uiToggle[3] = {}; DigitalIn uiButton(); #endif int main() { uint8_t mode=0; bool EdgeToggle[3]= {}; bool pretoggle[3]= {}; uint8_t h1,h2; bool button[12]= {}; uint8_t stick[4]= {}; uint8_t trigger[2]= {}; double pwm = 0.0; Master.SetPS3Address(button, trigger, stick); // 以下ループ while (true) { // モーター出力値の計算 for(int i=0; i < 4; i++) { if (button[i+4]) { pwm = 0.5; } else if (button[i+4+4]) { pwm = -0.5; } else { pwm = 0; } Master.SetValueMotor(i, 0.0); } #if PS3COM h1 = mini.getHedder1(); h2 = mini.getHedder2(); for(int i=0; i<12; i++) { button[i] = mini.getButton(i); } for(int i=0; i<2; i++) { trigger[i] = mini.getTrigger(i); } for(int i=0; i<4; i++) { stick[i] = mini.getStick(i); } for(int i=0; i<12; i++) printf("%d ",button[i]); printf("|"); for(int i=0; i<2; i++) printf("%3d ",trigger[i]); printf("|"); for(int i=0; i<4; i++) printf("%3d ",stick[i]); if(mini.getState()) printf("ok"); else printf("bad"); printf("\r\n"); #endif #if PS3UI for (int i=0; i<3; i++) { if (preToggle[i] && !((int)uiToggle[i])) EdgeToggle = 1; preToggle[i] = (int)uiToggle[i]; } if (uiButton) { switch mode { case 0: Master.PS3Com(); break; case 1: Master.Shot(); break; case 2: Master.Dribble(); break; } } #endif } }