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
    }
}