同前几年相比,今年的控制类题目出的比较简单,主要用了fdc2214这款电容测量模块。在比赛之前,我们也同往届一样押了一些题目,比如循迹小车,液位测量等,为此我们也做了不少准备。结果赛题却是一个简单的手势识别。
首先fdc2214这款芯片一共有4个通道,也就是说可以接4个外设或者说可以接到某一外设的四个位置。本着测量简单的目的,我们用了ch0和ch1这两个通道。手势识别程序也充分利用了硬件设计的特点,将整个识别区分为两个区域正好对应了人手的上下两个部分,这就对识别的正确率有了很大的好处。
在软件编程之前我先用匿名的上位机观测了数据的变化,还测试了板子上的不同位置的电容变化,恰好发现数据变化十分平稳,也就是说只要覆铜板和手势放置版不发生形变,数据就会非常稳。这是一个重大的发现,说明了检测数据不需要做任何滤波处理甚至连均值都不用取就可以测量出准确的数据,只要第二次手的位置和手势都不变,测量值,依然不变。。。接下来就果断放弃了滤波的想法。其实在这个时刻,整个思路就已经顺下来了,接下来需要做的就是按照题目要求一步一步来写程序,当然写程序肯定会遇到各种bug,只要方案正确,认真分析就没问题,要相信,办法一定是比困难多的。
因为这次比赛中需要测量很多数据,需要有一个直观的显示,我们选用的是0.96寸的oled显示屏。写屏幕看似较简单其实很复杂,唯一头疼的是之前很少用小屏幕,而且用的是iic的,spi的屏幕更是少用,而且由于数据多要翻页,在屏幕上浪费了很多时间。但是只要处理好定时器中断,外部中断的关系就基本没问题。不过时间也是刚刚好,经过三天的不懈努力,最终完成了所有功能,还加了附加功能,稳定性非常好,试了许多朋友都没问题。
最后总结一下,今年的比赛题目比往届都要简单,但唯一不可否认,测试了我们的基础的硬件设计和软件编程能力。