add TW203 Module

This commit is contained in:
szy 2021-10-08 17:15:19 +08:00
parent d92c73e33f
commit ee5c39dd22
5 changed files with 58 additions and 16 deletions

View File

@ -29,7 +29,7 @@ lite_component("app") {
# "TW105_I2C_sht30:i2c_sht30",
# "TW106_UART:uart_example",
# "TW201_Module_oled:module_oled_example",
"TW203_Module_tricolor_light:module_tricolor_light_example",
"TW203_Module_tricolor_light:module_tricolor_light_example",
# "TW204_Module_enviroment:module_enviroment_example",
# "TW301_Network_wifista:network_wifista_example",
# "TW302_Network_wifiap:network_wifiap_example",

View File

@ -14,3 +14,53 @@
main_demo.c --本案例环境联动控制源文件
tricolor_light_demo.c --三色灯控制源文件
# 相关API介绍
## beep_demo
1.BeepInit() 蜂鸣器初始化函数初始化GPIO9为PWM0输出
2.BeepStart(): 蜂鸣器使能函数
3.BeepStop(): 蜂鸣器停止函数
4.BeepCtrl(struct BEEPCTRLATTR* ctrlAttr):蜂鸣器控制函数
ctrlAttr参数说明
times //响的次数
duty //每次响的占空比
period //每响一次的时间周期
callTime //控制函数的调用周期
## infrared_demo
1.InfraredSensorInit(): 红外传感初始化函数初始化GPIO7为IO输入
2.GetInfraredSensorVal(): 获取红外传感IO引脚当前的状态值
3.GetEnvBodyState(): 获取红外人体感应目前的环境状态
返回值(enum ENV_BODY_STATE):
BODY_NOT //无人靠近
BODY_COME //有人靠近
BODY_KEEP //有人靠近后保持
BODY_LEAVE //有人离开
## light_demo
1.LightSensorVal(unsigned short* val): 获取当前环境光照值保存到val中
2.GetLightAverageVal(unsigned char cnt): 多次获取当前环境光照并取平均值
cnt为多次获取次数
return 返回多次获取的平均值
3.GetEnvLightState(): 获取当前环境光照状态
返回值(enum ENV_LIGHT_STATE):
LIGHT_DAY //白天
LIGHT_DUSK //黄昏
LIGHT_NIGHT //黑夜
## tricolor_light_demo
1.TricolorLightInit(): 三色灯初始化函数初始化GPIO10,GPIO11,GPIO12为PWM1,PWM2,PWM3输出
2.TricolorLightStart(char redDuty, char GreenDuty, char BlueDuty): 设置PWM输出值并开启PWM输出
redDuty: 红灯PWM占空比
GreenDuty: 绿灯PWM占空比
BlueDuty: 蓝灯PWM占空比
3.TricolorLightStop(): 三色灯P输出停止函数
# 运行结果
当红外检测到有人接近时,蜂鸣器响两声,同时:
当环境光线充足时,三色灯熄灭;
当环境光线较昏暗时,三色灯显示低亮度;
当环境光线非常不足时,三色灯显示高亮度;
当红外检测到有人离开时,蜂鸣器响两声,且三色灯熄灭

View File

@ -25,7 +25,6 @@ enum ENV_LIGHT_STATE{
LIGHT_NIGHT //黑夜
};
void LightSensorInit(void);
int GetLightAverageVal(unsigned char cnt);
enum ENV_LIGHT_STATE GetEnvLightState(void);

View File

@ -17,14 +17,6 @@
#define ENV_LIGHT_LEVEL_LOW 1000 //低环境光AD值模拟黄昏
#define ENV_LIGHT_LEVEL_LOWEST 1500 //超低环境光AD值模拟黑夜
void LightSensorInit(void)
{
IoTGpioInit(IOT_GPIO_IO_GPIO_13); // 光敏电阻
IotIoSetFunc(IOT_GPIO_IO_GPIO_13, HI_IO_FUNC_GPIO_13_GPIO);
IotIoSetPull(IOT_GPIO_IO_GPIO_13, IOT_IO_PULL_UP);
IoTGpioSetDir(IOT_GPIO_IO_GPIO_13, IOT_GPIO_DIR_IN);
}
int LightSensorVal(unsigned short* val)
{
int ret = IoTAdcRead(WIFI_IOT_ADC_CHANNEL_6,val,WIFI_IOT_ADC_EQU_MODEL_8,WIFI_IOT_ADC_CUR_BAIS_DEFAULT,256);

View File

@ -27,24 +27,26 @@
const unsigned char rgbDutyLow[] = {20,4,20}; //低亮度
const unsigned char rgbDutyHig[] = {99,99,99}; //高亮度
//初始化蜂鸣器相关参数
struct BEEPCTRLATTR gBeepCtrlAttr ={
.times = 0,
.duty = 0.4,
.period = 500,
.callTime = 200
.callTime = 200
};
static void MainDemoTask(void)
{
int lightVal = 0;
char redDuty = 0, GreenDuty = 0, BlueDuty = 0;
enum ENV_BODY_STATE envBodyState = BODY_NOT;
enum ENV_LIGHT_STATE envLightState = LIGHT_DAY;
enum ENV_BODY_STATE envBodyState = BODY_NOT; //记录人体状态变量
enum ENV_LIGHT_STATE envLightState = LIGHT_DAY; //记录环境光照变量
//蜂鸣器初始化
BeepInit();
//红外传感器初始化
InfraredSensorInit();
//三色灯初始化
TricolorLightInit();
for(;;)
@ -102,7 +104,6 @@ static void MainDemoEntry(void)
if (osThreadNew((osThreadFunc_t)MainDemoTask, NULL, &attr) == NULL) {
printf("[MainDemoExample] Falied to create Main Demo Task!\n");
}
return;
}
APP_FEATURE_INIT(MainDemoEntry);