迷你强 发表于 2012-9-4 15:30:59

Arduino入门教程--第十六课--Arduino制作讯线水位报警器模型

因最近太忙了。教程很久都没有更新了,十分抱歉,我们今天来玩一个非常有意思的东西,希望能启发到大家,最近在汛期,各个水库都水位都在告急,因此我突然想做一个自动水位报警器的小模型,说做就做。。我们做一个最简单的,就是如果水位到达警戒水位时,警报灯会闪烁,同时会有声音提示

然后我们来设计电路



电路上结构应该很简单。利用的原理就是,其实水是能够导电的(纯净水除外),然后给水一个电压,用模拟口进行检测即可(之所以说是模型,实际环境会稍显复杂不能直接用电拿水当导体用) 如果检测到电压说明水已经到了我们标定的水位了。

我们在面包板上搭建出实验电路



然后我们开始写程序。程序之前的课程都介绍过,反反复复就这些代码。。。。/*
作者:极客工坊-迷你强
时间:2012年9月2日
IDE版本号:1.0.1
发布地址:www.geek-workshop.com
作用:arduino水位报警器,到达设定水位,进行指示灯和声音报警
*/

void setup()
{
pinMode(A5,OUTPUT);   //让模拟口A5作为数字口输出
}

void loop()
{
int n=analogRead(A0);
if (n>=1)
{
   
   digitalWrite(A5, HIGH);

pinMode(A2,OUTPUT);   //蜂鸣器频响 0.5秒
tone(A2,800);
delay(500);
pinMode(A2,INPUT);


digitalWrite(A5, LOW);   
delay(500);      
}
}最后我们进行试验,试验过程看视频

http://player.youku.com/player.php/sid/XNDQ2NzY1NDgw/v.swf

教程已经连载不少时间了,我期待大家自己用套件做出创意十足的实验依旧没哟看到。arduino其实最重要的是在基础教程的启发下,自己做出东西,这才是真正的学会了。。。我,期待你的分享,无论是照做的实验还是自己的新玩法,分享出来,优秀的作品有赏,有机会得到各种OCROBOT的模块工程样品哟。

意见反馈 发表于 2012-9-4 20:04:30

沙发:lol:lol:lol

939670129 发表于 2012-9-19 21:11:57

好东西,顶~

奥氏体 发表于 2012-9-21 20:19:28

强哥,我想问一下,用数字口应该可以达到同样的效果吧。另外:
digitalWrite(A5, HIGH);
pinMode(A2,OUTPUT);   //蜂鸣器频响 0.5秒
tone(A2,800); 这句是什么意思呢?为什么要重新设置A2输出,在初始化得时候不是应经设置过了。谢谢

迷你强 发表于 2012-9-22 17:41:36

奥氏体 发表于 2012-9-21 20:19 static/image/common/back.gif
强哥,我想问一下,用数字口应该可以达到同样的效果吧。另外:
digitalWrite(A5, HIGH);
pinMode(A ...

tone 就是发出声音的函数 。。。。。。      a2是端口800就是800hz频率
重新设置为输入是因为我没有想到啥好办法让他不响。。。。。因为我小白,就用了偷懒的招式

花开无痕 发表于 2012-10-20 10:08:35

本帖最后由 花开无痕 于 2012-10-20 10:12 编辑

水的深度不同,导电性能也会不一样是吧?还有,你怎么知道n>1呢》可不可以用其他的数值,用其他的值是不对应深度不同呢?

迷你强 发表于 2012-10-31 17:24:27

花开无痕 发表于 2012-10-20 10:08 static/image/common/back.gif
水的深度不同,导电性能也会不一样是吧?还有,你怎么知道n>1呢》可不可以用其他的数值,用其他的值是不对应 ...

这样的。。这个只是个小演示。。真实使用,的是一个标杆。上面有很多的触点,接触到一个就触发一个

单笔爱人 发表于 2012-11-21 18:27:58

学以致用啊,肯定会有越来越多的优秀创意被制作出来的

happyfdg 发表于 2013-1-17 21:39:29

本帖最后由 happyfdg 于 2013-1-17 21:49 编辑

不知道发在这里会不会有人看到。。。。
1.如果直接用A0接口的话检测的值是1023,用的话是个位数,我也知道对A0接口的处理的原理是什么(也就是引入1K的电阻和A0搭配的原理是什么)?
2.引入后即使不通路也有个位数的检测值的原因是什么?是电路噪声吗?
这是我用来观测A0值的程序。谢谢啦。。。

void setup()
{
pinMode(A5,OUTPUT);   //让模拟口A5作为数字口输出
Serial.begin(9600);
}

void loop()
{

int n=analogRead(A0);
Serial.println(n);
Serial.print("dd");
if (n>=100)
{

   digitalWrite(A5, HIGH);

pinMode(A2,OUTPUT);   //蜂鸣器频响 0.5秒
tone(A2,800);
delay(500);
pinMode(A2,INPUT);
Serial.println(n);


digitalWrite(A5, LOW);   
delay(500);      
}
}

浅缘 发表于 2013-4-12 23:21:19

happyfdg 发表于 2013-1-17 21:39 static/image/common/back.gif
不知道发在这里会不会有人看到。。。。
1.如果直接用A0接口的话检测的值是1023,用的话是个位数,我也知道 ...

n>=100,100设大了,试了刚和水面接触时才30多

hotboy 发表于 2013-5-12 23:38:50

这个实验,大家可以参照一个土壤湿度传感器。。那个就是一级级分级的。

328522073 发表于 2013-5-22 21:09:42

考虑电极在水中的电解反应没有...这个不耐用..

chaoser 发表于 2013-8-10 19:51:14

其实真正实用的还是浮球系统,也就是抽水马桶水箱里那套玩意儿 ;P

实验很简单,我倒是对LZ那个开关USB线比较感兴趣,每天插拔USB无数次啊!

Cinnabar纱 发表于 2013-9-15 07:47:52

你好,可以麻烦解释下”然后给水一个电压,用模拟口进行检测即可“么?刚开始上这个课,之前完全没有接触过相关的,还有图中左边的是什么?还是就是普通的带开关的USB连着电脑的???谢谢

RubinYim 发表于 2014-2-19 12:26:00

你好,我是新手,我想问一下,你没连接电脑,怎么把代码写进去啊?开关另一头接的是什么?
页: [1] 2 3
查看完整版本: Arduino入门教程--第十六课--Arduino制作讯线水位报警器模型