代码拉取完成,页面将自动刷新
本案例程序将演示怎么在拓维Niobe WiFi IoT Motor开发板上,演示通过温湿度驱动马达,通过光照强度驱动LED灯。
本案例主要使用了I2C和GPIO进行通信,功能简单。在基础通信接口之上,封装了以下几个API完成马达板的驱动。
void MotorInit(void);
描述:
初始化马达开发板的硬件状态。
typedef struct
{
float Lux; //光照强度
float Humidity; //湿度
float Temperature; //温度
} Motor_Data_TypeDef;
void MotorReadData(Motor_Data_TypeDef *data);
描述:
读取马达板上的光照强度传感器和温湿度传感器的数据,输出存储在Motor_Data_TypeDef结构体中。
参数:
名字 | 描述 |
---|---|
data | 表示马达板上传感器数据,包括温度、湿度和光照强度。 |
typedef enum
{
OFF = 0, //关
ON //开
} Motor_Status_ENUM;
void LightStatusSet(Motor_Status_ENUM status);
描述:
设置马达板上LED灯的开关状态。
参数:
名字 | 描述 |
---|---|
status | 表示LED的开关状态。 |
typedef enum
{
OFF = 0, //关
ON //开
} Motor_Status_ENUM;
void MotorStatusSet(Motor_Status_ENUM status);
描述:
设置马达板上马达的开关状态。
参数:
名字 | 描述 |
---|---|
status | 表示马达的开关状态。 |
主要代码分析
本次程序主要模拟如下场景,当天黑或者下雨天光线暗淡时,自动亮灯;天亮或者天晴光线强时,自动关灯。当天气温度较高时,自动启动风扇(电机),天气温度较低时,自动关闭风扇(电机)。
MotorInit
函数初始化马达板硬件状态。MotorReadData
函数获取传感器数据。LightStatusSet
函数开灯,否则关灯。MotorStatusSet
函数开启马达,否则关闭马达。static Motor_Data_TypeDef Motor_Data;
static void MotorExampleTask(void)
{
MotorInit();
while (1)
{
printf("\n=============================================\n");
printf("\n*************Motor_Example_Task**************\n");
printf("\n=============================================\n");
MotorReadData(&Motor_Data);
printf("\n******************************Lux Value is %.2f\n", Motor_Data.Lux);
printf("\n******************************Humidity is %.2f\n", Motor_Data.Humidity);
printf("\n******************************Temperature is %.2f\n", Motor_Data.Temperature);
if (Motor_Data.Lux < 20 || Motor_Data.Humidity > 70)
{
LightStatusSet(ON);
}
else
{
LightStatusSet(OFF);
}
if (Motor_Data.Temperature > 31)
{
MotorStatusSet(ON);
}
else
{
MotorStatusSet(OFF);
}
usleep(1000 * 1000);
}
}
修改 applications/app/BUILD.gn
路径中的 BUILD.gn 文件,指定 module_motor_example
参与编译。
# "TW201_Module_oled:module_oled_example",
# "TW202_Module_traffic_light:module_traffic_light_example",
# "TW203_Module_tricolor_light:module_tricolor_light_example",
# "TW204_Module_enviroment:module_enviroment_example",
"TW205_Module_motor:module_motor_example",
示例代码编译烧录代码后,按下开发板的RESET按键,启动系统。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。