Arduino Uno轻松进阶36例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

实验2 触摸调光灯

光线过亮或过暗对人们的生活都是有害的,因此人们设计出可调节光线亮暗的灯,即调光灯,如多个开关控制的调光灯、电位器控制的调光灯、触摸调光灯等。触摸调光灯的使用方法是用手触摸灯的感应部位,灯自动点亮,多次触摸灯的感应部位,灯的亮度逐渐增强。触摸调光灯的突出优点是操作简单、性能可靠,能有效避免开关失控与调节失灵等故障现象的发生。

2.1 实验描述

运用触摸开关TTP223B控制多个LED逐个点亮,从而实现发光亮度的调节。触摸调光灯电原理图、电路板图、实物图、流程图如图2.1所示。

img

图2.1 触摸调光灯电原理图、电路板图、实物图、流程图

img

图2.1 触摸调光灯电原理图、电路板图、实物图、流程图(续)

2.2 知识要点

(1)触摸开关TTP223B。

触摸开关TTP223B是基于TTP223B集成电路设计的电容式点动型触摸开关模块,该模块有3个引脚,分别是GND(接电源负极)、VCC(接电源正极)、IO(信号输出端口),工作电压为2.0~5.5V。在低功耗模式下,@VDD=3V,工作电流典型值为1.5μA,最长响应时间为220ms;在快速模式下,@VDD=3V,工作电流典型值为6.5μA,最长响应时间为60ms。在通常状态下,模块没有被触摸,输出低电平,工作模式为低功耗模式;当用手指触摸模块时,模块输出高电平,工作模式为快速模式,当模块在12s内没有再次被触摸时,工作模式转为低功耗模式。此种触摸开关广泛应用于日常消费性产品,用于取代机械按钮开关,具有非接触控制、防机械疲劳等优点。例如,将该模块安装在非金属材料(塑料、玻璃)表面的下方,可起到美化外观、隐藏按键的效果。

(2)Arduino Uno开发板模拟端口。

在Arduino Uno开发板上,A0~A5为6个模拟输入端口,分辨率为10bit,默认输入信号电压为0~5V。A0~A5也可作为普通数字输入/输出端口使用。

例1.语句val=analogRead(0);表示读出模拟端口A0的值,赋给变量val,val=0~1023。

当模拟端口A0输入信号电压为0V时,val=0;当模拟端口A0输入信号电压为5V时,val=1023;当模拟端口A0输入信号电压为2.5V时,val=512;当模拟端口A0输入信号电压为1V时,val=204。

例2.语句pinMode(A0,OUTPUT)与语句pinMode(A3,INPUT);用在void setup(){}中,表示将模拟端口当作普通数字端口使用,可设置它们为输出或输入端口。

语句pinMode(A0,OUTPUT)表示设置模拟端口A0为输出模式。

语句pinMode(A3,INPUT)表示设置模拟端口A3为输入模式。

例3.语句val=digitalRead(A3)表示读取模拟端口A3的值,赋给变量val,val=0或1。

语句digitalWrite(A0,1)表示模拟端口A0输出高电平。

语句digitalWrite(A1,0)表示模拟端口A1输出低电平。

这两条语句用在void loop(){}中,表示将模拟端口当作普通数字端口使用,设置端口的值为1或0,即输出高电平或低电平。

2.3 编程要点

语句if(val==1) {delay(500);flag=(flag+1)%4;}表示如果val=1,则说明模块被触摸,延时500ms,运行模式加1。

延时500ms的目的是避免模块被长时间触摸,机器快速且频繁地切换运行模式。

一开始,flag=0;第1次触摸模块,flag=(0+1)%4=1,1除以4,商为0,余数为1,即模为1;第2次触摸模块,flag=(1+1)%4=2,2除以4,商为0,余数为2,即模为2;第3次触摸模块,flag=(2+1)%4=3,3除以4,商为0,余数为3,即模为3;第4次触摸模块,flag=(3+1)%4=0,4除以4,商为1,余数为0,即模为0;第5次触摸模块,flag=(0+1)%4=1,1除以4,商为0,余数为1,即模为1;以此循环。结果是flag取值为0、1、2、3,共产生4种运行模式。

2.4 程序设计

(1)参考程序。

img
img

(2)实验结果。

代码上传成功后,将电路板AN02安装到Arduino Uno开发板上,并接通电源,LED均为熄灭状态,用手指触摸模块,第1次触摸,VD0点亮,此时LED点亮数量较少,因此亮度较弱;第2次触摸,VD0与VD1点亮,此时LED点亮数量较多,因此亮度较强;第3次触摸,LED均为点亮状态,此时LED点亮数量最多,因此亮度最强;第4次触摸,LED均为熄灭状态,以此循环。

2.5 拓展与挑战

代码上传成功后,将电路板AN02安装到Arduino Uno开发板上,并接通电源,LED均为熄灭状态,用手指触摸模块,第1次触摸,LED均为点亮状态;第2次触摸,VD0与VD1点亮,VD2熄灭;第3次触摸,VD0点亮,VD1与VD2熄灭;第4次触摸,LED均为熄灭状态,以此循环。