极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12694|回复: 8

Ds1307+nikia5110制作定时器

[复制链接]
发表于 2013-12-12 12:36:55 | 显示全部楼层 |阅读模式
本帖最后由 桐桐 于 2013-12-12 12:55 编辑

前几天做了一个能设定时间自动打开电源盒关闭电源的装置,现在也把它写出来......
下面是接线图,直接用手画加电脑画的,大家讲究着看看......
http://yun.baidu.com/share/link?shareid=2156123376&uk=3626293744

下面是程序:
  1. #include <DS1307.h>
  2. #include <LCD5110_CN.h>

  3. LCD5110 myGLCD(2,3,4,6,5);  //lcd5110接线柱定义
  4. extern uint8_t SmallFont[];     //定义小号字体
  5. extern uint8_t MediumNumbers[];  //定义中号字体
  6. String month;  //定义一个月份字符串变量

  7. DS1307  rtc(7, 8);    //定义ds1307接线柱
  8. Time  t;
  9. int h1=0;
  10. int m1=0;
  11. int h2=0;
  12. int m2=0;
  13. int h1bt=0;
  14. int m1bt=0;
  15. int h2bt=0;
  16. int m2bt=0;
  17. int sdbt=0;
  18. int sd=0;


  19. void setup()
  20. {myGLCD.InitLCD();
  21.   rtc.halt(false);
  22.   Serial.begin(9600);
  23. pinMode(12, INPUT);
  24. pinMode(9, INPUT);
  25. pinMode(11, INPUT);
  26. pinMode(10, INPUT);
  27. pinMode(13,OUTPUT);
  28.    
  29. digitalWrite(13,LOW);
  30. //**********初始化时间,当时间准确了后就不用再执行了,第一次用时记住*************
  31. //******************下面的“//”去掉*****************
  32. //  rtc.setDOW(WEDNESDAY);      
  33. //  rtc.setTime(10, 53, 0);   
  34. //  rtc.setDate(11, 12, 2013);   
  35. //****************************************************************
  36. }

  37. void loop()
  38. {
  39.   h1bt=digitalRead(10);
  40. h2bt=digitalRead(11);
  41.   m1bt=digitalRead(9);
  42.    m2bt=digitalRead(12);
  43. //********读取来自 DS1307的数据************************
  44.   t = rtc.getTime();
  45.   month=rtc.getMonthStr();          //读取月份  
  46. jishi();    //运行计时程序,程序在最后。
  47. //*****************以下是按钮程序,按住1号按钮改变打开小时数
  48. //******************按住2号按钮改变打开分钟数
  49. //******************按住3号按钮改变关闭小时数
  50. //******************按住4号按钮改变关闭分钟数
  51.   while(h1bt==1)
  52.   {   
  53.     if(h1<23)  
  54.   h1++;
  55.   else
  56.   h1=0;
  57.   delay(300);
  58.    h1bt=digitalRead(10);
  59.     myGLCD.printNumI(h1, LEFT, 36);
  60.     if(h1==23)
  61.      {myGLCD.clrScr();
  62.      jishi();
  63.   }}
  64.   
  65.     while(h2bt==1)
  66.   {if(h2<23)  
  67.   h2++;
  68.   else
  69.   h2=0;
  70.   delay(300);
  71.    h2bt=digitalRead(13);
  72.      myGLCD.printNumI(h2, LEFT, 42);
  73.      if(h2==23)
  74.       {myGLCD.clrScr();
  75.       jishi();
  76.   }}
  77.   
  78.     while(m1bt==1)
  79.   {if(m1<59)  
  80.   m1++;
  81.   else
  82.   m1=0;
  83.   delay(300);
  84.     m1bt=digitalRead(11);
  85.       myGLCD.printNumI(m1, CENTER, 36);
  86.       if(m1==59)
  87.       { myGLCD.clrScr();
  88.        jishi();
  89.   }}
  90.   
  91.     while(m2bt==1)
  92.   {if(m2<59)  
  93.   m2++;
  94.   else
  95.   m2=0;
  96.   delay(300);
  97.    m2bt=digitalRead(7);
  98.       myGLCD.printNumI(m2, CENTER, 42);  
  99.       if(m2==59)
  100.       { myGLCD.clrScr();
  101.        jishi();
  102.   }}
  103.    
  104.    
  105.    myGLCD.printNumI(h1, LEFT, 36);
  106.     myGLCD.printNumI(h2, LEFT, 42);
  107.    myGLCD.printNumI(m1, CENTER, 36);
  108.     myGLCD.printNumI(m2, CENTER, 42);  
  109.   //*************以下是当时间等于设定的打开时间时打开,等于关闭时间时关闭******
  110.   if(t.hour==h1&&t.min==m1)
  111. digitalWrite(12,HIGH);
  112. if(t.hour==h2&&t.min==m2)
  113. digitalWrite(12,LOW);
  114. delay (1000);
  115.    myGLCD.clrScr();
  116. }
  117. //*****************以下是计时函数**************************
  118. void jishi(){
  119.    myGLCD.setFont(SmallFont);
  120.     myGLCD.printNumI(t.year, CENTER, 6);
  121.       myGLCD.print(month, LEFT, 12);
  122.       
  123.       myGLCD.printNumI(t.date, RIGHT, 12);
  124.        myGLCD.setFont(MediumNumbers);
  125.     myGLCD.printNumI(t.hour, LEFT, 18);
  126.     myGLCD.printNumI(t.min, CENTER, 18);
  127.     myGLCD.printNumI(t.sec, RIGHT, 18);
  128.    
  129.     myGLCD.setFont(SmallFont);
  130. myGLCD.print("on", RIGHT, 36);
  131.   myGLCD.print("off", RIGHT, 42);
  132. }


  133. //**************************************************************************
