在这记录minecraft的点点滴滴。

作者:linfengfeiwu2018-8-5 23:58分类: 笔记 标签: Arduino

这个东西完全是突发奇想,有时候就只想看下今天星期几,离周末还有几天。。。

先上效果图:

微信截图_20180806000606.png

硬件上用的是一个共阴的1.5寸数码管,根据官方引脚资料(下图)接上UNO。

把A至G分别接在D2至D9,1、5接在GND上。

TB2FxelfVXXXXaiXXXXXXXXXXXX_!!2427502002.jpg

然后再接上DS3231模块,用法及库文件见:https://blog.readgroup.cn/post/61

代码:

01#include <Wire.h>
02#include "ds3231_2.h"
03 
04#define BUFF_MAX 128
05 
06uint8_t time[8];
07char recv[BUFF_MAX];
08unsigned int recv_size = 0;
09unsigned long prev, interval = 1000;
10int pinDigitron = 2; //管脚D2连接到数码管的A脚,D3连B... D9连h
11void setup()
12{
13    Serial.begin(9600);
14    Wire.begin();
15    DS3231_init(DS3231_INTCN);
16    memset(recv, 0, BUFF_MAX);
17    Serial.println("GET time");
18     for(int x=0; x<8; x++)
19    pinMode(pinDigitron+x, OUTPUT); //设置各脚为输出状态
20     
21}
22//在数码管中显示数字的函数
23void displayDigit(unsigned char digit) {
24  //定义一个数组表:不同数字的abcdefgh各段的取值
25  unsigned char abcdefgh[][8] = {
26    {1,1,1,1,1,1,0,0},  //0
27    {0,1,1,0,0,0,0,0},  //1
28    {1,1,0,1,1,0,1,0},  //2
29    {1,1,1,1,0,0,1,0},  //3
30    {0,1,1,0,0,1,1,0},  //4
31    {1,0,1,1,0,1,1,0},  //5
32    {1,0,1,1,1,1,1,0},  //6
33    {1,1,1,0,0,0,0,0},  //7
34    
35  };
36   
37  if ( digit >= 16 ) return;
38  for (unsigned char x=0; x<8; x++)
39    digitalWrite( pinDigitron + x, abcdefgh[digit][x] );
40}
41void loop()
42{
43    char in;
44    char buff[BUFF_MAX];
45    unsigned long now = millis();
46    struct ts t;
47 
48    // show time once in a while
49    if ((now - prev > interval) && (Serial.available() <= 0)) {
50        DS3231_get(&t); //Get time
51        displayDigit(t.wday);  //调用displayDigit()子函数,显示数字
52        prev = now;
53    }
54 
55     
56}

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51

已有 0/2387 人参与

发表评论:

欢迎关注本站微信公众号~