数码之家

 找回密码
 立即注册
搜索
查看: 2785|回复: 11

[Arduino] 也做一个钟 tiny85 ds3231 tm1637 震动提醒时钟

[复制链接]
发表于 2019-9-18 16:17:49 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

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

x

1

1

3

3

2

2

4

4

微信图片_201909181610444.jpg

微信图片_20190918161045.jpg

6

6

微信图片_201909181610446.jpg
微信图片_201909181610447.jpg
微信图片_201909181610452.jpg

弄完半夜了,楼下更新电路图和代码

打赏

参与人数 1家元 +30 收起 理由
家睦 + 30

查看全部打赏

 楼主| 发表于 2019-9-18 16:18:30 | 显示全部楼层
沙发自己坐
回复 支持 反对

使用道具 举报

发表于 2019-9-18 20:06:01 来自手机浏览器 | 显示全部楼层
没有电路图?没有代码?主控是啥?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-18 21:15:09 | 显示全部楼层
触景情伤 发表于 2019-9-18 20:06
没有电路图?没有代码?主控是啥?

attiny85+ds3231+tm1637+震动模块,忘了附代码了,稍等
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-18 21:18:40 | 显示全部楼层
  1. #include <Arduino.h>
  2. #include <TM1637Display.h>

  3. // Module connection pins (Digital Pins)
  4. #define CLK 4
  5. #define DIO 3

  6. #define SPK 1


  7. #include <Wire.h>
  8. #include <DS3231.h>

  9. DS3231 clock;
  10. RTCDateTime dt;


  11. TM1637Display display(CLK, DIO);


  12. char kk = 0;
  13. char kkst = 0;
  14. char numtemp = 0;
  15. char k = 0x80;
  16. char jj = 0;
  17. int tpn = 0;
  18. int ckst = 0;

  19. #define TEST_DELAY   500
  20. uint8_t data[] = { 255, 0b10000000, 0, 255 };
  21. uint8_t mddata[] = {255,255,255,255};

  22. void setup()
  23. {

  24.   clock.begin();

  25.   pinMode(SPK,OUTPUT);

  26.   // Set sketch compiling time
  27.   //设置电脑时间校准
  28.   /*
  29.     clock.setDateTime(__DATE__, __TIME__);
  30.     dt = clock.getDateTime();
  31.     clock.setDateTime(dt.year,dt.month,dt.day, dt.hour,dt.minute,dt.second+6 );
  32.   */
  33.   display.setBrightness(0, true);

  34. }

  35. void loop()
  36. {
  37.   dt = clock.getDateTime();


  38.   if( (dt.hour == 9 && dt.minute >= 15 && dt.minute < 17) || (dt.hour == 11 && dt.minute >= 50 && dt.minute < 52) || (dt.hour == 11 && dt.minute >= 55 && dt.minute < 57) || (dt.hour == 13 && dt.minute >= 30 && dt.minute < 32) || (dt.hour == 16 && dt.minute >= 50 && dt.minute < 52) || (dt.hour == 16 && dt.minute >= 55 && dt.minute < 57) ){
  39.     ckst = 1;

  40.   }else{

  41.     ckst = 0;
  42.   }

  43.   numtemp = ceil(dt.hour / 10);
  44.   data[0] = display.encodeDigit(numtemp);

  45.   numtemp = dt.hour - numtemp * 10;
  46.   data[1] = display.encodeDigit(numtemp) | k;

  47.   numtemp = ceil(dt.minute / 10);
  48.   data[2] = display.encodeDigit(numtemp);

  49.   numtemp = dt.minute - numtemp * 10;
  50.   data[3] = display.encodeDigit(numtemp);

  51.   if(jj == 6)jj =0;
  52.   if(jj >= 5 && jj < 6){

  53.     clock.forceConversion();
  54.     tpn = ceil(clock.readTemperature());
  55.     numtemp = ceil(tpn / 10);
  56.     data[0] = display.encodeDigit(numtemp);
  57.     numtemp = tpn - numtemp * 10;
  58.     data[1] = display.encodeDigit(numtemp);
  59.     data[2] = SEG_A | SEG_B | SEG_G | SEG_F;
  60.     data[3] = SEG_A | SEG_D | SEG_E | SEG_F;
  61.     display.setSegments(data);

  62.   }else{
  63.     display.setSegments(data);
  64.     clock.getDateTime();
  65.   }



  66.   kk++;
  67.     if(ckst == 1){

  68.         if(kkst == 1){
  69.           digitalWrite(SPK, HIGH);
  70.         }else{
  71.           digitalWrite(SPK, LOW);
  72.         }  

  73.     }else{
  74.       digitalWrite(SPK, LOW);
  75.     }

  76.   if(kk % 6 == 0){
  77.     kkst  = 0;
  78.   }
  79.   if(kk % 12 == 0){
  80.     kkst = 1;
  81.   }
  82.    
  83.   if (kk > 20) {
  84.     k = 0;


  85.   }
  86.   if (kk >= 40) {
  87.     k = 0x80;
  88.     kk = 0;


  89.    
  90.     jj++;
  91.   }


  92. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-18 22:30:36 | 显示全部楼层

1

1

2

2

tiny85的usb用于烧代码的时候 引脚不要接到ds3231上 另外reset脚如果要用做io的话就要想办法自己可以对芯片再编程

打赏

参与人数 1家元 +100 收起 理由
家睦 + 100

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-9-18 22:43:26 来自手机浏览器 | 显示全部楼层
这玩意是啊读有诺?
回复 支持 反对

使用道具 举报

发表于 2019-9-19 08:45:22 | 显示全部楼层
ds3231接5v走时会快的,要接3.3v啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-19 09:39:27 | 显示全部楼层
zyc1 发表于 2019-9-19 08:45
ds3231接5v走时会快的,要接3.3v啊。

模块内置是接3.3v的,之前另一块用51接的也是5v忘了是慢还是快了,回头还是改成3.3的吧,之前由于3.3的芯片没到直接接5v的了 ,再请教个问题,我用8266的ntp获取时间会比正常时间慢2秒 ntp不是会把网络延时加入计算么怎么会又延时呢
回复 支持 反对

使用道具 举报

发表于 2019-11-17 10:04:45 | 显示全部楼层

1637的代码呢?能发上来吗,写了个1637的代码数据总是滚动显示。真让人头大。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 19:15:37 | 显示全部楼层
hlt253 发表于 2019-11-17 10:04
1637的代码呢?能发上来吗,写了个1637的代码数据总是滚动显示。真让人头大。 ...

1637好像是github找的,现在记不得放哪里了
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-26 23:57 , Processed in 0.374400 second(s), 18 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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