复制代码

下面是实物图,将灯换成继电器就可以控制电源了,昨天晚上已经成功的控制了我家的电压力锅,在早上5点开烧,到7点关闭。早上已经喝上粥了,呵呵。
http://yun.baidu.com/share/link?shareid=2163991999&uk=3626293744

两个库文件链接:
http://yun.baidu.com/share/link?shareid=2212864208&uk=3626293744
回复

使用道具 举报

发表于 2013-12-12 17:15:16 | 显示全部楼层
  不错 要是做个安全点的盒子就更好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-12 22:47:58 | 显示全部楼层
今天又加了一个水滴传感器上去,万一粥溢出来时可以自动断电。正打算要做电路板,然后集成在一个多用插里。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-12 22:50:05 | 显示全部楼层
程序中间12端口输出请改成13号端口。
回复 支持 反对

使用道具 举报

发表于 2013-12-12 23:41:30 | 显示全部楼层
1307我买了2个走时都不准,一天差2分钟的样子,不知道楼主的咋样。
回复 支持 反对

使用道具 举报

发表于 2013-12-13 16:14:34 | 显示全部楼层
电压力锅需要点按钮操作开合关吗? 还是就是简单的通电就工作?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-13 18:13:43 | 显示全部楼层
我的已经运行2天了,还一秒不差。我用的是dfrobot的。压力锅需要转好旋钮,如果不通电它不会运行,通电后开始运行。所以我直接用一个继电器来控制通断电就可以了
回复 支持 反对

使用道具 举报

发表于 2014-4-1 14:03:44 | 显示全部楼层
用了下这个程序 除了改12号端口为13号端口还发现一个怪现象   1号开关按住不放调时调得很快  2 3 4号开关按住不放要1秒钟才跳一格  程序是一样的怎么会有这种现象有点不解
回复 支持 反对

使用道具 举报

发表于 2014-4-8 13:40:16 | 显示全部楼层
为什么编译的时候这么多错误?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-27 13:39 , Processed in 0.067160 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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