Как управлять встроенными светодиодами Arduino Nano 33 BLE Sense?

arduino-nano led rgb-led arduino-nano-ble

Я впервые за долгое время взял свой Arduino Nano 33 BLE Sense и запустил классический скетч "Blink", чтобы убедиться, что все в порядке. После небольшого использования мне захотелось поиграть с бортовыми светодиодами. Когда я запускаю следующий код, встроенный светодиод не включается:

#define RED 22

void setup() {
    pinMode(RED, OUTPUT);
}

void loop() {
    digitalWrite(RED, HIGH);
}

Однако когда я запускаю следующий код, встроенный светодиод включается и остается включенным - он не мигает:

#define RED 22

void setup() {
    pinMode(RED, OUTPUT);
}

void loop() {
    digitalWrite(RED, LOW);
    delay(1000);
    digitalWrite(RED, HIGH);
}

Что происходит? Мой Нано сломался?

, 👍4

Обсуждение

Светодиод, вероятно, активен- НИЗКИЙ, то есть он будет гореть только тогда, когда вы пошлете сигнал "НИЗКИЙ" на соответствующий штырь светодиода. Тот факт, что он не мигает во втором скетче, объясняется тем, что вы включаете светодиод ("НИЗКИЙ"), ждете одну секунду, снова выключаете его ("ВЫСОКИЙ"), но он сразу же (в течение нескольких микросекунд) снова включается в следующей итерации "loop ()". Если вы хотите, чтобы он оставался включенным дольше, вы должны поместить "delay()" после его выключения ("digitalWrite (RED, HIGH);`)., @StarCat


1 ответ


Лучший ответ:

6

На Nano 33 BLE есть 3 светодиода:

  • Индикатор питания на выводе 25 (да, вы можете отключить индикатор питания программно);
  • Встроенный светодиод на выводе 13;
  • RGB-светодиод с красным на выводе 22, зеленым на выводе 23 и синим на выводе 24.

В файле variantим присваиваются имена:

#define PIN_LED     (13u)
#define LED_BUILTIN PIN_LED
#define LEDR        (22u)
#define LEDG        (23u)
#define LEDB        (24u)
#define LED_PWR     (25u)

Индикатор питания и встроенный светодиод являются активными- высокими, т.е. вам нужно установить их PIN на высокий уровень, чтобы включить эти светодиоды. Однако три светодиода в RGB LED являются активными- низкими.

Насколько я знаю, это не очень хорошо документировано, и некоторые примеры фрагментов кода тоже ошибочны. Быстрый взгляд на схему помогает.

Кроме того, как упоминал StarCat, вам нужны две delay(), чтобы заставить светодиод мигать.

,