MKR 1010 WIFI Встроенный светодиод RGB не работает с BLE

rgb-led ble mkr1010wifi

в дополнение к стандартному LED_BUILTIN, MKR 1010 WIFI оснащен встроенным светодиодом RGB.

Этот RGB-светодиод не работает при использовании встроенного BLE, независимо от того, какую последовательность программ я тестирую.

Чтобы воспроизвести проблему, включите светодиод, а затем запустите BLE, который выключит светодиод.

#include <WiFiNINA.h>
#include <utility\wifi_drv.h>
#include <ArduinoBLE.h>

void setup() {

  const int ledPin = 27;  //R=26 G=25 B=27

  WiFiDrv::pinMode(ledPin, OUTPUT);

  WiFiDrv::digitalWrite(ledPin, HIGH);

  Serial.begin(115200);
  while (!Serial);

  if (!BLE.begin()) { // ble.begin выключает светодиод
    Serial.println("BLE Failed");
    while (1);
  }

  Serial.println("BLE started"); // последняя строка показана в консоли
  
  WiFiDrv::digitalWrite(ledPin, HIGH); 

  // программа сюда никогда не попадает

}


void loop() {}

Светодиод RGB подключен к контактам GPIO NINA. Два из них (зеленый и синий) входят в состав UART, а еще один используется для сигналов управления системой (красный).

Я предположил, что BLE.begin использует UART для связи с процессором, поэтому избегал красного контакта и добавлял задержки между командами, надеясь разделить действия, но это не сработало.

Моя цель — использовать светодиод RGB для индикации состояний BLE без добавления трех наборов полевых МОП-транзисторов и резисторов. Идеи?

, 👍1


1 ответ


1

Библиотека ArduinoBLE сбрасывает прошивку NINA в режим BLE (код здесь ). В этом режиме прошивка NINA просто устанавливает ESP32 SDK (фреймворк IDF) для обработки команд BLE.

Светодиод RGB управляется той частью прошивки Arduino NINA, которая обрабатывает команды из библиотеки WiFiNINA. Эти команды передаются через SPI и не обрабатываются, если прошивка находится в режиме BLE.

,

Ценю разъяснения, спасибо Юрай, @Nino