极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 52962|回复: 19

【菜鸟的Arduino学习之路】个人superclock时钟V0.1版

[复制链接]
发表于 2012-9-13 20:42:43 | 显示全部楼层 |阅读模式
本帖最后由 但丁 于 2012-9-13 20:54 编辑

    学习Arduino有一个月左右了吧,今天尝试做了个小时钟,效果还不是很好,但是鉴于马上要出国读书了,还是想写一篇帖子,也算是交个作业以及表达一下对极客工坊这么好的学习之地表示感谢吧!
    关于时钟性能的改进等日后有空了再进一步更新~~~话说自己大爱做时钟

    元件清单:1.热敏电阻或LM35温度传感器(自己用的是热敏电阻,便宜点哇)
              2.DS1302时钟模块
              3.红外遥控器及红外一体接收头
              4.1602液晶屏   

         

    好了,废话不多说,上图,上视频~~









      接下来是代码,写得有点乱,喜欢的朋友可以尝试一下:
  1. #include <LiquidCrystal.h>
  2. #include <IRremote.h>
  3. #include <stdio.h>                  //DS1302
  4. #include <string.h>
  5. #include <DS1302.h>
  6. uint8_t CE_PIN   = 12;
  7. uint8_t IO_PIN   = 11;
  8. uint8_t SCLK_PIN = 10;
  9. DS1302 rtc(CE_PIN,IO_PIN,SCLK_PIN);
  10. char yearmonthday[20];
  11. char hourminutesecond[10];
  12. char day[10];

  13. int irReceivePin=2;                       //IRremote
  14. IRrecv irrecv(irReceivePin);
  15. decode_results results;


  16. #define beta 4090                       //remindianzu
  17. LiquidCrystal lcd(3,4,5,6,7,8,9);      //displayModel2
  18. byte one[8]={
  19.   B11111,B11111,B00000,B11111,B11111,B00000,B11111,B11111};                                          
  20. byte two[8]={
  21.   B11111,B11111,B00000,B00000,B00000,B00000,B00000,B00000};
  22. byte three[8]={
  23.   B00000,B00000,B00000,B00000,B00000,B00000,B11111,B11111};
  24. byte four[8]={
  25.   B11111,B11111,B00000,B00000,B00000,B00000,B11111,B11111};
  26. byte five[8]={
  27.   B11111,B11111,B00000,B00000,B00000,B00000,B00000,B11111};
  28. byte six[8]={
  29.   B11111,B00000,B00000,B00000,B00000,B00000,B11111,B11111};
  30. byte seven[8]={
  31.   B00000,B00000,B00000,B11111,B11111,B00000,B00000,B00000};
  32. byte zero[8]={
  33.   B00000,B00000,B00000,B00000,B00000,B00000,B00000,B00000};


  34. void setup()
  35. {
  36.   lcd.begin(16,2);
  37.   lcd.display();
  38.   lcd.createChar(1,one);             //displayModel2
  39.   lcd.createChar(2,two);
  40.   lcd.createChar(3,three);
  41.   lcd.createChar(4,four);
  42.   lcd.createChar(5,five);
  43.   lcd.createChar(6,six);
  44.   lcd.createChar(7,seven);  
  45.   lcd.createChar(8,zero);
  46.   irrecv.enableIRIn();              //IRremote
  47.   Serial.begin(9600);
  48. }

  49. void loop()
  50. {
  51.   int Model;
  52.   if(irrecv.decode(&results))
  53.   {      
  54.     Serial.println(results.value);
  55.     long remote=results.value;
  56.     if(remote==16580863)
  57.     {
  58.       Model=1;
  59.       lcd.clear();     
  60.     }
  61.     else if(remote==16597183)
  62.     {
  63.       Model=2;
  64.       lcd.clear();   
  65.     }   
  66.     irrecv.resume();
  67.   }
  68.   else
  69.   {
  70.     displayModel1();
  71.   }

  72.   while(Model==1)
  73.   {
  74.     displayModel1();
  75.     if(irrecv.decode(&results))
  76.     {
  77.       Serial.println(results.value);
  78.       long remote=results.value;
  79.       if(remote==16580863)
  80.       {
  81.         Model=1;
  82.         lcd.clear();     
  83.       }
  84.       else if(remote==16597183)
  85.       {
  86.         Model=2;
  87.         lcd.clear();   
  88.       }
  89.       irrecv.resume();
  90.     }
  91.   }
  92.   while(Model==2)
  93.   {
  94.     displayModel2();
  95.     if(irrecv.decode(&results))
  96.     {
  97.       Serial.println(results.value);
  98.       long remote=results.value;
  99.       if(remote==16580863)
  100.       {
  101.         Model=1;
  102.         lcd.clear();     
  103.       }
  104.       else if(remote==16597183)
  105.       {
  106.         Model=2;
  107.         lcd.clear();   
  108.       }
  109.       irrecv.resume();
  110.     }
  111.   }
  112. }

  113. void displayModel1()
  114. {
  115.   timeandtempDisplay();
  116. }

  117. void timeandtempDisplay()
  118. {
  119.   Time t=rtc.time();
  120.   memset(day,0, sizeof(day));
  121.   switch (t.day)
  122.   {
  123.   case 1:
  124.     strcpy(day, "Sun");
  125.     break;
  126.   case 2:
  127.     strcpy(day, "Mon");
  128.     break;
  129.   case 3:
  130.     strcpy(day, "Tue");
  131.     break;
  132.   case 4:
  133.     strcpy(day, "Wed");
  134.     break;
  135.   case 5:
  136.     strcpy(day, "Thr");
  137.     break;
  138.   case 6:
  139.     strcpy(day, "Fri");
  140.     break;
  141.   case 7:
  142.     strcpy(day, "Sat");
  143.     break;
  144.   }
  145.   snprintf(yearmonthday, sizeof(yearmonthday), "%04d/%02d/%02d",t.yr,t.mon,t.date);
  146.   snprintf(hourminutesecond,sizeof(hourminutesecond),"%02d:%02d:%02d",t.hr, t.min, t.sec);
  147.   lcd.setCursor(0,0);
  148.   lcd.print(yearmonthday);
  149.   lcd.setCursor(13,0);
  150.   lcd.print(day);  
  151.   lcd.setCursor(0,1);
  152.   tempDisplay();   
  153.   lcd.setCursor(8,1);
  154.   lcd.print(hourminutesecond);
  155. }

  156. void tempDisplay()
  157. {  
  158.   int t=analogRead(A0);
  159.   float temp=beta/(log((1023.0/t)-1.0)+(beta/298.0))-273.0;
  160.   int temperature=temp;
  161.   lcd.print(temperature);
  162.   lcd.write(0xDF);
  163.   lcd.print("C");  
  164. }


  165. void displayModel2()
  166. {  
  167.   minuteDisplay();  
  168.   hourDisplay();   
  169. }

  170. void hourDisplay()
  171. {
  172.   Time t=rtc.time();
  173.   int hour=t.hr;  
  174.   if(hour<12&hour>0)
  175.   {   
  176.     int houra=hour/10;
  177.     int hourb=hour%10;
  178.     if(hour>0&hour<10)
  179.     {
  180.       numberDisplay(10,-1,0);
  181.       numberDisplay(hour,3,0);      
  182.     }
  183.     else
  184.     {
  185.       numberDisplay(houra,-1,0);
  186.       numberDisplay(hourb,3,0);
  187.     }
  188.     amDisplay();   
  189.   }
  190.   else if(hour>12&hour<24)
  191.   {     
  192.     hour=hour-12;
  193.     int houra=hour/10;
  194.     int hourb=hour%10;
  195.     if(hour>0&hour<10)
  196.     {
  197.       numberDisplay(10,-1,0);
  198.       numberDisplay(hour,3,0);      
  199.     }
  200.     else
  201.     {
  202.       numberDisplay(houra,-1,0);
  203.       numberDisplay(hourb,3,0);
  204.     }
  205.     pmDisplay();
  206.   }
  207.   else if(hour<1)
  208.   {     
  209.     numberDisplay(1,-1,0);
  210.     numberDisplay(2,3,0);
  211.     amDisplay();
  212.   }
  213.   else if (hour==12)
  214.   {
  215.     numberDisplay(0,3,0);
  216.     pmDisplay();
  217.   }
  218. }

  219. void minuteDisplay()
  220. {
  221.   Time t=rtc.time();
  222.   int minute=t.min;
  223.   int minutea=minute/10;
  224.   int minuteb=minute%10;
  225.   if(minute>=10)
  226.   {
  227.     numberDisplay(minutea,9,0);
  228.     numberDisplay(minuteb,13,0);
  229.   }
  230.   else  
  231.   {
  232.     numberDisplay(0,9,0);
  233.     numberDisplay(minuteb,13,0);
  234.   }
  235. }

  236. void numberDisplay(int i,int cols,int rows)
  237. {
  238.   switch(i)
  239.   {
  240.   case 0:
  241.     zeroDisplay(cols,rows);
  242.     break;
  243.   case 1:
  244.     oneDisplay(cols,rows);
  245.     break;
  246.   case 2:
  247.     twoDisplay(cols,rows);
  248.     break;
  249.   case 3:
  250.     threeDisplay(cols,rows);
  251.     break;
  252.   case 4:
  253.     fourDisplay(cols,rows);
  254.     break;
  255.   case 5:
  256.     fiveDisplay(cols,rows);
  257.     break;
  258.   case 6:
  259.     sixDisplay(cols,rows);
  260.     break;
  261.   case 7:
  262.     sevenDisplay(cols,rows);
  263.     break;
  264.   case 8:
  265.     eightDisplay(cols,rows);
  266.     break;
  267.   case 9:
  268.     nineDisplay(cols,rows);
  269.     break;
  270.   case 10:
  271.     nullDisplay(cols,rows);
  272.     break;
  273.   }
  274. }

  275. void zeroDisplay(int col, int row)
  276. {
  277.   lcd.setCursor(col,row);
  278.   lcd.write(1);
  279.   lcd.setCursor(col+1,row);
  280.   lcd.write(2);
  281.   lcd.setCursor(col+2,row);
  282.   lcd.write(1);
  283.   lcd.setCursor(col,row+1);
  284.   lcd.write(1);
  285.   lcd.setCursor(col+1,row+1);
  286.   lcd.write(3);
  287.   lcd.setCursor(col+2,row+1);
  288.   lcd.write(1);
  289. }

  290. void oneDisplay(int col, int row)
  291. {
  292.   lcd.setCursor(col,row);
  293.   lcd.write(8);
  294.   lcd.setCursor(col+1,row);
  295.   lcd.write(1);
  296.   lcd.setCursor(col+2,row);
  297.   lcd.write(8);
  298.   lcd.setCursor(col,row+1);
  299.   lcd.write(8);
  300.   lcd.setCursor(col+1,row+1);
  301.   lcd.write(1);
  302.   lcd.setCursor(col+2,row+1);
  303.   lcd.write(8);
  304. }


  305. void twoDisplay(int col, int row)
  306. {
  307.   lcd.setCursor(col,row);
  308.   lcd.write(2);
  309.   lcd.setCursor(col+1,row);
  310.   lcd.write(2);
  311.   lcd.setCursor(col+2,row);
  312.   lcd.write(1);
  313.   lcd.setCursor(col,row+1);
  314.   lcd.write(1);
  315.   lcd.setCursor(col+1,row+1);
  316.   lcd.write(4);
  317.   lcd.setCursor(col+2,row+1);
  318.   lcd.write(4);
  319. }

  320. void threeDisplay(int col, int row)
  321. {
  322.   lcd.setCursor(col,row);
  323.   lcd.write(4);
  324.   lcd.setCursor(col+1,row);
  325.   lcd.write(4);
  326.   lcd.setCursor(col+2,row);
  327.   lcd.write(1);
  328.   lcd.setCursor(col,row+1);
  329.   lcd.write(3);
  330.   lcd.setCursor(col+1,row+1);
  331.   lcd.write(3);
  332.   lcd.setCursor(col+2,row+1);
  333.   lcd.write(1);
  334. }

  335. void fourDisplay(int col, int row)
  336. {
  337.   lcd.setCursor(col,row);
  338.   lcd.write(1);
  339.   lcd.setCursor(col+1,row);
  340.   lcd.write(8);
  341.   lcd.setCursor(col+2,row);
  342.   lcd.write(1);
  343.   lcd.setCursor(col,row+1);
  344.   lcd.write(2);
  345.   lcd.setCursor(col+1,row+1);
  346.   lcd.write(2);
  347.   lcd.setCursor(col+2,row+1);
  348.   lcd.write(1);
  349. }

  350. void fiveDisplay(int col, int row)
  351. {
  352.   lcd.setCursor(col,row);
  353.   lcd.write(1);
  354.   lcd.setCursor(col+1,row);
  355.   lcd.write(4);
  356.   lcd.setCursor(col+2,row);
  357.   lcd.write(4);
  358.   lcd.setCursor(col,row+1);
  359.   lcd.write(3);
  360.   lcd.setCursor(col+1,row+1);
  361.   lcd.write(3);
  362.   lcd.setCursor(col+2,row+1);
  363.   lcd.write(1);
  364. }

  365. void sixDisplay(int col, int row)
  366. {
  367.   lcd.setCursor(col,row);
  368.   lcd.write(1);
  369.   lcd.setCursor(col+1,row);
  370.   lcd.write(2);
  371.   lcd.setCursor(col+2,row);
  372.   lcd.write(2);
  373.   lcd.setCursor(col,row+1);
  374.   lcd.write(1);
  375.   lcd.setCursor(col+1,row+1);
  376.   lcd.write(4);
  377.   lcd.setCursor(col+2,row+1);
  378.   lcd.write(1);
  379. }

  380. void sevenDisplay(int col, int row)
  381. {
  382.   lcd.setCursor(col,row);
  383.   lcd.write(2);
  384.   lcd.setCursor(col+1,row);
  385.   lcd.write(2);
  386.   lcd.setCursor(col+2,row);
  387.   lcd.write(1);
  388.   lcd.setCursor(col,row+1);
  389.   lcd.write(8);
  390.   lcd.setCursor(col+1,row+1);
  391.   lcd.write(8);
  392.   lcd.setCursor(col+2,row+1);
  393.   lcd.write(1);
  394. }

  395. void eightDisplay(int col, int row)
  396. {
  397.   lcd.setCursor(col,row);
  398.   lcd.write(1);
  399.   lcd.setCursor(col+1,row);
  400.   lcd.write(5);
  401.   lcd.setCursor(col+2,row);
  402.   lcd.write(1);
  403.   lcd.setCursor(col,row+1);
  404.   lcd.write(1);
  405.   lcd.setCursor(col+1,row+1);
  406.   lcd.write(6);
  407.   lcd.setCursor(col+2,row+1);
  408.   lcd.write(1);
  409. }

  410. void nineDisplay(int col, int row)
  411. {
  412.   lcd.setCursor(col,row);
  413.   lcd.write(1);
  414.   lcd.setCursor(col+1,row);
  415.   lcd.write(4);
  416.   lcd.setCursor(col+2,row);
  417.   lcd.write(1);
  418.   lcd.setCursor(col,row+1);
  419.   lcd.write(3);
  420.   lcd.setCursor(col+1,row+1);
  421.   lcd.write(3);
  422.   lcd.setCursor(col+2,row+1);
  423.   lcd.write(1);
  424. }

  425. void nullDisplay(int col,int row)
  426. {
  427.   lcd.setCursor(col,row);
  428.   lcd.write(8);
  429.   lcd.setCursor(col+1,row);
  430.   lcd.write(8);
  431.   lcd.setCursor(col+2,row);
  432.   lcd.write(8);
  433.   lcd.setCursor(col,row+1);
  434.   lcd.write(8);
  435.   lcd.setCursor(col+1,row+1);
  436.   lcd.write(8);
  437.   lcd.setCursor(col+2,row+1);
  438.   lcd.write(8);
  439. }


  440. void amDisplay()
  441. {
  442.   lcd.setCursor(7,0);
  443.   lcd.print('a');
  444.   lcd.setCursor(7,1);
  445.   lcd.print('m');
  446.   delay(500);
  447.   lcd.setCursor(7,0);
  448.   lcd.write(8);
  449.   lcd.setCursor(7,1);
  450.   lcd.write(8);
  451.   delay(500);
  452. }

  453. void pmDisplay()
  454. {
  455.   lcd.setCursor(7,0);
  456.   lcd.print('p');
  457.   lcd.setCursor(7,1);
  458.   lcd.print('m');
  459.   delay(500);
  460.   lcd.setCursor(7,0);
  461.   lcd.write(8);
  462.   lcd.setCursor(7,1);
  463.   lcd.write(8);
  464.   delay(500);
  465. }
复制代码




       基本上我的superclock的V0.1版本就是这个样子了,当然还存在很多问题,等日后有空了果断再更新一下,只因我个人大爱时钟,希望能做出更加个性化而且功能完善的时钟吧,先mark下日后需要改进的地方:
    1.遥控设定时间
    2.闹钟设定


    PS:视频中也提到了Remote的库和Arduino本身的tone函数存在冲突,暂时功力还不够深厚,等日后好好研究一下再改进!
    鄙人不才,还望各位大神指点!另真心感谢极客工坊提供这么好的学习平台!  

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2012-9-13 23:17:46 | 显示全部楼层
你的时钟模块是在信德电子买的吧?哈哈
回复 支持 反对

使用道具 举报

发表于 2012-9-14 11:07:17 | 显示全部楼层
还不错啊,学习了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-14 11:20:21 | 显示全部楼层
Randy 发表于 2012-9-13 23:17
你的时钟模块是在信德电子买的吧?哈哈

老大,这你也看得出来?.....佩服
回复 支持 反对

使用道具 举报

发表于 2012-9-14 12:33:08 | 显示全部楼层
但丁 发表于 2012-9-14 11:20
老大,这你也看得出来?.....佩服

呵呵,逛多了就觉得熟悉了!
回复 支持 反对

