基于arduino的震动闹钟-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 46882|回复: 56

[项目] 基于arduino的震动闹钟

  [复制链接]
发表于 2019-4-20 17:29 | 显示全部楼层 |阅读模式
本帖最后由 cloverli 于 2020-7-10 15:24 编辑

参赛项目:

震动闹钟

参赛组员:

cloverli

项目简介:


在叫醒自己的同时,不打扰到别人的闹钟。微型震动马达为闹铃装置,利用红外遥控调节闹铃时间。我把震动部件制成了条状。




主要用到的部件:1602a显示屏,arduino uno,  震动传感器, 红外接收头, 红外发射器,继电器等 gaitubao__IMG_20190420_185808.jpg

已基本完成主程序和大部分硬件连接,由于缺乏材料,所以正式完成要等几天。

gaitubao__5555 (1).jpg




主菜单

gaitubao__001.jpg gaitubao__003.jpg gaitubao__002.jpg




设置时间
gaitubao__004.jpg gaitubao__005.jpg




设置闹钟
gaitubao__006.jpg gaitubao__007.jpg gaitubao__008.jpg



震动部件制作 101.jpg 102.jpg 103.jpg 104.jpg


做好的简陋的成品 4293.jpg 4294.jpg

程序源代码(需要再导入一个红外遥控的库 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了,虽然材料准备的不是很充分,但也是把震动闹钟做完了。























 楼主| 发表于 2019-4-21 20:54 | 显示全部楼层
自己给自己打个气
发表于 2019-4-22 09:32 | 显示全部楼层
加油加油!~来学习一下
 楼主| 发表于 2019-4-27 09:35 | 显示全部楼层
又更新了下
发表于 2019-4-27 12:22 | 显示全部楼层
震动。。。。棒。。。。闹钟?(不好意思我想歪了)
 楼主| 发表于 2019-4-29 22:19 | 显示全部楼层
终于结束了
发表于 2019-5-8 22:50 | 显示全部楼层
演示视频补充下
发表于 2019-5-9 22:37 | 显示全部楼层
想参考一下时钟程序
 楼主| 发表于 2019-5-18 10:10 | 显示全部楼层
john_yike 发表于 2019-5-9 22:37
想参考一下时钟程序

我没有时钟模块,所以这个只是单纯用了deny()函数进行延时,时钟走的并不准。但做个日常闹钟应该够用了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-9-20 22:47 , Processed in 0.085418 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表