Я осознаю контроллер BLE MIDI для iPad, используя устройство Arduino Nano 33 BLE. Следующий код способен: < /p>
Сделать устройство обнаруженным в виде периферийного устройства Ble Ble Mid Каждое приложение для iOS (например, GarageBand, AUM и т. Д.) Закрывает соединение немедленно (светодиод на плате Arduino включается и выключается через несколько секунд), но если устройство постоянно отправляет MIDI -сообщения (посмотрите на строки кода, прокомментированные в функции LOOP () ), соединение остается активной навсегда; К сожалению, повторяющаяся отправка сообщений не является целью контроллера, которую я хочу реализовать. loop () function.
#include
byte midiData[] = {0x80, 0x80, 0x00, 0x00, 0x00};
// set up the MIDI service and MIDI message characteristic:
BLEService midiService("03B80E5A-EDE8-4B33-A751-6CE34EC4C700");
BLECharacteristic midiCharacteristic("7772E5DB-3868-4112-A1A9-F2669D106BF3",
BLEWrite | BLEWriteWithoutResponse |
BLENotify | BLERead, sizeof(midiData));
bool midi_connected = false;
void setup() {
// initialize serial communication
Serial.begin(9600);
// initialize built in LED:
pinMode(LED_BUILTIN, OUTPUT);
// Initialize BLE service:
if (!BLE.begin()) {
Serial.println("starting BLE failed!");
while (true);
}
BLE.setLocalName("MBLE");
BLE.setAdvertisedService(midiService);
BLE.setEventHandler(BLEConnected, onConnected);
BLE.setEventHandler(BLEDisconnected, onDisconnected);
midiCharacteristic.setEventHandler(BLEWritten, onWritten);
midiService.addCharacteristic(midiCharacteristic);
BLE.addService(midiService);
BLE.setConnectable(true);
BLE.setAdvertisingInterval(32);
BLE.setConnectionInterval(32, 64);
BLE.advertise();
}
void loop() {
BLEDevice central = BLE.central();
if (central) {
// midiCommand(0x90, 60, 127);
// delay(250);
// midiCommand(0x80, 60, 0);
// delay(250);
}
}
void onConnected(BLEDevice central) {
digitalWrite(LED_BUILTIN, HIGH);
midi_connected = true;
}
void onDisconnected(BLEDevice central) {
digitalWrite(LED_BUILTIN, LOW);
midi_connected = false;
}
void onWritten(BLEDevice central, BLECharacteristic characteristic) {
auto buffer = characteristic.value();
auto length = characteristic.valueLength();
if (length > 0)
{
// echo on the next midi channel
midiCommand(buffer[2], buffer[3], buffer[4]);
}
}
void midiCommand(byte cmd, byte data1, byte data2) {
midiData[2] = cmd;
midiData[3] = data1;
midiData[4] = data2;
midiCharacteristic.setValue(midiData, sizeof(midiData));
}
Подробнее здесь: https://stackoverflow.com/questions/646 ... -ble-nrf52
Как сохранить активную среднюю связь между Arduino Nano 33 BLE (NRF52) и iPad ⇐ IOS
Программируем под IOS
1740866651
Anonymous
Я осознаю контроллер BLE MIDI для iPad, используя устройство Arduino Nano 33 BLE. Следующий код способен: < /p>
Сделать устройство обнаруженным в виде периферийного устройства Ble Ble Mid [b] Каждое приложение для iOS (например, GarageBand, AUM и т. Д.) Закрывает соединение немедленно [/b] (светодиод на плате Arduino включается и выключается через несколько секунд), но если устройство постоянно отправляет MIDI -сообщения (посмотрите на строки кода, прокомментированные в функции LOOP () ), соединение остается активной навсегда; К сожалению, повторяющаяся отправка сообщений не является целью контроллера, которую я хочу реализовать. loop () function.
#include
byte midiData[] = {0x80, 0x80, 0x00, 0x00, 0x00};
// set up the MIDI service and MIDI message characteristic:
BLEService midiService("03B80E5A-EDE8-4B33-A751-6CE34EC4C700");
BLECharacteristic midiCharacteristic("7772E5DB-3868-4112-A1A9-F2669D106BF3",
BLEWrite | BLEWriteWithoutResponse |
BLENotify | BLERead, sizeof(midiData));
bool midi_connected = false;
void setup() {
// initialize serial communication
Serial.begin(9600);
// initialize built in LED:
pinMode(LED_BUILTIN, OUTPUT);
// Initialize BLE service:
if (!BLE.begin()) {
Serial.println("starting BLE failed!");
while (true);
}
BLE.setLocalName("MBLE");
BLE.setAdvertisedService(midiService);
BLE.setEventHandler(BLEConnected, onConnected);
BLE.setEventHandler(BLEDisconnected, onDisconnected);
midiCharacteristic.setEventHandler(BLEWritten, onWritten);
midiService.addCharacteristic(midiCharacteristic);
BLE.addService(midiService);
BLE.setConnectable(true);
BLE.setAdvertisingInterval(32);
BLE.setConnectionInterval(32, 64);
BLE.advertise();
}
void loop() {
BLEDevice central = BLE.central();
if (central) {
// midiCommand(0x90, 60, 127);
// delay(250);
// midiCommand(0x80, 60, 0);
// delay(250);
}
}
void onConnected(BLEDevice central) {
digitalWrite(LED_BUILTIN, HIGH);
midi_connected = true;
}
void onDisconnected(BLEDevice central) {
digitalWrite(LED_BUILTIN, LOW);
midi_connected = false;
}
void onWritten(BLEDevice central, BLECharacteristic characteristic) {
auto buffer = characteristic.value();
auto length = characteristic.valueLength();
if (length > 0)
{
// echo on the next midi channel
midiCommand(buffer[2], buffer[3], buffer[4]);
}
}
void midiCommand(byte cmd, byte data1, byte data2) {
midiData[2] = cmd;
midiData[3] = data1;
midiData[4] = data2;
midiCharacteristic.setValue(midiData, sizeof(midiData));
}
Подробнее здесь: [url]https://stackoverflow.com/questions/64685875/how-to-keep-an-active-midi-ble-connection-between-an-arduino-nano-33-ble-nrf52[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия