夏季大作战_自动水炮

2020-07-319740
AI 快速预览详细 收起
这个项目是一个基于Arduino UNO控制器的自动水炮,利用微波传感器识别移动物体,并通过伺服电机控制喷水头的随机转动。所需器材包括Arduino UNO控制器、微波传感器、5V伺服电机、12V锂电池等。通过精确灵敏的微波传感,可以实现对移动物体的识别,并在识别后发送指令给伺服电机,使其随机转动并同时喷水。由于伺服电机的随机转角,经过传感前面的人无法用经验判断喷水方向,因此增加了互动娱乐性。


引言:

Arduino做的各种应用广泛被开源硬件爱好者喜欢。今天给大家介绍一个互动性强的arduino游戏,特别适合这个炎热的夏天户外娱乐,这个项目利用了特别精确灵敏的微波传感来对移动物体进行识别,达到可以在传感识别后发送指令给伺服电机,由伺服电机和跟它固定在一起的喷水头同时进行随机的转动。并且同时喷出水来。由于是伺服随机转角,所以经过传感前面的人并不能用经验判断喷水方向,因此互动娱乐性更强。
夏季大作战_自动水炮图4

第一步:展示内容

人从微波传感前经过后,伺服和水泵同时工作。一个转角度,一个喷水。
夏季大作战_自动水炮图2

第二步:伺服的随机转角

用random命令,并且建立一个函数来更高效的控制随机转角。

第三步:硬件搭建

所需器材:A rduino UNO控制器(2);DF的微博传感器(3);5V伺服电机(4);12v
锂电池;(5);USB数据线;(6);12V水泵 (7);大功率场效应模块

夏季大作战_自动水炮图5


第四步:了解一下关键硬件的参数

根据测试,微波的方向性很好
探测距离: 2-16m连续可调,我最远测试是5M。

第五步:

发一些硬件的图片。让人有个直观的认识
夏季大作战_自动水炮图3

第六步:总体介绍

水炮系统是由微波传感器,伺服电机和水泵来完成的。测试距离是5M,但可以到16M最大距离。
伺服转角是随机的,随机的转角和水泵喷水时同步的。

第七部:连线图

夏季大作战_自动水炮图1


第八部:代码部分的设计

[mw_shl_code=applescript,false]/*
This sketch is made by gada888
2020-07-30
*/

#include <ServoTimer1.h>
int MosPin = 8; // transistor base connected to pin 8
ServoTimer1 servo1; // defines the servo
long randOff = 0;
long randNumber;

#include <MsTimer2.h>
int pbIn = 0;
int count=0;
volatile int state = LOW; //Define ledOut, default is off

void setup()
{
servo1.attach(10); //servo on pin 10
//pinMode(8, OUTPUT);
pinMode(2, INPUT);
digitalWrite(8, LOW);
randomSeed (analogRead (0)); // randomize
pinMode(MosPin, OUTPUT);
attachInterrupt(pbIn, stateChange, FALLING);
MsTimer2::set(1000,process);
MsTimer2::start();
}
int pinin = 0;
long countint = 0;

void loop()
{
pinin = digitalRead(2); // reads the PIR sensor
while (pinin == 0)
{
pinin = digitalRead(2);
}
Serial.println(count); // Printing times of 1000ms suspension
delay(1);
if(state == HIGH)
{
delay(1000);
state = LOW;
digitalWrite(MosPin, LOW);
//delay(500);
}
}

//--------------FUNCTION------------------
void stateChange()
{
count++;
}
void process()
{
if(count>1)
{
state = HIGH;
servo1.write(90);
randOff = random (500, 2000);
delay(randOff);
servo1.write(randNumber = random(45, 135));
delay(400); //gives servo time to get there
digitalWrite(MosPin, HIGH); // turns pump on
delay(500); //fires pump for 1/2 second
digitalWrite(MosPin, LOW); // turns pump off
servo1.write(90); // moves servo back to center
randOff = random (500, 2000);
delay(randOff);
servo1.write(randNumber = random(45, 135));
delay(400);
digitalWrite(MosPin, HIGH);
delay(500);

count=0; //Count zero
}
else
count=0;
}[/mw_shl_code]



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
诩
赶紧做了一个,打算去整基友
佛系唐法官
佛系唐法官
啊这……
20060606
20060606
水泵使用tip122还是mos驱动的
20060606
20060606回复gada888
谢谢指导
gada888
gada888
作者
回复20060606
是mos管驱动的
rzyzzxw
rzyzzxw
喷黑水好评
- 没有更多了 -