Arduino教程 Lesson 9 -- 震动探测
震动传感器,我们从名字中应该就可以判断,传感器能够检测震动中的物体。我们用什么来做震动传感器呢?那就是滚珠开关。滚珠开关,其内部含有导电珠子,器件一旦震动,珠子随之滚动,就能使两端的导针导通。
通过这个原理,我们可以做一些小玩具结合起来。只要传感器检测到东西震动,就会有信号输出。这里,我们想通过滚珠开关做个简单的震动传感器,并把震动传感器和LED的结合,当传感器检测到物体震动时,LED亮起,停止震动时,LED关闭。
所需元件
- 1× 滚珠开关 SW200D
- 1× 5mm LED灯
- 1× 220欧电阻
STEP 1:硬件连接
从滚珠开关这个名字,我们可以把它和什么联想在一起呢?就是按键开关,滚珠开关和 Arduino教程 Lesson 4 --互动交通信号灯中介绍的按钮在硬件连接是完全相同的,原理也相似。只是使用方法不同而已。可以把下图对应交通灯的一起看,你会发现很多相似之处。滚珠开关也需要一个下拉电阻,LED需要一个限流电阻。
- //项目八 – 震动传感器
- 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值赋为0
- digitalWrite(SensorLED,HIGH); // 亮灯
- delay(500); //延时500ms
- }
- else
- digitalWrite(SensorLED,LOW); // 否则,关灯
- }
- void blink(){ //中断函数blink()
- state++; //一旦中断触发,state就不断自加
- }
复制代码
当我们晃动板子时,LED灯也会随之亮,一旦停止晃动,LED灯又恢复到熄灭的状态。
什么是中断?打个比方吧,比如你在家好好的看电视,突然家里电话铃响了,那么你不得不停下看电视,先去接电话,等接完电话后,你又可以继续看电视啦!在整个过程中,接电话就是一个中断过程,电话铃响就是中断的标志,或者说是中断条件。
现在知道中断是什么意思了,再回到 attachInterrupt()函数,它是一个当外部发生中断时,才被唤醒的函数。区别于其他函数,它依附于中断引脚才发生。大多数板子都有两个外部中断引脚:数字引脚2(中断0)和数字引脚3(中断1)。中断0与中断1是中断号,在函数中需要用到。不同板子,中断号对应引脚可能不同,可以查阅Arduino官方编程语法手册( http://arduino.cc/en/Reference/AttachInterrupt)。
- attachInterrupt(interrupt, function, mode)
复制代码
interrupt:中断号0或者1。如果选择0的话,连接到数字引脚2上,选择1的话,连接到数字引脚3上。
function:调用的中断函数名。写中断函数时,需要特别说明以下三点:
- 我们在写中断函数的时候,该函数不能含有参数和返回值。也就是说,要是一个无返回值的函数。
- 中断函数中不要使用delay()和millis()函数,因为数值不会继续变化。
- 中断函数中不要读取串口,串口收到的数据可能会丢失。
mode:中断的条件。只有特定的以下四种情况:
- LOW:当引脚为低电平时,触发中断。
- CHANGE 当引脚电平发生改变时,触发中断。
- RISING 当引脚由低电平变为高电平时,触发中断。
- FALLING 当引脚由高电平变为低电平时,触发中断。
- attachInterrupt(1, blink, RISING);
复制代码
对应上面说明看。1,指中断号1。所以滚珠开关接到数字引脚3。blink是我们下面要调用的中断函数。RISING,指引脚3在由低变为高的一瞬间,中断触发。
为什么要选RISING呢?由于硬件我们还没提到,我们就先滚珠开关想象成按键。在按键没按下的时,是断开的,引脚3处于低的状态。一旦被按下,就和5V导通,变为高。这个过程是引脚由低电平变高电平的过程,所以选择RISING模式。
STEP 4:硬件回顾
Arduino教程 Lesson 9 -- 震动探测相关推荐
- arduino uno r3单片机封装图_Arduino教程 Lesson 1 驱动安装及下载Blink程序
STEP 1:下载Arduino IDE 打开网页输入网址http://arduino.cc/en/Main/Software Arduino IDE老版本下载链接:http://arduino.cc ...
- 串口监视软件_ESP32 Arduino教程:软件重置
简介 该esp32 arduino教程旨在解释如何使用Arduino核心在ESP32开发板上执行软件重置. 本ESP32教程的测试是使用集成在ESP32开发板中的DFRobot的ESP-WROOM-3 ...
- esp32 micropython web服务器_ESP32 Arduino教程:Websocket server(服务器)
本文主要介绍如何使用Arduino内核作为编程架构在ESP32(上创建Websocket server(服务器).所创建的Websocket server(服务器)将作为回发服务器使用,也就是说它会把 ...
- python和arduino教程与练习
python和arduino教程与练习 Begin with Arduino 多任务编程 中文学习资料 Fluent with Python 学习资料和练习方式 菜鸟教程 实验楼 编译器 Begin ...
- Arduino教程汇总贴
初识arduino http://www.arduino.cn/thread-1083-1-1.html 关于Arduino及其周边配件的购买建议 http://www.arduino.cn/t ...
- 服务器.esp文件,ESP32 Arduino教程:通过软接入点(soft AP)实现HTTP服务器-esp文件
在本ESP32(http://www.dfrobot.com.cn/goods-1359.html)教程中,我们将检查如何设置一个异步HTTP web服务器,该设备作为软访问点运行. 本ESP32教程 ...
- ESP32:Arduino教程汇总
ESP32:Arduino教程汇总 最近在搞ESP32,偶然发现Arduino框架的中文社区,感觉非常有用,在此记录一下相关链接,以防后面丢失. 1.Arduino常用函数参考: https://wi ...
- Arduino教程资料汇总(8月22日悄悄跟新了一下)
http://www.geek-workshop.com/thread-985-1-1.html 本帖最后由 迷你强 于 2013-8-31 12:36 编辑 =====F-101 arduino基础 ...
- Arduino教程4:面包板与洞洞板
目录 前言 什么是面包板? 什么是洞洞板? 焊接工具 前言 今天我们将讲一讲面包板和穿孔板(洞洞板)的使用,这两个工具对于原型搭建是十分有利的,它们具有的诸如便宜,便利,可塑性高的特点,使它们成为了广 ...
最新文章
- Hadoop的mapper输出中key和value之间的分隔符
- WinXP启动时自动打开上次关机时未关闭的文件夹
- Visual Studio Code 1.44 发布
- oracle事件号,oracle8管理员账号密码Oracle-等待事件解读
- anaconda怎么运行python程序_Anaconda安装指南(#x27;conda#x27; 不是内部或外部命令,也不是可运行的程序 或批处理文件)...
- 每天一个linux命令(40):wc命令
- 【2020团体程序设计天梯赛】L1部分(PTA,L1-065到L1-072)题解代码
- 关于selenium关闭chrome密码登录时弹出的密码提示框
- C#之回到了最初的起点----解决方案、项目、程序集、命名空间
- FFmpeg 软编码H.264与H.265
- 常用的项目团队管理方法
- Android启动活动用什么方法,Android - 使用intent uri从命令行启动活动
- Python批量处理Excel办公自动化
- 4399知名游戏-赛尔号图鉴的爬取
- win11任务管理器怎么打开?win11任务管理器打开的技巧方法
- 三角形 css_CSS三角形
- java 检测表情符号_关于Java:检查字母是否为表情符号
- 服务器如何设置防火墙?
- EXCEL对单元格中包含某些字符串,进行if条件判断,模糊查找
- 删库不要跑,我站起来还可以删