укажите имя функции класса в качестве параметра

Я пытаюсь написать код с использованием библиотеки FastLed, чтобы иметь светодиодную полосу с тремя состояниями (цвет или яркость), используя физический переключатель ввода, в то время как каждое нажатие будет менять цвет светодиодов, используя предопределенный список.

Приведенный ниже код демонстрирует 1) создание colorPallete из двух цветов 2) попытку использовать его в цикле, но безуспешно.

#include <FastLED.h>

// Сколько светодиодов в вашей ленте?
#define NUM_LEDS 1

// Для светодиодных чипов, таких как Neopixels, у которых есть линия передачи данных, заземление и питание, вы просто
// необходимо определить DATA_PIN. Для светодиодных чипсетов на основе SPI (четыре провода — данные, часы,
// земля и питание), как и LPD8806, определяют как DATA_PIN, так и CLOCK_PIN
#define DATA_PIN 3
//#определить CLOCK_PIN 13

// Определяем массив светодиодов
CRGB leds[NUM_LEDS];
int colorSelctor = 0;
int birughtSelector = 25;
int inputPin = 13;
char *colorPallete[2] = {"Red","Blue"};

void setup() {
  // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
  // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
  FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
  pinMode(inputPin, INPUT_PULLUP);
}

void loop() {
  // Включаем светодиод, затем делаем паузу
  leds[0] = CRGB::colorPallete[0];
  FastLED.show();
  delay(500);
  // Теперь выключим светодиод, затем сделаем паузу
  leds[0] = CRGB::Black;
  FastLED.show();
  delay(500);
}

, 👍0

Обсуждение

Я не вижу, чтобы цветовая палитра использовалась в вашей функции цикла, и мне интересно, как строковое имя может работать как определение цвета. Я могу интерпретировать этот вопрос только так: «Мне нужно что-то сделать, можете ли вы сделать это для меня?» это не является целью StackExchange, @Roberto Lo Giacco


1 ответ


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

3

CRGB::Red и т. д. — это просто цифры. Вы должны относиться к ним соответственно.

uint32_t colorPallette[2] = { CRGB::Red, CRGB::Blue };

А потом:

leds[0] = colorPallete[0];

Из pixeltypes.h:

/// Предопределенные цвета RGB
typedef enum {
    AliceBlue=0xF0F8FF,
    Amethyst=0x9966CC,
    AntiqueWhite=0xFAEBD7,
    Aqua=0x00FFFF,
    Aquamarine=0x7FFFD4,
    Azure=0xF0FFFF,
    Beige=0xF5F5DC,
    Bisque=0xFFE4C4,
    Black=0x000000,
      ... etc ...
} HTMLColorCode;
,

Это отличный обходной путь! (тем более, что я не понял решение выше). Спасибо!!!, @Guy . D