RTOS多任务模式实现如下功能: 1.RFID卡片读取,基于RC522模块 模块引脚定义: #define RFID_RST_PIN 14 //RC522 复位引脚 #define RFID_SS_PIN 10 //RC522 片选引脚 #define RFID_MISO_PIN 13 // MISO 引脚 #define RFID_MOSI_PIN 12 // MOSI 引脚 #define RFID_SCK_PIN 11 // SCK 引脚 将读取到的卡片中用户数据区的字符信息发送给串口,发送格式为“SORC_XXXXX”,比如,如果读取到HA001就发送"SORC_HA001",卡片在读取状态下不要持续发送,只需要发送1次,如果卡片离开读卡器,再次放入读卡器又读取到相同的信息,则需要发送。注意,这里要把读取到的数据转换为ASCII字符 2.基于FASTLED库,控制位于GPIO4 引脚上的1颗WS2812灯珠,并接受如下来自串口的指令。 串口指令“MO_LED_0”,灯珠熄灭 串口指令“MO_LED_1”,灯珠亮蓝色 串口指令“MO_LED_2”,灯珠亮绿色 串口指令“MO_LED_3”,灯珠亮橙色 串口指令“MO_LED_4”,灯珠亮红色 串口指令“MO_LED_5”,灯珠亮紫色 串口指令“MO_LED_6”,灯珠亮黄色 串口指令“MO_LED_7”,灯珠亮白色,为默认色 3.基于FASTLED库,控制位于GPIO5 引脚上的160颗ws2812灯带,灯带有5个状态。可被串口指令控制。 串口指令“MO_LEDN_0”,灯珠全灭 串口指令“MO_LEDN_1”,灯珠全部亮白色 串口指令“MO_LEDN_2”,彩虹流水灯效果 串口指令“MO_LEDN_3”,彩虹呼吸灯效果 串口指令“MO_LEDN_4”,彩虹火车灯效果,灯珠从第1颗开始出来,往灯带尾部前进,火车灯长度为16颗,当走到尾部时,所有灯珠要全部要进站,也就是一颗颗减少,直到灯带上没有灯珠亮起,再一颗颗倒回来,一直走到所有灯珠倒进第一颗灯珠进站。每次从一头出来就变换一种彩虹色。 状态0 全部熄灭状态,串口指令“MO_LEDN_0”; 状态1 纯白色,串口指令“MO_LEDN_1”; 状态2 彩虹流水灯,串口指令“MO_LEDN_2”,次 状态3 彩虹呼吸灯,串口指令“MO_LEDN_3” 状态4 马卡龙火车灯,串口指令“MO_LEDN_4”,效果为每次从5种马卡龙色中选择一种,以16颗灯珠为一列,从灯带头跑到灯带尾,变色后又从灯带尾跑到灯带头,以此循环。 4.在GPIO6上输出1000hz的pwm控制信号,默认信号强度为80%,根据串口的指令,来控制输出信号强度。 串口指令“MO_PWM_0”,输出为0; 串口指令“MO_PWM_20”,输出为20%; 串口指令“MO_PWM_40”,输出为40%; 串口指令“MO_PWM_60”,输出为60%; 串口指令“MO_PWM_80”,输出为80%; 串口指令“MO_PWM_1”,输出为100%; 5.检测GPIO15的电平变化,GPIO15接入一个触点按钮,按钮另一端接入GND。按钮或引脚按照下述行为,进行响应。 GPIO15默认为高电平,当按钮按下后,出发导通GND低电平,向串口发送1次“SO_BT0_HIGH”,如果按键持续按下超过2秒,则向串口发送一次“SO_BT0_HIGHL”,如果按钮松开,则向串口发送“SO_BT0_LOW”。 6.检测GPIO16的电平状态,默认为低电平,如果检测到高电平信号,则向串口发送1次“SO_WAKEUP1”,如果恢复为低则向串口发送1次“SO_WAKEUP0”。 7.检测GPIO17的电平状态,默认为低电平,如果检测到高电平信号,则向串口发送1次“SO_BT1_HIGH”,如果恢复为低,则向串口发送1次“SO_BT1_LOW”, 8.检测GPIO18的电平状态,默认为低电平,如果检测到高电平信号,则向串口发送1次“SO_BT2_HIGH”,如果恢复为低,则向串口发送1次“SO_BT2_LOW”,9 9.位于gpio48的引脚设置为一颗ws2812灯珠,默认关闭状态。