【基础系列教程】项目八:震动传感器

article/2025/8/14 19:12:35

震动传感器,我们从名字中应该就可以判断,传感器能够检测震动中的物体。我们用什么来做震动传感器呢?那就是滚珠开关。滚珠开关,其内部含有导电珠子,器件一旦震动,珠子随之滚动,就能使两端的导针导通。

通过这个原理,我们可以做一些小玩具结合起来。最常见的,比如我们看到一些小孩子穿的一闪一闪的小鞋子!走动的过程,就能使内部珠子滚动。

只要传感器检测到东西震动,就会有信号输出。这里,我们想通过滚珠开关做个简单的震动传感器,并把震动传感器和LED的结合,当传感器检测到物体震动时,LED亮起,停止震动时,LED关闭。

所需元件

在这里插入图片描述

硬件连接

从滚珠开关这个名字,我们可以把它和什么联想在一起?就是按键开关,滚珠开关和我们项目三中介绍的按钮在硬件连接是完全相同的,原理也相似。只是使用方法不同而已。可以把下图对应项目三的一起看,你会发现很多相似之处。滚珠开关也需要一个下拉电阻,LED需要一个限流电阻。

图 8-1 震动传感器连线图

输入代码

样例代码8-1

//项目八 – 震动传感器
int SensorLED = 13; //定义LED为数字引脚13
int SensorINPUT = 3; //连接震动开关到中断1,即数字引脚3 
unsigned char state = 0;
void setup() { pinMode(SensorLED, OUTPUT); //LED为输出模式pinMode(SensorINPUT, INPUT); //震动开关为输入模式//低电平变高电平的过程中,触发中断1,调用blink函数attachInterrupt(1, blink, RISING); }
void loop(){if(state!=0){ // 如果state不是0时state = 0; // state值赋为0digitalWrite(SensorLED,HIGH); // 亮灯delay(500); //延时500ms} else{ digitalWrite(SensorLED,LOW); // 否则,关灯}
} 
void blink(){ //中断函数blink()
state++; //一旦中断触发,state就不断自加
}

当我们晃动板子时,LED灯也会随之亮,一旦停止晃动,LED灯又恢复到熄灭的状态。

代码回顾

代码虽不长,但还是不太容易理解的。先大致说下代码的运行过程。

在没有任何打扰的情况下,程序在不断运行着…,让LED一直处于关闭。突然,被人打扰了(也就是晃动板子),就跳到中断函数blink()中(当然进入中断也是要条件的,我们后面说)。此时,state不断自加,连锁反应的,主函数中if函数检测到state不为0了,那么就让LED亮起了,同时又重新让state为0,等待下一次中断。如果没有中断的话,LED有恢复到关闭的状态。

重复的知识点不再赘述,重点说下中断函数attachInterrupt()。

什么是中断?打个比方吧,比如你在家看电视,突然家里电话铃响了,那么你不得不停下看电视先去接电话,等接完电话后,你又可以继续看电视啦!在整个过程中接电话就是一个中断过程,电话铃响就是中断的标志,或者说中断条件。

在这里插入图片描述
现在知道中断是什么意思了,再回到**attachInterrupt()函数,它是一个当外部发生中断时,才被唤醒的函数。区别于其他函数,它依附于中断引脚才发生。大多数板子都有两个外部中断引脚:数字引脚2(中断0)和数字引脚3(中断1)。**中断0与中断1是中断号,在函数中需要用到。不同板子,中断号对应引脚可能不同,可以查阅Arduino官方编程语法手册(http://arduino.cc/en/Reference/AttachInterrupt)。

attachInterrupt()需要三个传递参数:
在这里插入图片描述
interrupt:中断号0或者1。如果选 择0的话,连接到数字引脚2上,选择1的话,连接到数字引脚3上。

function:调用的中断函数名。写中断函数时,需要特别说明以下三点:

1、我们在写中断函数的时候,该函数不能含有参数和返回值。也就是说,要是一个无返回值的函数。

2、中断函数中不要使用delay()和millis()函数,因为数值不会继续变化。

3、中断函数中不要读取串口,串口收到的数据可能会丢失。

mode:中断的条件。只有特定的以下四种情况:

1、LOW 当引脚为低电平时,触发中断。

2、CHANGE 当引脚电平发生改变时,触发中断。

3、RISING 当引脚由低电平变为高电平时,触发中断。

4、FALLING 当引脚由高电平变为低电平时,触发中断。

知道了attachInterrupt()函数的用法,回归到我们的代码中:

在这里插入图片描述
对应上面说明看。1,指中断号1。所以滚珠开关接到数字引脚3。blink是我们下面要调用的中断函数。RISING,指引脚3在由低变为高的一瞬间,中断触发。

为什么要选RISING呢?由于硬件我们还没提到,我们就把滚珠开关想象成按键。在按键没按下时,是断开的,引脚3处于低的状态。一旦被按下,就和5V导通,变为高。

这个过程是引脚由低电平变高电平的过程,所以选择RISING模式。

硬件回顾

滚珠开关

滚珠开关,也叫做珠子开关,震动开关等等。虽然叫法不同,不过原理是相同的。就是通过珠子滚动接触导针的原理来控制电路的通断。

看下结构图就明白了。

图 8-2 滚珠开关内部结构图
滚珠开关内部两个珠子,通过珠子滚动接触导针的原理来控制电路的接通或者断开。传感器震动或者晃动时,珠子就会接触导针,从而导通。还需要注意的一点是,由于滚珠开关的内部构造,滚珠开关只有一头是导通的,金色导针一端是导通的,银色导针一端是不导通的。

这也就是为什么,往金色一端倾斜,灯会点亮,而偏向银色一端倾斜时,灯不会被点亮的原因。

原文来自DF创客社区:https://mc.dfrobot.com.cn/forum.php?mod=forumdisplay&fid=92&filter=typeid&typeid=426


http://chatgpt.dhexx.cn/article/K9jX4RV3.shtml

相关文章

Mixly16:震动报警器

震动报警器是以侦测物体振动来报警的传感器;适合用于柜员机、墙壁、玻璃、保险柜等,防止任何敲击和破坏性行为发生。生活中常常见到一种情况,电动助力车因为不小心的碰撞而发出刺耳的报警声,它就是采用了一种震动报警的装置&#…

Arduino 各种模块篇 震动模块 常开 震动传感器模块

以下是店家提供的一部分资料 一共就需要3根线 ——————————————————分割线———————————————————————— 用途:用于各种震动触发作用,报盗报警,智能小车,电子积木等。请注意这个模块在感应到小的震动时触发时间会很短,不够驱动继电器…

android 控制震动强度

转载文章请注明出处:http://blog.csdn.net/dangxw_/article/details/17957175 android 控制手机震动的类为Vibrator 他所提供的方法只有四个 想要控制手机的震动强度,无疑就只能使用vibrate(long[] parttern,int repeat)方法了,查看这个方法…

Sensor感应器介绍

本文实例讲述了Android基于Sensor感应器获取重力感应加速度的方法。分享给大家供大家参考,具体如下: FETC项目指导老师提出了新的需求,想要在游戏地图中表现出用户用户当期移动的方向,再用GPS的话显然很不靠谱,所以想…

单片机之振动传感器

那我们现在就开始来学习我们的振动传感器 振动传感器 电路原理图如下: 原理: 管内有一跟固定的导线,在这根导线的周围有另一根较细的导线以螺旋状环绕它。可以想象为一个弹簧旁边有一跟导线。在不振动时,两根导线不会相碰&#…

stm32的简易小项目之震动感应灯

文章目录 一、原理二、硬件三、接口说明四、源代码五、中断配置六、完整代码 一、原理 需要一个震动感应器来感应是否产生震动,然后把这个震动感应器作为GPIO输入,单片机来读取这个输入是否产生震动。如果产生震动,我们就可以把一个GPIO作为…

【传感器大赏】压电薄膜震动传感器

Grove-Piezo Vibration Sensor Grove - Piezo Vibration传感器适用于弹性,振动,冲击和触感的测量。该模块基于PZT薄膜传感器LDT0-028。当传感器来回移动时,其中的电压比较器将产生一定的电压。宽动态范围(0.1Hz~180Hz)…

振动传感器应用电路

传感器采用“801S振动传感器”,该传感器性能比较好。极宽的震动侦测范围.无方向限制。可以用用于汽车/摩托车防盜报警器/器, 電子鎖.安防系列产品等。 原理图如下:(Multisim 10.1仿真通过,实际焊接测试也通过) 经过测试…

震动传感器使用

震动传感器上有四个引脚,一个VCC,一个GND,一个DO,一个AO。我们使用到的是VCC,GND,DO。 VCC与GND不用多说,接电源和接地用的。使用杜邦线连接 VCC-5v,GND-GND,DO-P3.3。这时已经将c51单片机和传感器连接好了。下面可以输入代码了: 使用单片机上…

Arduino压电震动传感器

Arduino压电震动传感器 读取震动传感器的模拟值,串口输出;按压震动传感器控制LED灯亮灭。 外观 接线 Arduino震动传感器5V5VGNDGNDA0A02D0 读取模拟值时,D0不用接。A0模拟信号输出,D0TTL电平输出。 串口读取模拟值 void set…

振动传感器介绍

1. 工作电压 &#xff1a;3.3V或5V2. 工作电流 &#xff1a;<1mA3. 工作温度范围&#xff1a;&#xff0d;10℃&#xff5e;&#xff0b;70℃4. 接口类型&#xff1a;模拟信号输出5. 尺寸大小&#xff1a;30mm x 23mm6. 重量大小&#xff1a;5g7.引脚定义&#xff1a;S信号输…

震动传感器应用

1.震动传感器模块外部照片 2.新建shake工程 ①在USER中新建shake文件夹&#xff0c;并且在其中新建shake.c、shake.h文件 ②在Keil5中添加shake.c&#xff08;直接添加&#xff09;&#xff0c;shake.h&#xff08;现在shake.c中#include “shake.h”然后编译后自动添加了sha…

无线震动传感器

无线振动传感器是一种能够检测物体振动情况的设备&#xff0c;它可以通过无线网络与其他设备进行通信&#xff0c;实现物联网系统的数据采集和远程监控。无线振动传感器的工作原理是基于振动传感器的原理。当物体发生振动时&#xff0c;振动传感器会产生电信号&#xff0c;传感…

震动传感器(模拟和数字)

index 数字震动传感器简介产品参数连线图示例代码结果 震动传感器2用途&#xff1a;模块特色&#xff1a;模块使用说明&#xff1a;实验器材&#xff1a;Arduino 168P 基础套件 互动媒体实验目的&#xff1a;实验电路&#xff1a;实验原理&#xff1a;实验步骤&#xff1a;实验…

计算机网络的类别

计算机网络的类别 1. 按覆盖的地理范围分 1.1 互联网(internet) 互联网又称网际网络&#xff0c;或音译因特网(Internet)、英特网&#xff0c;互联网始于1969年美国的阿帕网。是网络与网络之间所串连成的庞大网络&#xff0c;这些网络以一组通用的协议相连&#xff0c;形成逻…

网络类型与网络拓扑

网络类型与网络拓扑 局域网、城域网、广域网 按照地理覆盖范围来划分、网络可以分为局域网&#xff08;Local Area Network&#xff09;、城域网&#xff08;Metropolitan Area Network&#xff09;和广域网&#xff08;Wide Area Network&#xff09;。 局域网&#xff08;…

计算机网络分类

概述&#xff1a; 什麽是网络&#xff1f; 网络就是在一定区域内将两台或两台以上的计算机以一定的方式连接起来&#xff0c;起到共享文件、程序、数据的作用。 网络的分类&#xff1a; 1.按照覆盖范围分&#xff1a; 局域网&#xff08;LAN-Local Area Network&#xff09…

网络连接类型区分

说明&#xff1a;不定期更新 日期&#xff1a;2019-12-24 参考&#xff1a;已在文章中标注 网络连接类型区分&#xff08;e.g. LAN, WAN) 网络分类 有线连接网络&#xff1a;WAN(宽带) LAN(~以太网) ADSL(电话线) 拨号上网 无线连接网络: WLAN, Bluetooth, 4G 虚拟专用网络&a…

计算机网络-网络类别[#1]

文章目录 前言基础概念网络类别作用范围使用者分类拓扑结构交换技术 前言 作为一名CRUD的业务工程师&#xff0c;在实际开发中&#xff0c;我们接触的最多最近却最容易不受重视的技术可能就是计算机网络了&#xff0c;通常我们深陷于业务需求->开发的重复劳动中&#xff0c…

各种分类网络

20问--各种网络类 LeNet各层参数1、Input层2、C1卷积层3、S2池化层&#xff08;下采样层&#xff09;4、C3卷积层5、S4池化层&#xff08;下采样层&#xff09;6、C5卷积层7、F6全连接层8、Output层-全连接层 AlexNet网络亮点&#xff1a;Alexnet数据增强操作&#xff1a;局部相…