使用道具 举报

发表于 2012-9-14 13:07:20 | 显示全部楼层
找个时间试试,不错。
回复 支持 反对

使用道具 举报

发表于 2012-9-16 21:02:55 | 显示全部楼层
还不错了~!~
回复 支持 反对

使用道具 举报

发表于 2012-9-17 16:22:17 | 显示全部楼层
求一下原理图或接线图,程序里我不会看啊,谢谢
回复 支持 反对

使用道具 举报

发表于 2012-12-7 16:07:17 | 显示全部楼层
有点晕,留爪慢慢学习
回复 支持 反对

使用道具 举报

发表于 2012-12-31 10:19:48 | 显示全部楼层
秒有点快啊
回复 支持 反对

使用道具 举报

发表于 2013-1-16 13:00:17 | 显示全部楼层
一个月就能搞定啊
回复 支持 反对

使用道具 举报

发表于 2013-1-16 19:46:27 | 显示全部楼层
逆天的超长无注释代码啊。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-1-16 19:56:12 | 显示全部楼层
本帖最后由 ttyp 于 2013-1-16 19:58 编辑

原来有人做了啊,我还做了一个呢不过我用的是1307+DHT11,有时间设置和温度和湿度
回复 支持 反对

使用道具 举报

发表于 2013-2-1 20:16:42 | 显示全部楼层
有空模仿一个,谢谢了!
回复 支持 反对

