数字晃动传感器

概述

想要摇一摇切换彩灯,但又不想使用编程复杂,成本又高的三轴加速度传感器?这款数字晃动传感器一定能满足你的需要。

数字晃动传感器是一款仅对单方向手摇运动敏感的数字传感器。采用弹簧式震动开关,静止时输出高电平,当用户沿指定方向用力晃动一次,模块输出一个低电平脉冲,板载指示灯同时闪亮。得益于震动开关的单方向敏感特性和相应的滤波电路,中等强度的碰撞或震动(如:跌落、撞击)也不会误触发产生中断信号,具有较强的抗冲击干扰能力。只要摇一摇,挥一挥,各类开关控制尽在手中。

特性

应用场景

技术规格

接口说明

数字晃动传感器 引脚说明 | |

标号 名称 功能描述
+ VCC 电源正极(3.3~5.0V)
- GND 电源负极
D Digital 数字输出(静止高电平,晃动低电平脉冲)
PWR Power 电源指示灯(红色),上电点亮
ON ON 晃动触发指示灯(蓝色)

特性说明



传感器所使用的震动开关具有单方向敏感特性。如上图,用户按照模块图示logo握住模块,沿箭头方向(自+Y向Y-)方向用力一甩,即可在“D”引脚产生一次有效的低电平中断脉冲,同时ON产生较明亮的闪烁。对X或Z方向的摇晃、撞击或者震动无法产生有效的中断脉冲。

Arduino使用教程

准备

连线图



### 样例代码
#define LED_PIN                 13
#define DIGITAL_INPUT_PIN       3             //Connect the sensor to digital Pin 3 which is Interrupts 1.

int stateFlag = 0;
unsigned long timepoint = 0;

void setup()
{
  pinMode(LED_PIN, OUTPUT);

  // Set to input mode with internal pull-up.
  // This can ensure generating intterupts under 3.3V power supply.
  pinMode(DIGITAL_INPUT_PIN, INPUT_PULLUP);

  attachInterrupt(1, toggleLED, FALLING);     // Trigger LED toggle function when the falling edge is detected
  timepoint = millis();
}
void loop()
{
  // toggle onboard LED
  if (stateFlag != 0) {
    digitalWrite(LED_PIN, HIGH);
  }
  else {
    digitalWrite(LED_PIN, LOW);
  }

}

//Interrupt serivce routinue
void toggleLED()
{
  // The hardware has done some filter.
  // To further improve stability, here add a 50ms for debouncing.
  // This will not block the main function.
  if (millis() - timepoint > 50U) {
    timepoint = millis();
    stateFlag = (stateFlag + 1) % 2;
  }
}

结果

Micro:bit使用教程

准备

连线图



样例代码

SEN0289_makecode.png

结果

常见问题

Q1. 为什么ON出现闪烁,但是UNO上的指示灯不翻转?

Q2. 这个传感器不灵敏啊,灵敏度可以调节吗?

Q3. 通过“analogRead() == 0”这类检测低电平的方法检测摇晃不太好用。

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接