【Arduino】BluetoothでPS3コントローラと接続する

〇必要なもの
Arduino Uno
USBホストシールド
Bluetoothアダプタ
PS3コントローラ + USBケーブル

〇ライブラリのインストール
Arduino IDE上で Ctrl+Shift+I を押してライブラリマネージャを開き、
「USB Host Shield Library 2.0」をインストールする。
(スケッチ > ライブラリをインクルード > ライブラリを管理 からでも可)

〇プログラムを書く
サンプルプログラム
(ファイル > スケッチ例 > USB Host Shield Library 2.0 > Bluetooth > PS3BT)
を参考にする。

〇手順
1. ArduinoにUSBホストシールド、Bluetoothアダプタを差し込む。
2. Arduinoにプログラムを書き込む。
3. Bluetoothアダプタを抜いて、PS3コントローラとUSBケーブルで接続する。
4. USBケーブルを抜いて、もう一度Bluetoothアダプタを差し込む。
5. PS3コントローラのPSボタンを押す。
赤色のランプの1番が点灯すれば接続完了です。

main.ino

#include <PS3BT.h>
#include <usbhub.h>
#include "Led.h"

USB Usb;
BTD Btd(&Usb);
PS3BT PS3(&Btd);
Led led = Led(8);

int count = 0;

void setup() {
  Serial.begin(115200);
  while (!Serial);
  if (Usb.Init() == -1) {
    Serial.print(F("\r\nOSC did not start"));
    while (1);
  }
  Serial.print(F("\r\nPS3 Bluetooth Library Started"));
}

void loop() {
  Usb.Task();
  if (PS3.PS3Connected) {
    if (PS3.getButtonClick(PS)) {
      Serial.print(F("\r\nPS"));
      PS3.disconnect();
    } else {
      if (PS3.getButtonClick(TRIANGLE)) {
        Serial.print(F("\r\nTraingle"));
      }
      if (PS3.getButtonClick(CIRCLE)) {
        Serial.print(F("\r\nCircle"));
        led.on();
      }
      if (PS3.getButtonClick(CROSS)) {
        Serial.print(F("\r\nCross"));
        led.off();
      }
      if (PS3.getButtonClick(SQUARE)) {
        Serial.print(F("\r\nSquare"));
        while (count != 3) {
          led.on();
          delay(1000);
          led.off();
          delay(1000);
          count++;
        }
        count = 0;
      }
    }
  }
}

Led.h

#pragma once

class Led {
  public:
    Led(int pin);
    void on();
    void off();

  private:
    int m_led_pin;
};

Led.cpp

#include "Arduino.h"
#include "Led.h"

Led::Led(int pin) {
  m_led_pin = pin;
  pinMode(m_led_pin, OUTPUT);
}

void Led::on() {
  digitalWrite(m_led_pin, HIGH);
}

void Led::off() {
  digitalWrite(m_led_pin, LOW);
}

今回の場合、
○ボタンを押すとLEDを点灯、
×ボタンを押すとLEDを消灯、
□ボタンを押すとLEDが3回点滅する。
また、接続された状態でPSボタンを押すと接続を切ることができる。

タイトルとURLをコピーしました