“振动报警器”的版本间的差异
853387039@qq.com(讨论 | 贡献) (→搭建硬件) |
Zhangfengfeng(讨论 | 贡献) (→设备) |
||
(未显示1个用户的4个中间版本) | |||
第7行: | 第7行: | ||
==原理== | ==原理== | ||
+ | 震动传感器检测是否发生震动,检测到有震动时控制蜂鸣器发出报警音。 | ||
==设备== | ==设备== | ||
第13行: | 第14行: | ||
|模块||数量||功能 | |模块||数量||功能 | ||
|- | |- | ||
− | |[[ | + | |[[mCookie-CoreUSB/zh]]||1||核心板 |
|- | |- | ||
− | |[[ | + | |[[mCookie-Hub/zh]]||1||传感器转接板 |
− | |||
− | |||
|- | |- | ||
| [[Microduino-BUZZER/zh]]||1||蜂鸣器 | | [[Microduino-BUZZER/zh]]||1||蜂鸣器 | ||
|- | |- | ||
− | | [[ | + | | [[Sensor-Shake/zh]]||1||震动传感器 |
|} | |} | ||
*其他设备: | *其他设备: | ||
− | ** | + | **USB数据线*1 |
+ | **传感器连接线*1 | ||
+ | |||
+ | [[File: shock_alarm.jpg|600px|center]] | ||
+ | |||
+ | ===准备=== | ||
+ | *Setup 1:将震动传感器接到接到Hub的D4引脚上,蜂鸣器接到D6引脚上。用户可以改。 | ||
+ | [[file:shock_alarm_setup_1.jpg|600px|center]] | ||
+ | *Setup 2:将CoreUSB,Hub连接在一起。通过USB数据线将接入电脑。 | ||
+ | [[file:mCookie-shock_alarm_-pc.JPG|600px|center]] | ||
+ | |||
+ | ==调试== | ||
+ | *打开Arduino IDE,把原来IDE里的代码都删除,将下列代码复制到IDE中。 | ||
+ | <source lang="cpp"> | ||
+ | #define pushButton 4 | ||
+ | #define speakPin 6 | ||
+ | |||
+ | int pushState; | ||
+ | |||
+ | long time, timer; | ||
+ | |||
+ | boolean shock; | ||
+ | |||
+ | // the setup routine runs once when you press reset: | ||
+ | void setup() { | ||
+ | // initialize serial communication at 9600 bits per second: | ||
+ | Serial.begin(115200); | ||
+ | // make the pushbutton's pin an input: | ||
+ | pinMode(pushButton, INPUT); | ||
+ | pinMode(speakPin, OUTPUT); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | if (digitalRead(pushButton)) | ||
+ | shock = true; | ||
+ | |||
+ | if (millis() - time > 2000) | ||
+ | { | ||
+ | if (!digitalRead(pushButton)) | ||
+ | shock = false; | ||
+ | time = millis(); | ||
+ | } | ||
− | + | // Serial.println(shock); | |
+ | if (shock) | ||
+ | { | ||
+ | for (int j = 0; j < 2; j++) | ||
+ | buzzer(); | ||
+ | } | ||
+ | else | ||
+ | noTone(speakPin); | ||
+ | } | ||
− | == | + | void buzzer() |
− | + | { | |
− | + | for (int i = 200; i <= 800; i++) | |
− | * | + | { |
− | [[ | + | tone(speakPin, i); |
− | * | + | delay(5); |
− | + | } | |
− | + | delay(1000); | |
− | * | + | for (int i = 800; i >= 200; i--) |
− | [[file: | + | { |
+ | tone(speakPin, i); | ||
+ | delay(10); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | *选择正确的板卡和COM端口 | ||
+ | [[file:upload.JPG|600px|center]] | ||
+ | *编译 | ||
+ | **编译时会提示保存项目,用户可以自己命名保存到你的文件夹即可。 | ||
+ | *下载 | ||
+ | **编译成功后可以直接下载,提示下载成功表示程序下载完毕。 | ||
+ | [[file:upload-shock.JPG|600px|center]] | ||
+ | *当有震动时,蜂鸣器循环发出两次报警音频。 | ||
==软件调试== | ==软件调试== |
2017年5月31日 (三) 08:43的最新版本
Language | English |
---|
目的做一个震动报警器,当有震动时,蜂鸣器循环发出两次报警音频。 原理震动传感器检测是否发生震动,检测到有震动时控制蜂鸣器发出报警音。 设备
准备
调试
#define pushButton 4
#define speakPin 6
int pushState;
long time, timer;
boolean shock;
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(115200);
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT);
pinMode(speakPin, OUTPUT);
}
void loop() {
if (digitalRead(pushButton))
shock = true;
if (millis() - time > 2000)
{
if (!digitalRead(pushButton))
shock = false;
time = millis();
}
// Serial.println(shock);
if (shock)
{
for (int j = 0; j < 2; j++)
buzzer();
}
else
noTone(speakPin);
}
void buzzer()
{
for (int i = 200; i <= 800; i++)
{
tone(speakPin, i);
delay(5);
}
delay(1000);
for (int i = 800; i >= 200; i--)
{
tone(speakPin, i);
delay(10);
}
}
软件调试
#define pushButton 4 //震动
#define speakPin 6 //蜂鸣器
if (millis() - time > 2000)
{
if (!digitalRead(pushButton))
shock = false;
time = millis();
}
if (shock)
{
for (int j = 0; j < 2; j++)
buzzer();
}
else
noTone(speakPin);
结果当敲击震动传感器,蜂鸣器循环两次报警,循环之后没有震动时则停止。你也可以通过乐高搭建一个漂亮的外观。 视频 |