Arduino101에서 BLE MIDI L 치카

11037 단어 미디BLE아오노

Arduino101은 무엇입니까?



Arudino의 플랫폼에 Intel 사제의 칩 Curie를 실어 Bluetooth나 각종 센서를 간편하게 사용할 수 버리는 Arudino입니다.


의식: L치카



현인 계기로 Arduino101을 얻었는데, 봉인도 비우지 않고 왠지 방치하고 소중히 보관하고 있었습니다. 그렇다고는 해도, 이것도 현인 계기로 만지고 싶어집니다.
그리고, 한다면 「L치카」가 되는 것입니다만 조금 색을 ​​붙여 BLE MIDI L치카를 해 보았습니다.

샘플



Arudino의 좋은 곳은 샘플이 IDE에 짜넣어져 있어, 아빠와 팩하는 참고로 할 수 있는 곳. 이번은 BLE MIDI입니다만, 실은 아직 샘플에는 짜넣어지고 있지 않고, 이것도 또 현인 계기로부터 Github로부터 샘플을 파내고 있었습니다.
샘플 파일은 여기에 있습니다.
그래서 샘플을 다시 씁니다.

BLE MIDI L치카코드



거의 샘플 의 유용으로 midiCharacteristicWritten() 의 Method만을 변경했습니다. 거동은 모처럼 MIDI이므로 MIDI감을 맛볼 수 있도록 이하와 같이 변경하고 있습니다.
- 0x90: 점등
- 그 외 : 꺼짐

그리고 L치카이므로 PIN의 번호라든지 지정도 하고 있습니다.int LED_PIN=13;pinMode(LED_PIN, OUTPUT);
그리고 L치카를 컨트롤하는 앱은 물론 Web MIDI API를 사용한 것을 준비했습니다.
MIDI 메시지를 발행하는 웹 앱

( 두 소스는 여기에 있습니다. )
#include <CurieBLE.h>

#define TXRX_BUF_LEN              20 //max number of bytes
#define RX_BUF_LEN                20 //max number of bytes
uint8_t rx_buf[RX_BUF_LEN];
int rx_buf_num, rx_state = 0;
uint8_t rx_temp_buf[20];
uint8_t outBufMidi[128];

//Buffer to hold 5 bytes of MIDI data. Note the timestamp is forced
uint8_t midiData[] = {0x80, 0x80, 0x00, 0x00, 0x00};

BLEPeripheral midiDevice; // create peripheral instance

BLEService midiSvc("03B80E5A-EDE8-4B33-A751-6CE34EC4C700"); // create service

// create switch characteristic and allow remote device to read and write
BLECharacteristic midiChar("7772E5DB-3868-4112-A1A9-F2669D106BF3", BLEWrite | BLEWriteWithoutResponse | BLENotify | BLERead, 5);

int LED_PIN=13;

void setup() {
  Serial.begin(9600);

  BLESetup();
  Serial.println(("Bluetooth device active, waiting for connections..."));
}

void BLESetup()
{
  // set the local name peripheral advertises
  midiDevice.setLocalName("Auxren");
  midiDevice.setDeviceName("Auxren");

  // set the UUID for the service this peripheral advertises
  midiDevice.setAdvertisedServiceUuid(midiSvc.uuid());

  // add service and characteristic
  midiDevice.addAttribute(midiSvc);
  midiDevice.addAttribute(midiChar);

  // assign event handlers for connected, disconnected to peripheral
  midiDevice.setEventHandler(BLEConnected, midiDeviceConnectHandler);
  midiDevice.setEventHandler(BLEDisconnected, midiDeviceDisconnectHandler);

  // assign event handlers for characteristic
  midiChar.setEventHandler(BLEWritten, midiCharacteristicWritten);
  // set an initial value for the characteristic
  midiChar.setValue(midiData, 5);

  // advertise the service
  midiDevice.begin();

  pinMode(LED_PIN, OUTPUT);
}

void loop() {
}

void midiDeviceConnectHandler(BLECentral& central) {
  // central connected event handler
  Serial.print("Connected event, central: ");
  Serial.println(central.address());
}

void midiDeviceDisconnectHandler(BLECentral& central) {
  // central disconnected event handler
  Serial.print("Disconnected event, central: ");
  Serial.println(central.address());
}

void midiCharacteristicWritten(BLECentral& central, BLECharacteristic& characteristic) { 
  if((midiChar.value())[2]==0x90) {
    digitalWrite(LED_PIN, HIGH);
  } else {
    digitalWrite(LED_PIN, LOW);
  }
}

작동 중 영상



흔들리고 스미마 센> <
Mac과 BLE MIDI로 연결하는 것이 조금 번거롭기 때문에 영상을 참고하십시오. (이미지를 클릭하면 동영상을 볼 수 있습니다)




웹 앱은 무엇입니까? 그리고 신경이 쓰이는 분은 여기를 참조하십시오.
- MIDI 디바이스의 준비 불필요, Web MIDI API의 기초(HTML5 Experts.jp)
- Web MIDI API 사용 자습서

좋은 웹페이지 즐겨찾기