Arduino小白的学习历程

例8 震动检测
接上一篇温度传感器,这里楼主补充一点,对于LM35型传感器,每10mv代表一摄氏度。这样,将读取到的数值转换成温度值的公式,就应该很清楚了吧。
书归正文,下面谈一谈倾斜开关这个东西。先说硬件,倾斜开关的构造如下图(网上找的)
在这里插入图片描述
对于倾斜开关,有两个滚珠,通过晃动倾斜开关,滚珠和导针接触,从而使倾斜开关两端导通,整个电路也就通了。对于Arduino基础套件而言,倾斜开关有金色一段和银色一段。金色一端的导针导通,而银色一端的导针不导通。我是怎么理解这东西呢?硬件介绍完了,那就开始我们今天的表演吧。
效果描述:
晃动板子,或者锤一下桌子(总之,制造点震动),红色的LED灯亮起
代码如下:

int state=0;//定义全局变量state,并赋初值为0

void setup() {
  pinMode(3,INPUT);//设置中断引脚3的模式为输入
  pinMode(8,OUTPUT);//设置数字引脚8的模式为输出
  attachInterrupt(1,use,RISING);//调用中断函数,当数字引脚3的电平由低电平变到高电平时,触发use函数
                                           
}

void loop() {
  if(state!=0)
  {state=0;
   digitalWrite(8,HIGH);
   delay(500); 
   
  }
else
{
  digitalWrite(8,LOW);
}

}
void use()
{
  state=1;
}
在这里插入代码片

代码解释
是不是很短呢?这里面主要是这么个函数:

attachInterrupt(1,use,RISING)
在这里插入代码片

这是一个中断函数,当发生RISING过程时,该函数被唤醒,从而执行use函数,即使state为1。那么什么叫RISING过程呢?当你晃板子的时候,倾斜开关的滚珠滚动,从而接通开关,这样使得数字引脚3的电平由原本的低电平变为高电平,从而发生了由低电平向高电平变化的过程,attatchInterrupt函数被唤醒。那为什么不再晃动板子的时候,灯就不再亮了呢?可以这么理解:不再晃动板子时,数字引脚3的电平保持在低电平点,不再经历一个过程,只是停留在过程两端的“点”上,从而attaInterrupt函数未被唤醒,自然use函数就不执行了。
连接图

在这里插入图片描述

发布了2 篇原创文章 · 获赞 1 · 访问量 79

猜你喜欢

转载自blog.csdn.net/qq_44876268/article/details/104915397