[size=18.018px]新得到了一个触摸传感器模块,欣喜之余决定将其用在门禁上。那这个模块有何特点呢? [size=18.018px]该模块的外观如图1所示,其共有3个引脚,其中2个是电源引脚,另一个则是信号输出端。该模块的供电范围为3-5V,加电后绿色LED灯就被点亮以指示电源的存在,当用手触摸时,SIG输出一个高电平;当手离开时,则输出低电平。 [size=18.018px] [size=18.018px]图1 触摸传感器模块
[size=18.018px]根据上述特点,可替代开关或按键的,其不但手感好,也有利于延长输入器件的寿命,过很适合用来作门禁的信号输入。 [size=18.018px]该触摸式门禁装置以LPC824开发板为核心,并配以OLED屏来显示门控状态,由外接的门磁来控制门的开合。 [size=18.018px]门控状态如图2所示,所涉及的显示函数如下: - void cd1()
- { // 触摸式门禁
- OLED_ShowCHinese(18,0,13);
- OLED_ShowCHinese(36,0,14);
- OLED_ShowCHinese(54,0,15);
- OLED_ShowCHinese(72,0,16);
- OLED_ShowCHinese(90,0,17);
- }
- void cd2()
- { // 有人到访!
- OLED_Clear();
- cd1();
- OLED_ShowCHinese(0,2,3);
- OLED_ShowCHinese(18,2,4);
- OLED_ShowCHinese(36,2,5);
- OLED_ShowCHinese(54,2,6);
- OLED_ShowCHinese(72,2,7);
- }
- void cd3()
- { // 朋友请进。
- OLED_Clear();
- cd1();
- OLED_ShowCHinese(0,4,8);
- OLED_ShowCHinese(18,4,9);
- OLED_ShowCHinese(36,4,10);
- OLED_ShowCHinese(54,4,11);
- OLED_ShowCHinese(72,4,12);
- }
复制代码
图2门控状态指示
主函数的内容为: - int main(void)
- {
- uint32_t num=0;
- GPIOInit();
- GPIOSetDir(LPC_GPIO_PORT->PIN0, 6, 0); // CM
- GPIOSetDir(LPC_GPIO_PORT->PIN0, 16, 1); // LED
- OLED_Init();
- OLED_Clear();
- cd1();
- GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 16, 0 );
- while(1)
- {
- if(GPIOGetPinValue(LPC_GPIO_PORT->PIN0,6))
- {
- GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 16,1 );
- if(num%2==0) cd2();
- else cd3();
- num++;
- }
- else GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 16,0 );
- Delay_1ms(1000);
- }
- }
复制代码 |