Я настраиваю адресную светодиодную ленту (W2812B) в микроконтроллере NXP cortex-M7 для управления каждым отдельным светодиодом, например, для управления 20 светодиодами разного цвета или яркости, отправляя сигнал ШИМ. Используется один цифровой вывод PWM. Есть ли в cortex-m7 какая-нибудь адресная библиотека светодиодных лент?
Эта адресуемая библиотека светодиодных лент используется в ARM Cortex-m7. В прошлом я использовал библиотеку FastLED Arduino / AVR в качестве эталона, и я могу управлять только этими 20 светодиодами одного цвета или мигать другим цветом. Я не могу контролировать яркость RGB или HSV.
MCUXpresso IDE:
(led.h)
#include "fsl_common.h"
/*********************************************************
* LED GPIO IOMUXC
*********************************************************/
#define ADDRESSABLE_LED_GPIO_04 GPIO1
#define ADDRESSABLE_LED_GPIO_04_PIN (2U)
#define ADDRESSABLE_LED_IOMUXC_04 IOMUXC_GPIO_AD_B0_02_GPIO1_IO02
#define ADDRESSABLE_LED_HIGH GPIO_PinWrite(GPIO1,2U,1U)
#define ADDRESSABLE_LED_LOW GPIO_PinWrite(GPIO1,2U,0U)
/*****************************************************************************
******************************************************************************/
void LED_GPIO_Config(void);
(led.c)
void ADDRESSABLE_LED_WRITE_LOW(void)
{
ADDRESSABLE_LED_HIGH;
ADDRESSABLE_LED_DELAY(1);
ADDRESSABLE_LED_LOW;
ADDRESSABLE_LED_DELAY(18);
}
void ADDRESSABLE_LED_Write_HIGH(void)
{
ADDRESSABLE_LED_HIGH;
ADDRESSABLE_LED_DELAY(18);
ADDRESSABLE_LED_LOW;
ADDRESSABLE_LED_DELAY(1);
}
void ADDRESSABLE_LED_WRITE_BYTE(uint32_t byte)
{
uint8_t i;
for(i=8; i>0; i--)
{
if(((byte>>i)&0x01) == 1)
{
ADDRESSABLE_LED_Write_HIGH();
}else
{
ADDRESSABLE_LED_WRITE_LOW();
}
//ADDRESSABLE_LED_Write_HIGH();
}
}
void ADDRESSABLE_LED_WRITE_COLOUR(uint32_t red, uint32_t green, uint32_t blue)
{
ADDRESSABLE_LED_WRITE_BYTE(red);
ADDRESSABLE_LED_WRITE_BYTE(green);
ADDRESSABLE_LED_WRITE_BYTE(blue);
}
void ADDRESSABLE_LED_RED(void)
{
uint8_t i;
for(i=0; i<20; i++)
{
ADDRESSABLE_LED_WRITE_COLOUR(0xFF,0,0);
}
}
void ADDRESSABLE_LED_GREEN(void)
{
uint8_t i;
for(i=0; i<20; i++)
{
ADDRESSABLE_LED_WRITE_COLOUR(0xFF,0,0);
}
}
void ADDRESSABLE_LED_BLUE(void)
{
uint8_t i;
for(i=0; i<20; i++)
{
ADDRESSABLE_LED_WRITE_COLOUR(0,0,0xFF);
}
}
Этоадресная светодиодная лента (w2812B), которую я написал для простого управления 20 светодиодами одного цвета. Я ожидаю использовать лучшую библиотеку для управления ими, чтобы изменять цвет и яркость для каждого отдельного светодиода (например, использовать библиотеку FastLED arduino для удобного управления).