Communicate with PS3 controller
Dependencies: omni_wheel PID jy901 solenoid Master kohiMD lpf SerialArduino RCJESC
main.cpp@1:692623e55ff7, 2022-06-14 (annotated)
- Committer:
- piroro4560
- Date:
- Tue Jun 14 05:06:23 2022 +0000
- Revision:
- 1:692623e55ff7
- Parent:
- 0:00ce070b2f06
- Child:
- 2:7da4a8e74955
Motor testing with buttons
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
piroro4560 | 0:00ce070b2f06 | 1 | /** 300_PS3com |
piroro4560 | 0:00ce070b2f06 | 2 | * PS3と通信して表示、ボタンに応じてモーターを動かす |
piroro4560 | 0:00ce070b2f06 | 3 | * モーターのピン確認、通信の確認用 |
piroro4560 | 0:00ce070b2f06 | 4 | * ButtonEnumを実装したい |
piroro4560 | 0:00ce070b2f06 | 5 | * ライブラリの実装したい |
piroro4560 | 0:00ce070b2f06 | 6 | */ |
piroro4560 | 0:00ce070b2f06 | 7 | |
piroro4560 | 0:00ce070b2f06 | 8 | //--------操作方法-------- |
piroro4560 | 0:00ce070b2f06 | 9 | // ボタン1:モード変更 |
piroro4560 | 0:00ce070b2f06 | 10 | // ボタン2:スタート、ストップ |
piroro4560 | 0:00ce070b2f06 | 11 | // ボタン3:動作1 |
piroro4560 | 0:00ce070b2f06 | 12 | // ボタン4:動作2 |
piroro4560 | 0:00ce070b2f06 | 13 | |
piroro4560 | 0:00ce070b2f06 | 14 | |
piroro4560 | 0:00ce070b2f06 | 15 | #include "main.h" |
piroro4560 | 0:00ce070b2f06 | 16 | #include "Master.h" |
piroro4560 | 0:00ce070b2f06 | 17 | #include "SerialArduino.h" |
piroro4560 | 0:00ce070b2f06 | 18 | |
piroro4560 | 1:692623e55ff7 | 19 | #define PS3COM 1 |
piroro4560 | 0:00ce070b2f06 | 20 | #define PS3UI 0 |
piroro4560 | 0:00ce070b2f06 | 21 | |
piroro4560 | 0:00ce070b2f06 | 22 | DigitalOut led(LED1); |
piroro4560 | 0:00ce070b2f06 | 23 | Master Master;// 出力等の基本クラス |
piroro4560 | 0:00ce070b2f06 | 24 | |
piroro4560 | 0:00ce070b2f06 | 25 | #if PS3COM |
piroro4560 | 0:00ce070b2f06 | 26 | SerialArduino mini(A0, A1, 115200);// Arduinoを用いてPS3コントローラと通信するクラス |
piroro4560 | 1:692623e55ff7 | 27 | void PS3get(void); |
piroro4560 | 0:00ce070b2f06 | 28 | #endif |
piroro4560 | 0:00ce070b2f06 | 29 | |
piroro4560 | 0:00ce070b2f06 | 30 | #if PS3UI |
piroro4560 | 0:00ce070b2f06 | 31 | DigitalIn uiToggle[3] = {}; |
piroro4560 | 0:00ce070b2f06 | 32 | DigitalIn uiButton(); |
piroro4560 | 0:00ce070b2f06 | 33 | #endif |
piroro4560 | 0:00ce070b2f06 | 34 | |
piroro4560 | 1:692623e55ff7 | 35 | uint8_t h1,h2; |
piroro4560 | 1:692623e55ff7 | 36 | bool b[12]= {}; |
piroro4560 | 1:692623e55ff7 | 37 | uint8_t st[4]= {}; |
piroro4560 | 1:692623e55ff7 | 38 | uint8_t tr[2]= {}; |
piroro4560 | 1:692623e55ff7 | 39 | |
piroro4560 | 0:00ce070b2f06 | 40 | int main() |
piroro4560 | 0:00ce070b2f06 | 41 | { |
piroro4560 | 0:00ce070b2f06 | 42 | uint8_t mode=0; |
piroro4560 | 0:00ce070b2f06 | 43 | bool EdgeToggle[3]= {}; |
piroro4560 | 0:00ce070b2f06 | 44 | bool pretoggle[3]= {}; |
piroro4560 | 0:00ce070b2f06 | 45 | |
piroro4560 | 1:692623e55ff7 | 46 | double pwm[4] = {}; |
piroro4560 | 0:00ce070b2f06 | 47 | |
piroro4560 | 1:692623e55ff7 | 48 | Master.SetPS3Address(b, tr, st); |
piroro4560 | 1:692623e55ff7 | 49 | // 以下ループ |
piroro4560 | 0:00ce070b2f06 | 50 | while (true) { |
piroro4560 | 0:00ce070b2f06 | 51 | |
piroro4560 | 0:00ce070b2f06 | 52 | // モーター出力値の計算 |
piroro4560 | 0:00ce070b2f06 | 53 | for(int i=0; i < 4; i++) { |
piroro4560 | 1:692623e55ff7 | 54 | if (b[i+4]) { |
piroro4560 | 1:692623e55ff7 | 55 | pwm[i] = 0.5; |
piroro4560 | 1:692623e55ff7 | 56 | } else if (b[i+4+4]) { |
piroro4560 | 1:692623e55ff7 | 57 | pwm[i] = -0.5; |
piroro4560 | 0:00ce070b2f06 | 58 | } else { |
piroro4560 | 1:692623e55ff7 | 59 | pwm[i] = 0; |
piroro4560 | 0:00ce070b2f06 | 60 | } |
piroro4560 | 0:00ce070b2f06 | 61 | } |
piroro4560 | 0:00ce070b2f06 | 62 | |
piroro4560 | 0:00ce070b2f06 | 63 | #if PS3COM |
piroro4560 | 1:692623e55ff7 | 64 | PS3get(); |
piroro4560 | 0:00ce070b2f06 | 65 | #endif |
piroro4560 | 0:00ce070b2f06 | 66 | |
piroro4560 | 0:00ce070b2f06 | 67 | #if PS3UI |
piroro4560 | 0:00ce070b2f06 | 68 | for (int i=0; i<3; i++) { |
piroro4560 | 0:00ce070b2f06 | 69 | if (preToggle[i] && !((int)uiToggle[i])) EdgeToggle = 1; |
piroro4560 | 0:00ce070b2f06 | 70 | preToggle[i] = (int)uiToggle[i]; |
piroro4560 | 0:00ce070b2f06 | 71 | } |
piroro4560 | 0:00ce070b2f06 | 72 | if (uiButton) { |
piroro4560 | 0:00ce070b2f06 | 73 | switch mode { |
piroro4560 | 0:00ce070b2f06 | 74 | case 0: |
piroro4560 | 0:00ce070b2f06 | 75 | Master.PS3Com(); |
piroro4560 | 0:00ce070b2f06 | 76 | break; |
piroro4560 | 0:00ce070b2f06 | 77 | case 1: |
piroro4560 | 0:00ce070b2f06 | 78 | Master.Shot(); |
piroro4560 | 0:00ce070b2f06 | 79 | break; |
piroro4560 | 0:00ce070b2f06 | 80 | case 2: |
piroro4560 | 0:00ce070b2f06 | 81 | Master.Dribble(); |
piroro4560 | 0:00ce070b2f06 | 82 | break; |
piroro4560 | 0:00ce070b2f06 | 83 | } |
piroro4560 | 0:00ce070b2f06 | 84 | } |
piroro4560 | 0:00ce070b2f06 | 85 | #endif |
piroro4560 | 1:692623e55ff7 | 86 | for (int i=0; i<4; i++) { |
piroro4560 | 1:692623e55ff7 | 87 | Master.SetValueMotor(i, pwm[i]); |
piroro4560 | 1:692623e55ff7 | 88 | } |
piroro4560 | 0:00ce070b2f06 | 89 | } |
piroro4560 | 1:692623e55ff7 | 90 | } |
piroro4560 | 1:692623e55ff7 | 91 | |
piroro4560 | 1:692623e55ff7 | 92 | #if PS3COM |
piroro4560 | 1:692623e55ff7 | 93 | void PS3get(void) |
piroro4560 | 1:692623e55ff7 | 94 | { |
piroro4560 | 1:692623e55ff7 | 95 | h1 = mini.getHedder1(); |
piroro4560 | 1:692623e55ff7 | 96 | h2 = mini.getHedder2(); |
piroro4560 | 1:692623e55ff7 | 97 | for(int i=0; i<12; i++) { |
piroro4560 | 1:692623e55ff7 | 98 | b[i] = mini.getButton(i); |
piroro4560 | 1:692623e55ff7 | 99 | } |
piroro4560 | 1:692623e55ff7 | 100 | for(int i=0; i<2; i++) { |
piroro4560 | 1:692623e55ff7 | 101 | tr[i] = mini.getTrigger(i); |
piroro4560 | 1:692623e55ff7 | 102 | } |
piroro4560 | 1:692623e55ff7 | 103 | for(int i=0; i<4; i++) { |
piroro4560 | 1:692623e55ff7 | 104 | st[i] = mini.getStick(i); |
piroro4560 | 1:692623e55ff7 | 105 | } |
piroro4560 | 1:692623e55ff7 | 106 | for(int i=0; i<12; i++) printf("%d ",b[i]); |
piroro4560 | 1:692623e55ff7 | 107 | printf("|"); |
piroro4560 | 1:692623e55ff7 | 108 | for(int i=0; i<2; i++) printf("%3d ",tr[i]); |
piroro4560 | 1:692623e55ff7 | 109 | printf("|"); |
piroro4560 | 1:692623e55ff7 | 110 | for(int i=0; i<4; i++) printf("%3d ",st[i]); |
piroro4560 | 1:692623e55ff7 | 111 | if(mini.getState()) printf("ok"); |
piroro4560 | 1:692623e55ff7 | 112 | else printf("bad"); |
piroro4560 | 1:692623e55ff7 | 113 | printf("\r\n"); |
piroro4560 | 1:692623e55ff7 | 114 | } |
piroro4560 | 1:692623e55ff7 | 115 | #endif |