回答

收藏

[评测分享] [Wio Terminal开发板测评]+RTC电子时钟

#板卡评测 #板卡评测 3443 人阅读 | 0 人回复 | 2021-08-24

在前面的介绍中,曾提供一种以2种模式来显示电子时钟的方法,但它却是基于延时函数来实现的,其实在Wio终端也是可以RTC来实现RTC电子时钟的。
当然在Wio终端要使用RTC也是需要有相应库来支持的,在下载了该支持库之后,需按图1所示来添加库。
                              
图1 添加库
在弹出的对话框中,选取图2所示的支持库。
图2 选取支持库
随后编译并上传程序即可进行检测,其程序内容如下:
  1. #include "RTC_SAMD51.h"
  2. #include "DateTime.h"
  3. RTC_SAMD51 rtc;
  4. void setup()
  5. {
  6. rtc.begin();
  7. Serial.begin(115200);
  8. while (!Serial)
  9. {
  10. ;
  11. }
  12. DateTime now = DateTime(F(__DATE__), F(__TIME__));
  13. Serial.println("adjust time!");
  14. rtc.adjust(now);
  15. now = rtc.now();
  16. Serial.print(now.year(), DEC);
  17. Serial.print('/');
  18. Serial.print(now.month(), DEC);
  19. Serial.print('/');
  20. Serial.print(now.day(), DEC);
  21. Serial.print(" ");
  22. Serial.print(now.hour(), DEC);
  23. Serial.print(':');
  24. Serial.print(now.minute(), DEC);
  25. Serial.print(':');
  26. Serial.print(now.second(), DEC);
  27. Serial.println();
  28. DateTime alarm = DateTime(now.year(), now.month(), now.day(), now.hour(), now.minute(), now.second() + 15);
  29. rtc.setAlarm(0,alarm); // match after 15 seconds
  30. rtc.enableAlarm(0, rtc.MATCH_HHMMSS); // match Every Day
  31. rtc.attachInterrupt(alarmMatch); // callback whlie alarm is match
  32. }
  33. void loop()
  34. {
  35. }
复制代码

该程序的作用为:先调整系统时间并显示时间值, 然后延时15秒钟即发出提示信息,见图3所示。
图3 运行效果
以此外基础,我们可以将它的提示处理改为蜂鸣器的鸣叫,以起到闹钟的作用。
相应的蜂鸣器提示处理程序为:
  1. //  #define WIO_BUZZER (12ul)
  2. //  pinMode(WIO_BUZZER, OUTPUT);
  3. void alarmMatch(uint32_t flag)
  4. {
  5. int n;
  6. Serial.println("Alarm Match!");
  7. DateTime now = rtc.now();
  8. Serial.print(now.year(), DEC);
  9. Serial.print('/');
  10. Serial.print(now.month(), DEC);
  11. Serial.print('/');
  12. Serial.print(now.day(), DEC);
  13. Serial.print(" ");
  14. Serial.print(now.hour(), DEC);
  15. Serial.print(':');
  16. Serial.print(now.minute(), DEC);
  17. Serial.print(':');
  18. Serial.print(now.second(), DEC);
  19. Serial.println();
  20. for(n=0;n<6;n++)   // delay(6000);
  21. {
  22. analogWrite(WIO_BUZZER, 128);
  23. delay(500);
  24. analogWrite(WIO_BUZZER, 0);
  25. delay(500);
  26. }
  27. }
复制代码

另外,为增强使用的灵活性,可通过按键来设置闹钟的延迟时间。
此外,我们还可以将RTC的计时功能同图3所示的显示功能结合起来,以达到时钟显示与闹钟提示并存的效果。
  

图4 计时效果
分享到:
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条