Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

M5stackでBluetoothゲームパッドをつかう

実際のところ

#include <Arduino.h>
#include <M5Core2.h>
#include <BleGamepad.h>

BleGamepad bleGamepad;

// 円の初期位置と色
int circleX = 160;
int circleY = 120;
int circleRadius = 20;
uint32_t circleColor = WHITE;

void setup() {
    M5.begin();
    Serial.begin(115200);
    Serial.println("Starting BLE work!");
    bleGamepad.begin();
    
    // 画面の初期化
    M5.Lcd.fillScreen(BLACK);
    M5.Lcd.fillCircle(circleX, circleY, circleRadius, circleColor);
}

void loop() {
    if (bleGamepad.isConnected()) {
        // ボタン5が押されたら赤色に
        if (bleGamepad.isPressed(BUTTON_5)) {
            circleColor = RED;
        }
        // ボタン16が押されたら青色に
        else if (bleGamepad.isPressed(BUTTON_16)) {
            circleColor = BLUE;
        }
        else {
            circleColor = WHITE;
        }

        // 十字キーの入力を処理
        if (bleGamepad.getHat1() == HAT_UP) {
            circleY = max(circleY - 1, circleRadius);
        }
        else if (bleGamepad.getHat1() == HAT_DOWN) {
            circleY = min(circleY + 1, 240 - circleRadius);
        }
        if (bleGamepad.getHat1() == HAT_LEFT) {
            circleX = max(circleX - 1, circleRadius);
        }
        else if (bleGamepad.getHat1() == HAT_RIGHT) {
            circleX = min(circleX + 1, 320 - circleRadius);
        }

        // 画面を更新
        M5.Lcd.fillScreen(BLACK);
        M5.Lcd.fillCircle(circleX, circleY, circleRadius, circleColor);
    }

    delay(100); //とりあず10Hz
}

参考もと