回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

多功能门闸 简单

头像 李铭硕 2019.10.06 630 0

现在正是假期,大家是不是都十分想购物呢?如果你是想去一个超市买点东西,是否关注过上面的门闸呢?为此,我制做了“多功能门闸”。

步骤1 准备材料

材料清单

步骤2 编程平台

这里我使用的是Mind+编程平台,请看下图。

project-image

步骤3 组装硬件

我使用这个套装中的Arduino UNO,舵机,雨水传感器,声音传感器,面包板,导线,LED灯,蜂鸣器,下面是他们的样子。

project-image
project-image
project-image
project-image

以及商场平面图。

project-image

步骤4 编辑程序

我使用的是图形化编程,高手们可以参看下面的代码哦。原理:如果检测到声音,门闸打开,过一会再关上,方便安检人员检查等用途;雨天门闸会一直打开,方便人们躲雨。

project-image
代码
#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);
		}
	}
}

视频展示

评论

user-avatar