If you're sure this issue is a defect in the code and checked the steps above
please fill in the following fields to provide enough troubleshooting information.
You may delete the guideline and text above to just leave the following details:
Arduino board: Feather Bluefruit 32u4
Arduino IDE version (found in Arduino -> About Arduino menu): 1.8.5
List the steps to reproduce the problem below (if possible attach a sketch or
copy the sketch code in too): LIST REPRO STEPS BELOW
The Arduino.h file seems to be missing. When I add the rFN52 Arduino.h file to my rFN51 library, I get a rabbit hole of missing files.
`
include
include
include "Adafruit_BLE.h"
include "Adafruit_BluefruitLE_SPI.h"
include "Adafruit_BluefruitLE_UART.h"
include "Adafruit_BLEMIDI.h"
if SOFTWARE_SERIAL_AVAILABLE
include
endif
include "BluefruitConfig.h"
define FACTORYRESET_ENABLE 1
define MINIMUM_FIRMWARE_VERSION "0.7.0"
// This app was tested on iOS with the following apps:
//
// https://itunes.apple.com/us/app/midimittr/id925495245?mt=8
// https://itunes.apple.com/us/app/igrand-piano-free-for-ipad/id562914032?mt=8
//
// To test:
// - Run this sketch and open the Serial Monitor
// - Open the iGrand Piano Free app
// - Open the midimittr app on your phone and under Clients select "Adafruit Bluefruit LE"
// - When you see the 'Connected' label switch to the Routing panel
// - Set the Destination to 'iGrand Piano'
// - Switch to the iGrand Piano Free app and you should see notes playing one by one
// Create the bluefruit object, either software serial...uncomment these lines
/
SoftwareSerial bluefruitSS = SoftwareSerial(BLUEFRUIT_SWUART_TXD_PIN, BLUEFRUIT_SWUART_RXD_PIN);
Adafruit_BluefruitLE_UART ble(bluefruitSS, BLUEFRUIT_UART_MODE_PIN,
BLUEFRUIT_UART_CTS_PIN, BLUEFRUIT_UART_RTS_PIN);
/
/ ...or hardware serial, which does not need the RTS/CTS pins. Uncomment this line /
// Adafruit_BluefruitLE_UART ble(BLUEFRUIT_HWSERIAL_NAME, BLUEFRUIT_UART_MODE_PIN);
/ ...hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST /
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
/ ...software SPI, using SCK/MOSI/MISO user-defined SPI pins and then user selected CS/IRQ/RST /
//Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_SCK, BLUEFRUIT_SPI_MISO,
// BLUEFRUIT_SPI_MOSI, BLUEFRUIT_SPI_CS,
// BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
Adafruit_BLEMIDI midi(ble);
bool isConnected = false;
int current_note = 60;
// A small helper
void error(const __FlashStringHelper*err) {
Serial.println(err);
while (1);
}
/ Initialise the module /
Serial.print(F("Initialising the Bluefruit LE module: "));
if ( !ble.begin(VERBOSE_MODE) )
{
error(F("Couldn't find Bluefruit, make sure it's in CoMmanD mode & check wiring?"));
}
Serial.println( F("OK!") );
if ( FACTORYRESET_ENABLE )
{
/ Perform a factory reset to make sure everything is in a known state /
Serial.println(F("Performing a factory reset: "));
if ( ! ble.factoryReset() ) {
error(F("Couldn't factory reset"));
}
}
If you're sure this issue is a defect in the code and checked the steps above please fill in the following fields to provide enough troubleshooting information. You may delete the guideline and text above to just leave the following details:
Arduino board: Feather Bluefruit 32u4
Arduino IDE version (found in Arduino -> About Arduino menu): 1.8.5
List the steps to reproduce the problem below (if possible attach a sketch or copy the sketch code in too): LIST REPRO STEPS BELOW
The Arduino.h file seems to be missing. When I add the rFN52 Arduino.h file to my rFN51 library, I get a rabbit hole of missing files.
`
include
include
include "Adafruit_BLE.h"
include "Adafruit_BluefruitLE_SPI.h"
include "Adafruit_BluefruitLE_UART.h"
include "Adafruit_BLEMIDI.h"
if SOFTWARE_SERIAL_AVAILABLE
include
endif
include "BluefruitConfig.h"
define FACTORYRESET_ENABLE 1
define MINIMUM_FIRMWARE_VERSION "0.7.0"
// This app was tested on iOS with the following apps: // // https://itunes.apple.com/us/app/midimittr/id925495245?mt=8 // https://itunes.apple.com/us/app/igrand-piano-free-for-ipad/id562914032?mt=8 // // To test: // - Run this sketch and open the Serial Monitor // - Open the iGrand Piano Free app // - Open the midimittr app on your phone and under Clients select "Adafruit Bluefruit LE" // - When you see the 'Connected' label switch to the Routing panel // - Set the Destination to 'iGrand Piano' // - Switch to the iGrand Piano Free app and you should see notes playing one by one
// Create the bluefruit object, either software serial...uncomment these lines / SoftwareSerial bluefruitSS = SoftwareSerial(BLUEFRUIT_SWUART_TXD_PIN, BLUEFRUIT_SWUART_RXD_PIN); Adafruit_BluefruitLE_UART ble(bluefruitSS, BLUEFRUIT_UART_MODE_PIN, BLUEFRUIT_UART_CTS_PIN, BLUEFRUIT_UART_RTS_PIN); /
/ ...or hardware serial, which does not need the RTS/CTS pins. Uncomment this line / // Adafruit_BluefruitLE_UART ble(BLUEFRUIT_HWSERIAL_NAME, BLUEFRUIT_UART_MODE_PIN);
/ ...hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST / Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
/ ...software SPI, using SCK/MOSI/MISO user-defined SPI pins and then user selected CS/IRQ/RST / //Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_SCK, BLUEFRUIT_SPI_MISO, // BLUEFRUIT_SPI_MOSI, BLUEFRUIT_SPI_CS, // BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
Adafruit_BLEMIDI midi(ble);
bool isConnected = false; int current_note = 60;
// A small helper void error(const __FlashStringHelper*err) { Serial.println(err); while (1); }
// callback void connected(void) { isConnected = true;
Serial.println(F(" CONNECTED!")); delay(1000);
}
void disconnected(void) { Serial.println("disconnected"); isConnected = false; }
void BleMidiRX(uint16_t timestamp, uint8_t status, uint8_t byte1, uint8_t byte2) { Serial.print("[MIDI "); Serial.print(timestamp); Serial.print(" ] ");
Serial.print(status, HEX); Serial.print(" "); Serial.print(byte1 , HEX); Serial.print(" "); Serial.print(byte2 , HEX); Serial.print(" ");
Serial.println(); }
void setup(void) { //while (!Serial); // required for Flora & Micro //delay(500);
Serial.begin(115200); Serial.println(F("Adafruit Bluefruit MIDI Example")); Serial.println(F("---------------------------------------"));
/ Initialise the module / Serial.print(F("Initialising the Bluefruit LE module: "));
if ( !ble.begin(VERBOSE_MODE) ) { error(F("Couldn't find Bluefruit, make sure it's in CoMmanD mode & check wiring?")); } Serial.println( F("OK!") );
if ( FACTORYRESET_ENABLE ) { / Perform a factory reset to make sure everything is in a known state / Serial.println(F("Performing a factory reset: ")); if ( ! ble.factoryReset() ) { error(F("Couldn't factory reset")); } }
//ble.sendCommandCheckOK(F("AT+uartflow=off")); ble.echo(false);
Serial.println("Requesting Bluefruit info:"); / Print Bluefruit information / ble.info();
/ Set BLE callbacks / ble.setConnectCallback(connected); ble.setDisconnectCallback(disconnected);
// Set MIDI RX callback midi.setRxCallback(BleMidiRX);
Serial.println(F("Enable MIDI: ")); if ( ! midi.begin(true) ) { error(F("Could not enable MIDI")); }
ble.verbose(false); Serial.print(F("Waiting for a connection...")); }
void loop(void) { // interval for each scanning ~ 500ms (non blocking) ble.update(500);
// bail if not connected if (! isConnected) return;
Serial.print("Sending pitch "); Serial.println(current_note, HEX);
// send note on midi.send(0x90, current_note, 0x64); delay(500);
// send note off midi.send(0x80, current_note, 0x64); delay(500);
// increment note pitch current_note++;
// only do one octave if(current_note > 72) current_note = 60;
} '