Освой Arduino играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Адресная лента на M5Stack Fire

Устройство 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);

}

Дополнительные материалы

Реклама