Arduino 振动传感器实验

Arduino 振动传感器实验

#define vibratorPin 2 // 振动器引脚
#define buzzerPin 3 // 蜂鸣器引脚

int count = 0; // 计数变量
int flag = 0;	 // 中断执行标志位

void setup()
{
  pinMode(vibratorPin, INPUT_PULLUP); // 按键设置为输入带上拉
  pinMode(buzzerPin, OUTPUT);
  attachInterrupt(0, buzzerDi, FALLING); // 设置ARDUINO UNO中断0(数字IO 2),下降沿触发中断函数buzzerDi

  Serial.begin(9600);
}

void loop()
{
  // 如果flag被置一,说明有中断产生,执行该段程序
  if (flag == 1)
  {
    flag = 0; // flag清零
    digitalWrite(buzzerPin, HIGH); // 蜂鸣器响
    delay(1000); // 延时1000ms
  }
  else
  {
    digitalWrite(buzzerPin, LOW); // 没有中断时候,蜂鸣器不响
  }
  Serial.println(count); // 串口显示中断次数
}

// 中断函数buzzerDi
void buzzerDi()
{
  flag = 1; // 置位标志位
  count++; // 进中断次数加一
}

 

函数介绍

attachInterrupt()

  • 描述:外部中断配置函数。
  • 函数原型:attachInterrupt(interrupt, ISR, mode)
  • 参数:
    • interrupt: 中断号。不同Arduino开发板中断号不同。Uno R3有两个外部中断,分别为数字管脚2(中断0)和数字管脚3(中断1)。
    • ISR: 中断处理函数。此函数不带参数,没有返回值。
    • mode: 中断触发方式。
      • LOW: 低电平触发。
      • CHANGE:管脚状态改变触发。
      • RISING:上升沿触发。
      • FALLING:下降沿触发。
  • 返回值:无。

发表回复

您的电子邮箱地址不会被公开。