本章节介绍的主要是在新场景下怎么把这些器件结合到一起,根据购买的器件来看,目前咱们使用的主要是主控板和手势传感器,那么接下来还有继电器模块和蜂鸣器模块需要加入使用例表中,看一看有哪些新的场景下可以融合一下。原本我想接入一个交流电风扇的控制,后来为了安全还是选择直流控制器件——步进电机。
我们都知道一般的步进电机是通过9V或者12V或者更改的电压进行供电,本次使用的步进电极就是一个12V供电的器件,正好符合我们进行创新设计的应用,借用了一个步进电机驱动板,我们一起看看如何实现。
首先从步进电机出发,连接到驱动板上(免控制的),驱动板的供电连接到继电器,继电器再连接到9V的适配器,继电器的控制通过主控板的IO口实现,而控制的输入就是我们的手势检测传感器,蜂鸣器的存在用于指示检测到有效手势。
蜂鸣器和继电器都在前面的过程贴中详细的介绍,这里就不做过多的介绍了,看一下多出来的两个模块:
可以看到继电器是一个双路继电器,不够对于直流控制我们只要控制电那一路就可以了,也可以电地两路同时控制,这两个模块都可以使用MCU引脚直接控制,这个是重点,也就是说,我们实际的控制就是IO的变化,实际上就是连线会复杂一点。
看一下连接连接好的状态:
幸亏背后的引脚也都引出来了,要不光是前面的引脚电和地还不一定够。
程序上的改改动也不大,只要新增两个GPIO的输出就可以,然后就是手势识别中变动:
while(1) { paj7620_cnt++; if(paj7620_cnt>=100) { paj7620_cnt = 0; if(uesr_key == 1 && gesture_init_flag == 0) { ret = PAJ7620_get_gesture(&gesture); if (ret == PAJ7620_EOK) { switch (gesture) { case PAJ7620_GESTURE_LEFT: { if(Buzzer_ShortFlag == 0) { Buzzer_ShortFlag = 1; Buzzer_On; } SRD_Off; break; } case PAJ7620_GESTURE_RIGHT: { if(Buzzer_ShortFlag == 0) { Buzzer_ShortFlag = 1; Buzzer_On; } SRD_On; break; } default: { break; } } } } } tx_thread_sleep(1); }
如何实现蜂鸣器提示音(短)的呢,就是通过在定时器中进行处理:
if(Buzzer_ShortFlag == 1) { Buzzer_Short_cnt++; if(Buzzer_Short_cnt >= 200) { Buzzer_ShortFlag = 0; Buzzer_Short_cnt = 0; Buzzer_Off; } }
整体的介绍以及效果展示都在如下视频中做了介绍,可以看一下,地址:【手势控制成果:新场景下,创新实现】 https://www.bilibili.com/video/BV1S53geYEzN/?share_source=copy_web&vd_source=b04da51472e5874aa452f4a273672c46