文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
系统运行后,默认为手动模式,当检测有人,可通过K2键开关灯,如果姿势不对, 警示灯亮,否则灭;可通过K3和K4键调节桌子高度;按下K1键切换为自动模式;此时有人,且光线暗时,开灯,否则关灯;姿势不对,警示灯亮,否则灭;不论自动手动模式,只要无人则关灯,系统无法操作。
二、软件设计
/*
作者:嗨小易(QQ:3443792007)*///系统数据设置
void sys_data_set(void)
{u8 key=0;//检测有人坐下if(sys_ctrl.man==1){key=KEY_Scan(0);}//自动/手动切换if(key==KEY1_PRESS){sys_ctrl.auto_flag=!sys_ctrl.auto_flag;ALARM=0;//模式指示delay_ms(500);ALARM=1;}//升高else if(key==KEY3_PRESS){step_motor_28BYJ48_send_pulse(4,1,STEPMOTOR_MAXSPEED,1,1);}//下降else if(key==KEY4_PRESS){step_motor_28BYJ48_send_pulse(4,0,STEPMOTOR_MAXSPEED,1,1);}//手动模式if(sys_ctrl.auto_flag==1){//开关if(key==KEY2_PRESS){sys_ctrl.open=!sys_ctrl.open;}}}//系统功能控制
void sys_fun_ctrl(void)
{//检测有人坐下if(sys_ctrl.man==1){//自动模式if(sys_ctrl.auto_flag==0){//如果光线暗,开灯if(sys_ctrl.light<40)sys_ctrl.open=1;else if(sys_ctrl.light>60)sys_ctrl.open=0;}if(sys_ctrl.open==1)LED=0;//开灯else LED=1;//关灯//如果姿势不对,指示灯警告if(sys_ctrl.zsflag==1)ALARM=0;else ALARM=1;}//无人else {sys_ctrl.open=0;LED=1;//关灯ALARM=1;}}//应用控制系统
void appdemo_show(void)
{sys_parm_init();//系统参数初始化KEY_Init();ADCx_Init();ctrl_pin_init();step_motor_gpio_init();sys_open_show();//系统初始界面显示while(1){sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制 }
}
三、实验现象
B站演示视频:https://space.bilibili.com/444388619
联系作者
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。