重做了 “按键控制LED实验”,想温故知新,图1如下:
程序就是这个,简单易懂,没什么说的。
int ledpin=11;//定义数字11 接口
int inpin=7;//定义数字7 接口
int val;//定义变量val
void setup()
{
pinMode(ledpin,OUTPUT);//定义小灯接口为输出接口
pinMode(inpin,INPUT);//定义按键接口为输入接口
}
void loop()
{
val=digitalRead(inpin);//读取数字7 口电平值赋给val
if(val==LOW)//检测按键是否按下,按键按下时小灯亮起
{ digitalWrite(ledpin,LOW);}
else
{ digitalWrite(ledpin,HIGH);}
}
问题来了,无聊中我把电路连接改了一下,如图2,这样,蓝色的线是重新连接的,电阻改用了1M欧姆(原来是10K),上方的圆圈代表金属板,然后用手触摸金属板,LED灯也亮了起来!!
我只修改了电路连接部分,程序我没变,按照原来的程序,7口作为检测输入I/O口,检测如何是高电平,11口的LED灯才会亮;那么为什么我用手触摸与7口连接的金属板,LED灯也会亮呢?
而且我还发现,电路中的电阻(串联7口接地的),电阻越大,这个不知道原理的触摸开关越是敏感,其实用50K左右的电阻就能亮了,但我用了1M电阻后,更加敏感了,带上布手套触摸金属板也会亮,手和金属板中间隔着烟盒也能亮,好神奇?!和我原来做过一个电容触摸开关,有点像,但那个程序很复杂,还用了库文件,这个这么简单就实现了,什么道理?请大神们解答下。
|