2. 学生需要使用集成开发环境MDK5,完成本项目所有代码的编写和调试工作,并最终在开发板上完成程序下载和功能测试。
图1 OneNET V3.2嵌入式开发板
【项目功能描述】1. 上电之后,开发板的效果为:绿灯常亮,液晶屏呈现图2所示的效果,代表程序已就绪,等待运行。此时除了SW1按键有效,其他按键、串口、蜂鸣器、SHT20传感器、光敏电阻均无效。

图2 上电时的液晶屏显示
2. 单击KEY1,程序开始运行,初始效果如下:① 绿灯闪烁(1s变化一次),且在程序运行期间一直保持该闪烁效果;② 在串口助手上显示本项目的启动信息,具体效果如下(-------- 请替换成本人的姓名缩写和完整学号): STM32 Final Project Name: ----------- St.No.: ---------- ③ 液晶屏呈现图3所示效果,第1行为光敏电阻上的电压值,第2行为SHT20传感器的温湿度值,三个数值均按照每2s采集变化1次。遮住光敏电阻或用手机电筒照射光敏电阻,电压值有相应变化;手指触摸传感器,温湿度值有相应变化。
图3 液晶屏显示传感器数值
3. 单击SW2按键,液晶屏上第1行的电压值不再变化,无论遮挡还是照射光敏电阻,电压值都保持在按下那刻的值;再单击一次SW2,电压值恢复正常显示,依然为2s变化一次,上述操作可重复。每单击一次SW2,串口助手上都相应的显示出“LDR HOLD”或“LDR CHANGE”的信息。
4. 双击SW2按键,液晶屏第2行的温湿度数值不再变化,无论外界环境如何,温湿度值都保持在按下那刻的值;再双击一次SW2,温湿度数值恢复正常显示,依然为2s变化一次,上述操作可重复。每双击一次SW2,串口助手上都相应的显示出“T&RH HOLD”或“T&RH CHANGE”的信息。
5. 单击SW3按键,黄灯开始按照0.5s变化一次闪烁;再单击一次SW3,黄灯停止闪烁(保持在按下那刻的状态)。每单击一次SW3,串口助手上都显示出对应的信息:黄灯闪显示“Yellow BLINK”,黄灯亮则显示“Yellow ON”,黄灯灭则显示“Yellow OFF”。
6. 通过串口助手向开发板发命令可实现不同的声光效果,具体控制要求为:发送“blue_on” --- 点亮蓝灯发送“blue_off”--- 熄灭蓝灯发送“blue_blink” --- 闪烁蓝灯发送“blue_breath” --- 蓝灯呼吸发送“help” --- 红灯快闪,蜂鸣器按照“3短-3长-3短”持续鸣响发送“cancel”--- 红灯、蓝灯都熄灭,蜂鸣器停止鸣响发送其他内容 --- 串口助手回显“Wrong command”
7. 程序运行期间,若长按SW1按键3s以上,程序将返回到“功能1”所述的情况:绿灯常亮,其他灯熄灭;液晶屏恢复上电的效果;串口、蜂鸣器、SHT20传感器、光敏电阻停止工作。
在平时的课堂上,每个独立的功能都手把手带着做过,现在整合成一个综合项目,看看有几个学生能有点悟性,做出一点名堂来。本人是不指望学生能全部做出来,主要看学生的工作量和汇报情况,那些不劳而获的学生在汇报时基本上就原形毕露了。
基础的驱动文件都是平时积累好的,主要是写主程序和几个定时器中断程序,我自己撸完这些代码接近1000行(含较多注释),如图4所示,用了状态机思路来解决,完整的效果如下面的演示视频所示。
图4 程序部分截图
视频加载中...