|
本帖最后由 cloverli 于 2020-7-10 15:24 编辑
参赛项目:
震动闹钟
参赛组员:
cloverli
项目简介:
在叫醒自己的同时,不打扰到别人的闹钟。微型震动马达为闹铃装置,利用红外遥控调节闹铃时间。我把震动部件制成了条状。
主要用到的部件:1602a显示屏,arduino uno, 震动传感器, 红外接收头, 红外发射器,继电器等
已基本完成主程序和大部分硬件连接,由于缺乏材料,所以正式完成要等几天。
主菜单
设置时间
设置闹钟
震动部件制作
做好的简陋的成品
程序源代码(需要再导入一个红外遥控的库
Arduino-IRremote-master.zip
(81.37 KB, 下载次数: 64)
)
#include <LiquidCrystal.h>
#include<Arduino.h>
#include <IRremote.h>
LiquidCrystal lcd(2,3,4,5,6,7);
int RECV_PIN=8;
IRrecv irrecv(RECV_PIN);
decode_results results;
int h=9,m=35,s=45;
int rh=9,rm=36,rs=0;
int menu=0;
int i=1;
int ringpin=9;
int ring=0;
void setup()
{
pinMode(ringpin,OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
lcd.begin(16,2);
lcd.clear();
delay(1000);
}
void loop()
{
if(ring==1)digitalWrite(ringpin,LOW);
if(ring==0)digitalWrite(ringpin,HIGH);
if(rh==h&&rm==m)ring=1;
if(rh==h&&rm==(m-1))ring=0;
if(irrecv.decode(&results)){
Serial.println(results.value);
irrecv.resume();}
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0, 1) ;
if(results.value==16736925){ lcd.print("menu ");menu=1;results.value=0;}
if(menu==1&&results.value==0){
if(i%2==1)
lcd.print("1.set time");
if(i%2==0)
lcd.print("2.set ring time");}
if((menu==1|menu==11)&&results.value==16724175){ lcd.print("setting time.... ");menu=11;}
if(menu==11&&results.value==16716015){h++;results.value=11;}
if(menu==11&&results.value==16726215){m++;results.value=11;}
if(menu==11&&results.value==16734885){s++;results.value=11;}
if(menu==11&&results.value==16728765){h--;results.value=11;}
if(menu==11&&results.value==16730805){m--;results.value=11;}
if(menu==11&&results.value==16732845){s--;results.value=11;}
if(menu==11&&results.value==16748655){lcd.print("succesfully");menu=0;}
if(menu==11&&results.value!=16724175&&results.value!=16748655){lcd.print("setting time.... ");}
if((menu==1)&&results.value==16718055){ lcd.print("setting ring.... ");menu=12;}
if(menu==12&&results.value==16748655){lcd.print("succesfully");menu=0;}
if(menu==12)
{
lcd.print("ring: ");
lcd.print(rh);
lcd.print(":");
lcd.print(rm);
lcd.print(":");
lcd.print(rs);
}
if(menu==12&&results.value==16716015){rh++;results.value=12;}
if(menu==12&&results.value==16726215){rm++;results.value=12;}
if(menu==12&&results.value==16734885){rs++;results.value=12;}
if(menu==12&&results.value==16728765){rh--;results.value=12;}
if(menu==12&&results.value==16730805){rm--;results.value=12;}
if(menu==12&&results.value==16732845){rs--;results.value=12;}
lcd.setCursor(0, 0) ;
lcd.print("time: ");
lcd.print(h);
lcd.print(":");
lcd.print(m);
lcd.print(":");
lcd.print(s);
s++;
if(s==60) {m++;s=0;}
if(m==60) {h++;m=0;}
delay(1000);
i++;
}
总结:通过这次的制作让我复习了一下arduino的知识,毕竟我已经一年多没碰过arduino了,虽然材料准备的不是很充分,但也是把震动闹钟做完了。
|
|