多功能门闸
2019-10-06683
AI 快速预览详细
多功能门闸是一个基于Arduino的项目,使用Arduino UNO、舵机、声音传感器等组件制作。该项目适用于商场安检和雨天避雨。通过声音传感器检测声音,控制门闸打开,并在雨天自动保持开启状态。项目提供了详细的材料清单和编程指南,适合STEM教育和少儿编程入门。
现在正是假期,大家是不是都十分想购物呢?如果你是想去一个超市买点东西,是否关注过上面的门闸呢?为此,我制做了“多功能门闸”。
步骤1 准备材料
材料清单
- Arduino套装 X1 链接
步骤2 编程平台
这里我使用的是Mind+编程平台,请看下图。
步骤3 组装硬件
我使用这个套装中的Arduino UNO,舵机,雨水传感器,声音传感器,面包板,导线,LED灯,蜂鸣器,下面是他们的样子。
以及商场平面图。
步骤4 编辑程序
我使用的是图形化编程,高手们可以参看下面的代码哦。原理:如果检测到声音,门闸打开,过一会再关上,方便安检人员检查等用途;雨天门闸会一直打开,方便人们躲雨。
代码
#include <DFRobot_Servo.h>
Servo myservoA2;
void dfrobotTone(int tonePin, int frequency, int duration) {
if(frequency == 0){
digitalWrite(tonePin,LOW);
return;
}
int period = 1000000.0 / frequency;
int pulse = period / 2.0;
pinMode(tonePin,OUTPUT);
for (int i = 1; i <= ((duration * 1000.0) / period); i++ ) {
digitalWrite(tonePin,HIGH);
delayMicroseconds(pulse);
digitalWrite(tonePin,LOW);
delayMicroseconds(pulse);
}
}
void setup() {
myservoA2.attach(A2);
myservoA2.angle(abs(0));
}
void loop() {
if ((analogRead(A1) > 30)) {
myservoA2.angle(abs(180));
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
}
else {
if ((analogRead(A0) > 300)) {
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
myservoA2.angle(abs(180));
delay(3000);
dfrobotTone(9, 932, 500);
delay(1000);
digitalWrite(9, LOW);
}
else {
digitalWrite(10, LOW);
myservoA2.angle(abs(0));
digitalWrite(9, LOW);
digitalWrite(11, HIGH);
}
}
}
视频展示



