2020-7-31 20:01:01 [显示全部楼层]
2547浏览
查看: 2547|回复: 6

[项目] 夏季大作战_自动水炮

[复制链接]
本帖最后由 gada888 于 2020-8-24 16:50 编辑

引言:

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]



rzyzzxw  版主

发表于 2020-8-1 09:41:30

喷黑水好评
回复

使用道具 举报

20060606  高级技匠

发表于 2020-8-1 09:53:31

水泵使用tip122还是mos驱动的
回复

使用道具 举报

gada888  版主
 楼主|

发表于 2020-8-1 10:08:16

20060606 发表于 2020-8-1 09:53
水泵使用tip122还是mos驱动的

是mos管驱动的
回复

使用道具 举报

佛系唐法官  中级技师

发表于 2020-8-2 19:49:36

啊这……
回复

使用道具 举报

20060606  高级技匠

发表于 2020-8-18 11:10:09


谢谢指导
回复

使用道具 举报

 初级技匠

发表于 2022-4-16 14:33:08

赶紧做了一个,打算去整基友
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail