连续多个
This commit is contained in:
parent
ecb8ff9d6a
commit
aa411f8d5f
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -25,7 +25,9 @@
|
||||
"time.h": "c",
|
||||
"icmp.h": "c",
|
||||
"rgb.h": "c",
|
||||
"main.h": "c"
|
||||
"main.h": "c",
|
||||
"indicator_led.h": "c",
|
||||
"drv_matrix_led.h": "c"
|
||||
},
|
||||
// "cortex-debug.openocdPath": "d:/Develop/"
|
||||
}
|
@ -55,13 +55,8 @@ const RGBColor_TypeDef LT_GREEN = {32, 0, 0};
|
||||
const RGBColor_TypeDef LT_BLUE = {0, 0, 32};
|
||||
const RGBColor_TypeDef LT_WHITE = {16, 16, 16};
|
||||
|
||||
const RGBColor_TypeDef LED_OFF = {0, 0, 0};
|
||||
const RGBColor_TypeDef LED_ON = {255, 255, 255};
|
||||
|
||||
//灯处于特定颜色还是闪烁状态
|
||||
uint8_t LED_Blink_Staue[LED_NUM]={0};
|
||||
// 灯闪烁颜色缓存
|
||||
RGBColor_TypeDef LED_Blink_Color[LED_NUM] = {0};
|
||||
|
||||
|
||||
// 灯颜色缓存
|
||||
RGBColor_TypeDef RGB_Data[LED_NUM] = {0};
|
||||
@ -166,58 +161,7 @@ void Set_LEDColor(uint16_t LedId, RGBColor_TypeDef Color)
|
||||
RGB_Data[LedId].R = Color.R;
|
||||
RGB_Data[LedId].B = Color.B;
|
||||
}
|
||||
void LED_Set(uint16_t LedId, RGBColor_TypeDef Color)
|
||||
{
|
||||
LED_Blink_Staue[LedId]=0;
|
||||
RGB_Data[LedId].G = Color.G;
|
||||
RGB_Data[LedId].R = Color.R;
|
||||
RGB_Data[LedId].B = Color.B;
|
||||
RGB_Reflash();
|
||||
}
|
||||
void LED_Blink(uint16_t LedId, RGBColor_TypeDef Color)
|
||||
{
|
||||
LED_Blink_Staue[LedId]=1;
|
||||
LED_Blink_Color[LedId]=Color;
|
||||
// while(1)
|
||||
// {
|
||||
// LED_Set(LedId,Color);
|
||||
// rt_thread_mdelay(500);
|
||||
// LED_Set(LedId,LED_OFF);
|
||||
// rt_thread_mdelay(500);
|
||||
// }
|
||||
}
|
||||
void LED_LITTLE_TEST(void)
|
||||
{
|
||||
uint8_t LED_Blink_ON=1;
|
||||
while(1)
|
||||
{
|
||||
for(int LedId=0;LedId<LED_NUM;LedId++)
|
||||
{
|
||||
if(LED_Blink_Staue[LedId])
|
||||
{
|
||||
if(LED_Blink_ON)
|
||||
{
|
||||
Set_LEDColor(LedId,LED_Blink_Color[LedId]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_LEDColor(LedId,LED_OFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
LED_Blink_ON=!LED_Blink_ON;
|
||||
RGB_Reflash();
|
||||
rt_thread_mdelay(500);
|
||||
}
|
||||
// LED_Set(1,LED_RED);
|
||||
// rt_thread_mdelay(4000);
|
||||
// LED_Toggle(1,LED_RED);
|
||||
// rt_thread_mdelay(4000);
|
||||
// LED_Set(1,LED_RED);
|
||||
// rt_thread_mdelay(4000);
|
||||
// LED_Toggle(1,LED_RED);
|
||||
// rt_thread_mdelay(4000);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TIM发送控制ws2812
|
||||
* @param[in] 待发送缓存
|
||||
|
@ -21,9 +21,7 @@ extern const RGBColor_TypeDef LED_RED;
|
||||
extern const RGBColor_TypeDef LED_BLUE;
|
||||
extern const RGBColor_TypeDef LED_WHITE;
|
||||
extern void Set_LEDColor(uint16_t LedId, RGBColor_TypeDef Color);
|
||||
extern void LED_Set(uint16_t LedId, RGBColor_TypeDef Color);
|
||||
extern void LED_Blink(uint16_t LedId, RGBColor_TypeDef Color);
|
||||
|
||||
extern void RGB_Reflash(void);
|
||||
extern void LED_LITTLE_TEST(void);
|
||||
extern void led_matrix_rst();
|
||||
#endif
|
||||
|
99
my_pro/indicator_led.c
Normal file
99
my_pro/indicator_led.c
Normal file
@ -0,0 +1,99 @@
|
||||
#include "indicator_led.h"
|
||||
|
||||
#define LED_NUM 12 // LED灯珠个数
|
||||
|
||||
rt_thread_t led_blink_thread = RT_NULL;
|
||||
|
||||
// 灯处于特定颜色还是闪烁状态
|
||||
uint8_t LED_Blink_Staue[LED_NUM] = {0};
|
||||
// 灯闪烁颜色缓存
|
||||
RGBColor_TypeDef LED_Blink_Color[LED_NUM] = {0};
|
||||
const RGBColor_TypeDef LED_OFF = {0, 0, 0};
|
||||
const RGBColor_TypeDef LED_ON = {255, 255, 255};
|
||||
|
||||
/**
|
||||
* @brief 设置特定LED的颜色或开关
|
||||
* @param LedId LED的序号(0~LED_NUM-1)
|
||||
* @param Color 颜色/开关 LED_RED,LED_BLUE,LED_OFF,LED_ON(白色)……
|
||||
*/
|
||||
void LED_Set(uint16_t LedId, RGBColor_TypeDef Color)
|
||||
{
|
||||
LED_Blink_Staue[LedId] = 0;
|
||||
Set_LEDColor(LedId, Color);
|
||||
RGB_Reflash();
|
||||
}
|
||||
/**
|
||||
* @brief 设置连续多个特定LED的颜色或开关
|
||||
* @param LedId LED的序号(0~LED_NUM-1)
|
||||
* @param Color 颜色/开关 LED_RED,LED_BLUE,LED_OFF,LED_ON(白色)……
|
||||
*/
|
||||
void LED_SetMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Color)
|
||||
{
|
||||
for (int LedId = LedId_begin; LedId <=LedId_end ; LedId++)
|
||||
{
|
||||
Set_LEDColor(LedId, LED_Blink_Color[LedId]);
|
||||
}
|
||||
RGB_Reflash();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置特定LED的闪烁
|
||||
* @param LedId LED的序号(0~LED_NUM-1)
|
||||
* @param Color 颜色 LED_RED,LED_BLUE……
|
||||
*/
|
||||
void LED_Blink(uint16_t LedId, RGBColor_TypeDef Color)
|
||||
{
|
||||
LED_Blink_Staue[LedId] = 1;
|
||||
LED_Blink_Color[LedId] = Color;
|
||||
}
|
||||
/**
|
||||
* @brief 设置连续多个特定LED的闪烁
|
||||
* @param LedId LED的序号(0~LED_NUM-1)
|
||||
* @param Color 颜色 LED_RED,LED_BLUE……
|
||||
*/
|
||||
void LED_BlinkMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Color)
|
||||
{
|
||||
for (int LedId = LedId_begin; LedId <=LedId_end ; LedId++)
|
||||
{
|
||||
LED_Blink_Staue[LedId] = 1;
|
||||
LED_Blink_Color[LedId] = Color;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief 每0.5s判断各盏灯是否要翻转
|
||||
*/
|
||||
void led_blink_entry(void *parameter)
|
||||
{
|
||||
uint8_t LED_Blink_ON = 1;
|
||||
while (1)
|
||||
{
|
||||
for (int LedId = 0; LedId < LED_NUM; LedId++)
|
||||
{
|
||||
if (LED_Blink_Staue[LedId])
|
||||
{
|
||||
if (LED_Blink_ON)
|
||||
{
|
||||
Set_LEDColor(LedId, LED_Blink_Color[LedId]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_LEDColor(LedId, LED_OFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
LED_Blink_ON = !LED_Blink_ON;
|
||||
RGB_Reflash();
|
||||
rt_thread_mdelay(500);
|
||||
}
|
||||
}
|
||||
int led_init(void)
|
||||
{
|
||||
led_blink_thread = rt_thread_create("led blink control thread", led_blink_entry, RT_NULL, 1024, 20, 20);
|
||||
if (led_blink_thread == RT_NULL)
|
||||
{
|
||||
rt_kprintf("led blink control thread creat failed!\n");
|
||||
return 0;
|
||||
}
|
||||
rt_thread_mdelay(200); // avoid multi-thread on LED matrix transmit.
|
||||
rt_thread_startup(led_blink_thread);
|
||||
}
|
11
my_pro/indicator_led.h
Normal file
11
my_pro/indicator_led.h
Normal file
@ -0,0 +1,11 @@
|
||||
#include <rtthread.h>
|
||||
#include <drv_matrix_led.h>
|
||||
|
||||
extern void LED_Set(uint16_t LedId, RGBColor_TypeDef Color);
|
||||
extern void LED_SetMore(uint16_t LedId_begin,uint16_t LedId_end, RGBColor_TypeDef Color);
|
||||
extern void LED_Blink(uint16_t LedId, RGBColor_TypeDef Color);
|
||||
extern void LED_BlinkMore(uint16_t LedId_begin, uint16_t LedId_end, RGBColor_TypeDef Color);
|
||||
extern int led_init(void);
|
||||
|
||||
extern const RGBColor_TypeDef LED_OFF;
|
||||
extern const RGBColor_TypeDef LED_ON;
|
@ -15,38 +15,14 @@
|
||||
#include "infrared.h"
|
||||
#include <ulog.h>
|
||||
#include "my_func.h"
|
||||
#include "drv_matrix_led.h"
|
||||
#include "indicator_led.h"
|
||||
|
||||
#define THREAD_PRIORITY 25
|
||||
#define THREAD_STACK_SIZE 4096
|
||||
#define THREAD_TIMESLICE 5
|
||||
|
||||
#define BSP_USING_ONBOARD_LED_MATRIX
|
||||
// #define BSP_USING_ONBOARD_LED_MATRIX
|
||||
|
||||
/* define LED */
|
||||
enum{
|
||||
EXTERN_LED_0,
|
||||
EXTERN_LED_1,
|
||||
EXTERN_LED_2,
|
||||
EXTERN_LED_3,
|
||||
EXTERN_LED_4,
|
||||
EXTERN_LED_5,
|
||||
EXTERN_LED_6,
|
||||
EXTERN_LED_7,
|
||||
EXTERN_LED_8,
|
||||
EXTERN_LED_9,
|
||||
EXTERN_LED_10,
|
||||
EXTERN_LED_11,
|
||||
EXTERN_LED_12,
|
||||
EXTERN_LED_13,
|
||||
EXTERN_LED_14,
|
||||
EXTERN_LED_15,
|
||||
EXTERN_LED_16,
|
||||
EXTERN_LED_17,
|
||||
EXTERN_LED_18,
|
||||
};
|
||||
|
||||
rt_thread_t led_matrix_thread = RT_NULL;
|
||||
rt_thread_t MQTT_Thread = RT_NULL;
|
||||
rt_thread_t Snake_Thread = RT_NULL;
|
||||
rt_thread_t Infrared_Thread = RT_NULL;
|
||||
@ -432,42 +408,7 @@ void cdc_entry(void *parameter)
|
||||
rt_thread_mdelay(500);
|
||||
}
|
||||
}
|
||||
void led_matrix_example_entry(void *parameter)
|
||||
{
|
||||
// while (1)
|
||||
// {
|
||||
// RGB_Show_64(); // 调用RGB灯板显示函数
|
||||
// rt_thread_mdelay(500);
|
||||
// }
|
||||
|
||||
// int count = 0;
|
||||
// while (1)
|
||||
// {
|
||||
// for (int i = EXTERN_LED_0; i <= EXTERN_LED_18; i++)
|
||||
// {
|
||||
// switch (count)
|
||||
// {
|
||||
// case 0:
|
||||
// Set_LEDColor(i, LED_RED);
|
||||
// break;
|
||||
// case 1:
|
||||
// Set_LEDColor(i, LED_GREEN);
|
||||
// break;
|
||||
// case 2:
|
||||
// Set_LEDColor(i, LED_BLUE);
|
||||
// break;
|
||||
// default:
|
||||
// return;
|
||||
// break;
|
||||
// }
|
||||
// RGB_Reflash();
|
||||
// rt_thread_delay(20);
|
||||
// }
|
||||
// count = (count + 1) % 3;
|
||||
// }
|
||||
|
||||
LED_LITTLE_TEST();
|
||||
}
|
||||
// /* 用于接收消息的信号量 */
|
||||
// static struct rt_semaphore rx_sem;
|
||||
// /* 接收数据回调函数 */
|
||||
@ -635,18 +576,7 @@ void inf_init(void)
|
||||
}
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(inf_init, inf, "Infrared");
|
||||
int led_init(void)
|
||||
{
|
||||
led_matrix_thread = rt_thread_create("led matrix demo", led_matrix_example_entry, RT_NULL, 1024, 20, 20);
|
||||
if(led_matrix_thread == RT_NULL)
|
||||
{
|
||||
rt_kprintf("led matrix demo thread creat failed!\n");
|
||||
return 0;
|
||||
}
|
||||
rt_thread_mdelay(200); // avoid multi-thread on LED matrix transmit.
|
||||
rt_thread_startup(led_matrix_thread);
|
||||
|
||||
}
|
||||
void tst_init(void)
|
||||
{
|
||||
Test_Thread = rt_thread_create("Test_Thread", test_lcd, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE);
|
||||
|
@ -1,7 +1,34 @@
|
||||
#include "drv_matrix_led.h"
|
||||
#include"indicator_led.h"
|
||||
// #include "drv_matrix_led.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
void ledblink(int argc, char **argv){//设置/查询设备名称
|
||||
void ledblinkm(int argc, char **argv){
|
||||
|
||||
int LedId_begin = atoi(argv[2]);
|
||||
int LedId_end = atoi(argv[3]);
|
||||
if(!rt_strcmp(argv[1],"RED"))
|
||||
{
|
||||
LED_BlinkMore(LedId_begin,LedId_end,LED_RED);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1],"BLUE"))
|
||||
{
|
||||
LED_BlinkMore(LedId_begin,LED_BLUE);
|
||||
}
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(ledblinkm,LEDB, "BLINK LedId Color");
|
||||
void ledsetm(int argc, char **argv){
|
||||
|
||||
int LedId_begin = atoi(argv[2]);
|
||||
int LedId_end = atoi(argv[3]);
|
||||
if(!rt_strcmp(argv[1],"RED"))
|
||||
{
|
||||
LED_SetMore(LedId_begin,LedId_end,LED_RED);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1],"BLUE"))
|
||||
{
|
||||
LED_SetMore(LedId_begin,LED_BLUE);
|
||||
}
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(ledblinkm,LEDB, "BLINK LedId Color");
|
||||
// if(argc < 2){
|
||||
// const rt_uint8_t Buffer[] = "AT+NAME\r\n";
|
||||
// rt_uint8_t len = rt_strlen((const char*)Buffer);
|
||||
|
Loading…
x
Reference in New Issue
Block a user