Arduino出门提醒器2.0版
首先感谢前几天我发的求助贴,给我解答的Tim老师还有其他老师。制作原因:1:有时在家给太阳能打水,水没打满期间忙别的把打水的事忘了,并且又出门去了,回来时肯定水已经打
满流很长时间了。
2:如果天然气上烧着水或其他,出门忘了,那后果更严重。
历经千辛万苦终于完成出门提醒器2.0版,程序部分通过实验测试。
也可以看我的空间http://user.qzone.qq.com/46402123/infocenter
2.0版使用方法:此版本共有四个按键(真实投入使用时,把天然气按键和太阳能按键换成无线接收的开关,出门按键
成门磁开关)
作为日常提醒,没有其他事件启动时,只要打开门就会语音提醒“出门请带上手机、钥匙、钱包”。
当天然气按键启动,打开门时就会语音提醒“请关闭天然气”。
当太阳能按键启动,打开门时就会语音提醒“请关闭太阳能”。
按下复位键,人为启动的条件都会复位,重新回到出门日常语音提醒。
出门提醒器2.0版硬件配置:Arduino、扩展板、Syn6288语音模块(含喇叭)、自制按键、连线等。
照片与视频用同事新买的小米1S手机拍的
http://player.youku.com/player.php/sid/XNDU4MDI0MDQ0/v.swf
程序代码还请各位老师在帮我看看,有什么地方用的不对的吗?我对程序不是太懂。#include "Syn6288.h"
int key_trq=4;//按键1输入端;
int key_tyn=5;//按键2输入端;
int key_door=6;//按键3输入端;
int key_reset=7;//按键4输入端;
boolean trq_n=false;//上电复位;
boolean tyn_n=false;//上电复位;
Syn6288 syn;
uint8_t text1[]={0xC7,0xEB,0xB9,0xD8,0xB1,0xD5,0xCC,0xEC,0xC8,0xBB,0xC6,0xF8}; //请关闭天然气
uint8_t text2[]={0xC7,0xEB,0xB9,0xD8,0xB1,0xD5,0xCC,0xAB,0xD1,0xF4,0xC4,0xDC}; //请关闭太阳能
uint8_t text3[]={0xB3,0xF6,0xC3,0xC5,0xC7,0xEB,0xB4,0xF8,0xC9,0xCF,0xCA,0xD6,0xBB,0xFA,0xD4,0xBF,0xB3,0xD7,0x3B,0xC7,0xAE,0xB0,0xFC}; //出门请带上手机钥匙钱包
void setup()
{
Serial.begin(9600);
pinMode(key_trq,INPUT);//初始化,定义各端口属性;
pinMode(key_tyn,INPUT);
pinMode(key_door,INPUT);
pinMode(key_reset,INPUT);
}
boolean key_trq_n()//天然气子程序;
{
if(digitalRead(key_trq) == LOW) //按键1按下;
{
delay(20);
if(digitalRead(key_trq) == LOW)
{
trq_n = true;//重新启动;
}
while(digitalRead(key_trq) == LOW);
}
return trq_n;
}
boolean key_tyn_n()//太阳能子程序;
{
if(digitalRead(key_tyn) == LOW) //按键2按下;
{
delay(20);
if(digitalRead(key_tyn) == LOW)
{
tyn_n = true;//重新启动;
}
while(digitalRead(key_tyn) == LOW);
}
return tyn_n;
}
void loop()
{
if(digitalRead(key_reset)==LOW)//复位;
{
trq_n=false; //复位;
tyn_n=false;
}
if(key_trq_n() && digitalRead(key_door)==LOW)//天然气+门开关=语音1;
{
syn.play(text1,sizeof(text1),0); //语音1,请关闭天然气;
}
if(key_tyn_n() && digitalRead(key_door)==LOW)//太阳能+门开关=语音2;
{
syn.play(text2,sizeof(text2),0); //语音2,请关闭太阳能;
}
if(digitalRead(key_door)==LOW && !key_trq_n() && !key_tyn_n())//门开关=语音2;
{
syn.play(text3,sizeof(text3),0); //语音3,出门请带上手机钥匙钱包;
}
}1. 下面的工作就是硬件部分了,先找个合适的盒子,把电路装进去。
2. 更换相应的触发按键。
3. 在继续改进升级,如在之后的2.X版加入已启动事件的指示灯、无线门铃等等一些改进。在3.0之后的版本加入屏幕显示。
31行的while(digitalRead(key_trq) == LOW);和45行不需要吧 benzking 发表于 2012-10-6 11:12 static/image/common/back.gif
31行的while(digitalRead(key_trq) == LOW);和45行不需要吧
while(digitalRead(key_tyn) == LOW);
主要给 return tyn_n; 用的,主要判别状态的。
回头我去掉试试。
我主要担心的是这句if(digitalRead(key_door)==LOW && !key_trq_n() && !key_tyn_n())中“&&”逻辑和后能不能直接给“!”
还有我用的都是if,还是用if else好呢。
不过现在的程序都可以用的。
不错,这个语音模块挺流畅的 lz准备用什么天然气按键和太阳能按键换成无线接收的开关
这个比较难找吧 zhi只是一个创意而已,别要求搞 benzking 发表于 2012-10-6 17:37 static/image/common/back.gif
lz准备用什么天然气按键和太阳能按键换成无线接收的开关
这个比较难找吧
我打算用比较低廉的 2272-M4 非锁四路无线遥控 做输入 太行摄狼 发表于 2012-10-6 23:05 static/image/common/back.gif
zhi只是一个创意而已,别要求搞
是的,因为我不是做电子这行的,只是非常喜欢,就当边玩边学习了。O(∩_∩)O~ MicroCao 发表于 2012-10-6 11:52 static/image/common/back.gif
不错,这个语音模块挺流畅的
好像有很多公交车都用它报站吧。有点语言读的也不顺耳。
页:
[1]