使用道具 举报

发表于 2013-2-2 15:04:04 | 显示全部楼层
谢谢楼主,学习了,因现有的苹果遥控器闲置,所以模仿了楼主的代码,用它遥控小表,兼职遥控个电视啥的。
主要硬件:arduino uno,一样的液晶屏和时间模块,红外收发头,蜂鸣器,sht10温湿度传感器。

  1. #define menu   0x77E1406A
  2. #define up     0x77E1D06A
  3. #define down   0x77E1B06A
  4. #define left   0x77E1106A
  5. #define right  0x77E1E06A
  6. #define center 0x77E1BA6A
  7. #define play   0x77E17A6A
  8. #include <IRremote.h>
  9. int RECV_PIN = 5;
  10. IRrecv irrecv(RECV_PIN);
  11. decode_results results;
  12. IRsend irsend;
  13. int Model;

  14. #include <Wire.h>
  15. #include <LiquidCrystal_I2C.h>
  16. #include <SHT1x.h>
  17. #include <DS1302.h>
  18. uint8_t CE_PIN   = 12;
  19. uint8_t IO_PIN   = 11;
  20. uint8_t SCLK_PIN = 10;
  21. DS1302 rtc(CE_PIN,IO_PIN,SCLK_PIN);
  22. char yearmonthday[20];
  23. char hourminutesecond[10];
  24. char day[10];
  25. byte one[8]={
  26.   B11111,B11111,B00000,B11111,B11111,B00000,B11111,B11111};                                          
  27. byte two[8]={
  28.   B11111,B11111,B00000,B00000,B00000,B00000,B00000,B00000};
  29. byte three[8]={
  30.   B00000,B00000,B00000,B00000,B00000,B00000,B11111,B11111};
  31. byte four[8]={
  32.   B11111,B11111,B00000,B00000,B00000,B00000,B11111,B11111};
  33. byte five[8]={
  34.   B11111,B11111,B00000,B00000,B00000,B00000,B00000,B11111};
  35. byte six[8]={
  36.   B11111,B00000,B00000,B00000,B00000,B00000,B11111,B11111};
  37. byte seven[8]={
  38.   B00000,B00000,B00000,B11111,B11111,B00000,B00000,B00000};
  39. byte zero[8]={
  40.   B00000,B00000,B00000,B00000,B00000,B00000,B00000,B00000};

  41. // Specify data and clock connections and instantiate SHT1x object
  42. #define dataPin  8
  43. #define clockPin 9
  44. int BeepPin = 7;        // 指定有源蜂鸣器输出端口
  45. int buttonPin = 6;

  46. SHT1x sht1x(dataPin, clockPin);
  47. LiquidCrystal_I2C lcd(0x27,16,2);  //set the LCD address to 0x27 for a 16 chars and 2 line display

  48. int ledPin = 13;
  49. int menu_status = 0;
  50. int center_status= 0;

  51. void setup()
  52. {
  53.   lcd.init();
  54.   delay(2000);
  55.   lcd.init();
  56.   lcd.backlight();
  57.   lcd.clear();
  58.   lcd.createChar(1,one);             //displayModel2
  59.   lcd.createChar(2,two);
  60.   lcd.createChar(3,three);
  61.   lcd.createChar(4,four);
  62.   lcd.createChar(5,five);
  63.   lcd.createChar(6,six);
  64.   lcd.createChar(7,seven);  
  65.   lcd.createChar(8,zero);

  66.   Serial.begin(9600);
  67.   
  68.   pinMode(buttonPin, INPUT);   
  69.   pinMode(BeepPin, OUTPUT);
  70.   beep_long();                      //蛐蛐开叫,证明系统运行。
  71.   delay(1000);
  72.   beep_short();

  73.   irrecv.enableIRIn(); // Start the receiver
  74. }
  75. void loop()
  76. {
  77.   receiver();
  78.   if(Model==1)
  79.   {
  80.     displayModel1();
  81.   }  
  82.   else
  83.   {
  84.     displayModel2();
  85.   }
  86. //*******************************************        
  87.        // delay(1000);
  88. }

  89. void timeandtempDisplay()
  90. {
  91.   Time t=rtc.time();
  92.   memset(day,0, sizeof(day));
  93.   switch (t.day)
  94.   {
  95.   case 1:
  96.     strcpy(day, "Sun");
  97.     break;
  98.   case 2:
  99.     strcpy(day, "Mon");
  100.     break;
  101.   case 3:
  102.     strcpy(day, "Tue");
  103.     break;
  104.   case 4:
  105.     strcpy(day, "Wed");
  106.     break;
  107.   case 5:
  108.     strcpy(day, "Thr");
  109.     break;
  110.   case 6:
  111.     strcpy(day, "Fri");
  112.     break;
  113.   case 7:
  114.     strcpy(day, "Sat");
  115.     break;
  116.   }
  117.   snprintf(yearmonthday, sizeof(yearmonthday), "%04d/%02d/%02d",t.yr,t.mon,t.date);
  118.   snprintf(hourminutesecond,sizeof(hourminutesecond),"%02d:%02d:%02d",t.hr, t.min, t.sec);
  119.   lcd.setCursor(0,0);
  120.   lcd.print(yearmonthday);
  121.   lcd.setCursor(13,0);
  122.   lcd.print(day);  
  123.   lcd.setCursor(0,1);
  124.   tempDisplay();
  125.   lcd.setCursor(8,1);
  126.   lcd.print(hourminutesecond);
  127. }

  128. void tempDisplay()
  129. {  
  130.   float  temp = sht1x.readTemperatureC();
  131.   int temperature=temp;
  132.   lcd.print(temperature);
  133.   lcd.write(0xDF);
  134. //  lcd.print("c");
  135. //**********************
  136.   float  hum = sht1x.readHumidity();
  137.   int humidity=hum;
  138.   lcd.print(humidity);
  139. }

  140. void beep_long(){                    //蛐蛐叫声,表示错误。
  141.   for(int j=0;j<3;j++){
  142.     for(int i=0;i<5;i++){
  143.       digitalWrite(BeepPin, HIGH);   
  144.       delay(20);         
  145.       digitalWrite(BeepPin, LOW);   
  146.       delay(20);              
  147.     }
  148.     delay(800);              
  149.   }
  150. }

  151. void beep_short(){                  //蛐蛐叫声,表示成功。
  152.   for(int j=0;j<2;j++){
  153.     for(int i=0;i<2;i++){
  154.       digitalWrite(BeepPin, HIGH);  
  155.       delay(20);            
  156.       digitalWrite(BeepPin, LOW);   
  157.       delay(20);            
  158.     }
  159.     delay(500);   
  160.   }
  161. }

  162. void receiver(){
  163.    if (irrecv.decode(&results))
  164.   {
  165.      Serial.println(results.value, HEX);
  166.      switch (results.value)
  167.      {
  168. //*****************************0media
  169.        case menu:
  170.        if(menu_status==0)
  171.       {
  172.       Model=1;
  173.       lcd.clear();
  174.       menu_status=1;
  175.       //****************
  176.      for (int i = 0; i < 3; i++) {
  177.       irsend.sendSony(0xa50, 12);
  178.       delay(50);
  179.     }
  180.    
  181.     delay(500);
  182.       }
  183.       else if(menu_status==1)
  184.       {
  185.        Model=2;
  186.        lcd.clear();
  187.        menu_status=0;
  188.        //****************
  189.       for (int i = 0; i < 3; i++) {
  190.       irsend.sendSony(0xa50, 12);
  191.       delay(50);}
  192.       }   
  193.          
  194.       irrecv.enableIRIn();
  195.       break;
  196.       //*****************************play
  197.        case play:  
  198.           delay(200);
  199.      
  200.      for (int i = 0; i < 3; i++) {
  201.       irsend.sendSony(0xa90, 12);
  202.       delay(50);
  203.     }
  204.    
  205.       delay(500);      
  206.       irrecv.enableIRIn();
  207.       break;     
  208.       //*****************************center
  209.        case center:  
  210.       if(center_status==0)
  211.       {
  212.       lcd.noBacklight();
  213.       center_status=1;
  214.       }
  215.       else if(center_status==1)
  216.       {
  217.        lcd.backlight();
  218.        center_status=0;
  219.       }
  220.       irrecv.enableIRIn();
  221.       break;
  222.      //*****************************left
  223.     case left:  
  224.      delay(100);
  225.       irsend.sendNEC(0x801FE817, 32);
  226.    
  227.     delay(500);
  228.     irrecv.enableIRIn();
  229.     break;
  230.    //*****************************right
  231.     case right:  
  232.      delay(100);
  233.      irsend.sendNEC(0x801F58A7, 32);
  234.    
  235.     delay(500);
  236.     irrecv.enableIRIn();
  237.     break;
  238.     //*****************************
  239.         case up:  
  240.      delay(50);
  241.      
  242.      for (int i = 0; i < 3; i++) {
  243.       irsend.sendSony(0x490, 12); // Sony TV power code
  244.       delay(50);
  245.     }
  246.    
  247.     delay(500);
  248.     irrecv.enableIRIn();
  249.     break;
  250. //*****************************3down
  251.     case down:  
  252.      delay(50);
  253.      
  254.      for (int i = 0; i < 3; i++) {
  255.       irsend.sendSony(0xc90, 12); // Sony TV power code
  256.       delay(50);
  257.     }
  258.    
  259.     delay(500);
  260.     irrecv.enableIRIn();
  261.     break;
  262.    //*********************************
  263.     }
  264.    irrecv.resume(); // Receive the next value
  265.   }
  266. }
  267. void displayModel1()
  268. {
  269.   timeandtempDisplay();
  270. }
  271. void displayModel2()
  272. {  
  273.   minuteDisplay();  
  274.   hourDisplay();   
  275. }

  276. void hourDisplay()
  277. {
  278.   Time t=rtc.time();
  279.   int hour=t.hr;  
  280.   if(hour<12&hour>0)
  281.   {   
  282.     int houra=hour/10;
  283.     int hourb=hour%10;
  284.     if(hour>0&hour<10)
  285.     {
  286.       numberDisplay(10,-1,0);
  287.       numberDisplay(hour,3,0);      
  288.     }
  289.     else
  290.     {
  291.       numberDisplay(houra,-1,0);
  292.       numberDisplay(hourb,3,0);
  293.     }
  294.     amDisplay();   
  295.   }
  296.   else if(hour>12&hour<24)
  297.   {     
  298.     hour=hour-12;
  299.     int houra=hour/10;
  300.     int hourb=hour%10;
  301.     if(hour>0&hour<10)
  302.     {
  303.       numberDisplay(10,-1,0);
  304.       numberDisplay(hour,3,0);      
  305.     }
  306.     else
  307.     {
  308.       numberDisplay(houra,-1,0);
  309.       numberDisplay(hourb,3,0);
  310.     }
  311.     pmDisplay();
  312.   }
  313.   else if(hour<1)
  314.   {     
  315.     numberDisplay(1,-1,0);
  316.     numberDisplay(2,3,0);
  317.     amDisplay();
  318.   }
  319.   else if (hour==12)
  320.   {
  321.     numberDisplay(0,3,0);
  322.     pmDisplay();
  323.   }
  324. }

  325. void minuteDisplay()
  326. {
  327.   Time t=rtc.time();
  328.   int minute=t.min;
  329.   int minutea=minute/10;
  330.   int minuteb=minute%10;
  331.   if(minute>=10)
  332.   {
  333.     numberDisplay(minutea,9,0);
  334.     numberDisplay(minuteb,13,0);
  335.   }
  336.   else  
  337.   {
  338.     numberDisplay(0,9,0);
  339.     numberDisplay(minuteb,13,0);
  340.   }
  341. }

  342. void numberDisplay(int i,int cols,int rows)
  343. {
  344.   switch(i)
  345.   {
  346.   case 0:
  347.     zeroDisplay(cols,rows);
  348.     break;
  349.   case 1:
  350.     oneDisplay(cols,rows);
  351.     break;
  352.   case 2:
  353.     twoDisplay(cols,rows);
  354.     break;
  355.   case 3:
  356.     threeDisplay(cols,rows);
  357.     break;
  358.   case 4:
  359.     fourDisplay(cols,rows);
  360.     break;
  361.   case 5:
  362.     fiveDisplay(cols,rows);
  363.     break;
  364.   case 6:
  365.     sixDisplay(cols,rows);
  366.     break;
  367.   case 7:
  368.     sevenDisplay(cols,rows);
  369.     break;
  370.   case 8:
  371.     eightDisplay(cols,rows);
  372.     break;
  373.   case 9:
  374.     nineDisplay(cols,rows);
  375.     break;
  376.   case 10:
  377.     nullDisplay(cols,rows);
  378.     break;
  379.   }
  380. }

  381. void zeroDisplay(int col, int row)
  382. {
  383.   lcd.setCursor(col,row);
  384.   lcd.write(1);
  385.   lcd.setCursor(col+1,row);
  386.   lcd.write(2);
  387.   lcd.setCursor(col+2,row);
  388.   lcd.write(1);
  389.   lcd.setCursor(col,row+1);
  390.   lcd.write(1);
  391.   lcd.setCursor(col+1,row+1);
  392.   lcd.write(3);
  393.   lcd.setCursor(col+2,row+1);
  394.   lcd.write(1);
  395. }

  396. void oneDisplay(int col, int row)
  397. {
  398.   lcd.setCursor(col,row);
  399.   lcd.write(8);
  400.   lcd.setCursor(col+1,row);
  401.   lcd.write(1);
  402.   lcd.setCursor(col+2,row);
  403.   lcd.write(8);
  404.   lcd.setCursor(col,row+1);
  405.   lcd.write(8);
  406.   lcd.setCursor(col+1,row+1);
  407.   lcd.write(1);
  408.   lcd.setCursor(col+2,row+1);
  409.   lcd.write(8);
  410. }


  411. void twoDisplay(int col, int row)
  412. {
  413.   lcd.setCursor(col,row);
  414.   lcd.write(2);
  415.   lcd.setCursor(col+1,row);
  416.   lcd.write(2);
  417.   lcd.setCursor(col+2,row);
  418.   lcd.write(1);
  419.   lcd.setCursor(col,row+1);
  420.   lcd.write(1);
  421.   lcd.setCursor(col+1,row+1);
  422.   lcd.write(4);
  423.   lcd.setCursor(col+2,row+1);
  424.   lcd.write(4);
  425. }

  426. void threeDisplay(int col, int row)
  427. {
  428.   lcd.setCursor(col,row);
  429.   lcd.write(4);
  430.   lcd.setCursor(col+1,row);
  431.   lcd.write(4);
  432.   lcd.setCursor(col+2,row);
  433.   lcd.write(1);
  434.   lcd.setCursor(col,row+1);
  435.   lcd.write(3);
  436.   lcd.setCursor(col+1,row+1);
  437.   lcd.write(3);
  438.   lcd.setCursor(col+2,row+1);
  439.   lcd.write(1);
  440. }

  441. void fourDisplay(int col, int row)
  442. {
  443.   lcd.setCursor(col,row);
  444.   lcd.write(1);
  445.   lcd.setCursor(col+1,row);
  446.   lcd.write(8);
  447.   lcd.setCursor(col+2,row);
  448.   lcd.write(1);
  449.   lcd.setCursor(col,row+1);
  450.   lcd.write(2);
  451.   lcd.setCursor(col+1,row+1);
  452.   lcd.write(2);
  453.   lcd.setCursor(col+2,row+1);
  454.   lcd.write(1);
  455. }

  456. void fiveDisplay(int col, int row)
  457. {
  458.   lcd.setCursor(col,row);
  459.   lcd.write(1);
  460.   lcd.setCursor(col+1,row);
  461.   lcd.write(4);
  462.   lcd.setCursor(col+2,row);
  463.   lcd.write(4);
  464.   lcd.setCursor(col,row+1);
  465.   lcd.write(3);
  466.   lcd.setCursor(col+1,row+1);
  467.   lcd.write(3);
  468.   lcd.setCursor(col+2,row+1);
  469.   lcd.write(1);
  470. }

  471. void sixDisplay(int col, int row)
  472. {
  473.   lcd.setCursor(col,row);
  474.   lcd.write(1);
  475.   lcd.setCursor(col+1,row);
  476.   lcd.write(2);
  477.   lcd.setCursor(col+2,row);
  478.   lcd.write(2);
  479.   lcd.setCursor(col,row+1);
  480.   lcd.write(1);
  481.   lcd.setCursor(col+1,row+1);
  482.   lcd.write(4);
  483.   lcd.setCursor(col+2,row+1);
  484.   lcd.write(1);
  485. }

  486. void sevenDisplay(int col, int row)
  487. {
  488.   lcd.setCursor(col,row);
  489.   lcd.write(2);
  490.   lcd.setCursor(col+1,row);
  491.   lcd.write(2);
  492.   lcd.setCursor(col+2,row);
  493.   lcd.write(1);
  494.   lcd.setCursor(col,row+1);
  495.   lcd.write(8);
  496.   lcd.setCursor(col+1,row+1);
  497.   lcd.write(8);
  498.   lcd.setCursor(col+2,row+1);
  499.   lcd.write(1);
  500. }

  501. void eightDisplay(int col, int row)
  502. {
  503.   lcd.setCursor(col,row);
  504.   lcd.write(1);
  505.   lcd.setCursor(col+1,row);
  506.   lcd.write(5);
  507.   lcd.setCursor(col+2,row);
  508.   lcd.write(1);
  509.   lcd.setCursor(col,row+1);
  510.   lcd.write(1);
  511.   lcd.setCursor(col+1,row+1);
  512.   lcd.write(6);
  513.   lcd.setCursor(col+2,row+1);
  514.   lcd.write(1);
  515. }

  516. void nineDisplay(int col, int row)
  517. {
  518.   lcd.setCursor(col,row);
  519.   lcd.write(1);
  520.   lcd.setCursor(col+1,row);
  521.   lcd.write(4);
  522.   lcd.setCursor(col+2,row);
  523.   lcd.write(1);
  524.   lcd.setCursor(col,row+1);
  525.   lcd.write(3);
  526.   lcd.setCursor(col+1,row+1);
  527.   lcd.write(3);
  528.   lcd.setCursor(col+2,row+1);
  529.   lcd.write(1);
  530. }

  531. void nullDisplay(int col,int row)
  532. {
  533.   lcd.setCursor(col,row);
  534.   lcd.write(8);
  535.   lcd.setCursor(col+1,row);
  536.   lcd.write(8);
  537.   lcd.setCursor(col+2,row);
  538.   lcd.write(8);
  539.   lcd.setCursor(col,row+1);
  540.   lcd.write(8);
  541.   lcd.setCursor(col+1,row+1);
  542.   lcd.write(8);
  543.   lcd.setCursor(col+2,row+1);
  544.   lcd.write(8);
  545. }


  546. void amDisplay()
  547. {
  548.   lcd.setCursor(7,0);
  549.   lcd.print('a');
  550.   lcd.setCursor(7,1);
  551.   lcd.print('m');
  552.   delay(500);
  553.   lcd.setCursor(7,0);
  554.   lcd.write(8);
  555.   lcd.setCursor(7,1);
  556.   lcd.write(8);
  557.   delay(500);
  558. }

  559. void pmDisplay()
  560. {
  561.   lcd.setCursor(7,0);
  562.   lcd.print('p');
  563.   lcd.setCursor(7,1);
  564.   lcd.print('m');
  565.   delay(500);
  566.   lcd.setCursor(7,0);
  567.   lcd.write(8);
  568.   lcd.setCursor(7,1);
  569.   lcd.write(8);
  570.   delay(500);
  571. }
复制代码
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 14:39 , Processed in 0.050041 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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