查看: 2045|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2021-8-24 16:55:42 | 显示全部楼层 |阅读模式
    分享到:
    在前面的介绍中,曾提供一种以2种模式来显示电子时钟的方法,但它却是基于延时函数来实现的,其实在Wio终端也是可以RTC来实现RTC电子时钟的。
    当然在Wio终端要使用RTC也是需要有相应库来支持的,在下载了该支持库之后,需按图1所示来添加库。
                                  
    1.jpg
    图1 添加库
    在弹出的对话框中,选取图2所示的支持库。
    2.jpg
    图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.jpg
    图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.jpg
    图4 计时效果
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 17:19 , Processed in 0.121492 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.