Освой Arduino играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Устройство M5Stack Fire содержит адресную ленту из 10 светодиодов. Для управления лентой требуется установить библиотеку Adafruit NeoPixel. Лента подключена к порту 15. В скетче количество светодиодов и номер порта удобнее задать отдельно в виде переменных или констант.
Напишем скетч, в которой все светодиоды будут мигать красным цветом.
#include <M5Stack.h>
// Подключаем библиотеку Adafruit NeoPixel
#include <Adafruit_NeoPixel.h>
// У Fire в ленте 10 светодиодов
#define M5STACK_FIRE_NEO_NUM_LEDS 10
// У Fire адресная лента подключена к порту 15
#define M5STACK_FIRE_NEO_PIN 15
// Создаем объект для управления нашей лентой
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(M5STACK_FIRE_NEO_NUM_LEDS,
M5STACK_FIRE_NEO_PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
M5.Lcd.begin();
// Настройки экрана не обязательны, можно не использовать
M5.Lcd.setBrightness(55); // уровень яркости экрана
M5.Lcd.fillScreen(TFT_DARKGREY);
// Инициализируем ленту.
pixels.begin();
}
void loop()
{
// Включаем все светодиоды.
for (int i = 0; i < M5STACK_FIRE_NEO_NUM_LEDS; i++)
{
pixels.setPixelColor(i, pixels.Color(255, 0, 0)); // красный цвет
}
// Передаем цвета ленте
pixels.show();
// Пауза 500 мс
delay(500);
// Выключаем все светодиоды
for (int i = 0; i < M5STACK_FIRE_NEO_NUM_LEDS; i++)
{
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // Черный цвет, т.е. выключено
}
// Передаем цвета ленте
pixels.show();
// Пауза 500 мс
delay(500);
}
В составе примеров есть скетч M5StackFire_NeoPixelTest (на Гитхабе пример был переименован RGB_BAR_TEST, он может быть под этим именем, если вы будете переустанавливать библиотеку M5Stack). В этом примере цвет для светодиодов выбирается случайным образом.
Обратите внимание, что в этом скетче не подключается библиотека M5Stack, так она здесь не используется. Если вы будете что-то выводить на экран, то не забудьте про неё.
#include <Adafruit_NeoPixel.h>
#define M5STACK_FIRE_NEO_NUM_LEDS 10
#define M5STACK_FIRE_NEO_DATA_PIN 15
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(M5STACK_FIRE_NEO_NUM_LEDS,
M5STACK_FIRE_NEO_DATA_PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
pixels.begin();
}
void loop()
{
static int pixelNumber = 0; // = random(0, M5STACK_FIRE_NEO_NUM_LEDS - 1);
pixelNumber++;
if (pixelNumber > 9)pixelNumber = 0;
int r = 1 << random(0, 7);
int g = 1 << random(0, 7);
int b = 1 << random(0, 7);
pixels.setPixelColor(pixelNumber, pixels.Color(r, g, b));
pixels.show();
delay(100);
}