Arduino_OLED电子时钟
好久之前入手了一个高精度时钟模块DS3231,之后就一直闲置着。国庆实在是太闲,收拾东西的时候找出来了,就想着做一个电子时钟测试一下这个时钟模块准不准吧。
材料:Arduino Uno, 面包板, DS3231, 12864的OLED屏
原理什么的就不细讲了,很简单的。先初始化DS3231,这个时钟模块断电以后还可以计时,先用串口给一个精确的时间,然后加上OLED,每隔500ms(考虑到程序运行时间不能设置为1000ms,否则不一定每秒都会更新,不过还是会有一丢丢的显示误差)读取一次时间,并输出在OLED上。
DS3231的使用方法可见卖家的资料,在DS3231.c和DS3231.h上有会用到的函数,简单易懂。
OLED的使用方法网上很多的,而且这次只是显示字符而已,请自行查阅。
连线的话(OLED与DS3231接线相同):
5V —— VCC
GND —— GND
A4 —— SDA
A5 —— SCL
另:
本人使用的DS3231和OLED均使用IIC通信,IIC通信是可以串联多个设备的,但一定要保证各个设备的地址是不一样的。地址可以在对应的库文件里面找到,一般是一个名为 xxx_ADDRESS的宏定义。找不到的话可自行百度“Arduino IIC 地址扫描”。
代码如下
#include <DS3231.h>
#include "U8glib.h"DS3231 rtc(SDA, SCL);
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);void Init(int y,int mmon,int d,int h,int mmin,int s)
{rtc.setTime(h,mmin,s);rtc.setDate(d,mmon,y);rtc.setDOW();
}
void draw()
{/*char data[10];char week[10];char t[8];data = rtc.getDateStr(FORMAT_LONG,FORMAT_BIGENDIAN,'.');week = rtc.getDOWStr(FORMAT_SHORT);t = rtc.getTimeStr(FORMAT_LONG);*/u8g.setFont(u8g_font_unifont);u8g.setFontPosTop();u8g.setPrintPos(0, 0); u8g.print(rtc.getDateStr(FORMAT_LONG,FORMAT_BIGENDIAN,'.') );u8g.setPrintPos(100, 0); u8g.print(rtc.getDOWStr(FORMAT_SHORT) );u8g.setPrintPos(35, 40); u8g.print(rtc.getTimeStr(FORMAT_LONG) );
}
void setup() {// put your setup code here, to run once:Serial.begin(115200);rtc.begin();// Init(2019,10,6,20,1,50);}
void loop() {u8g.firstPage(); do {draw();} while( u8g.nextPage() );delay(500);
}
最终运行效果如图:
Arduino_OLED电子时钟相关推荐
- 用easyx画电子钟_Canvas入门-利用Canvas绘制好玩的电子时钟
在这之前 你需要了解一下方法的使用: beginPath() closePath() moveTo() lineTo() fill() stroke() fillRect() clearRect() ...
- c语言实验报告世界时钟,基于LCD的电子时钟实验报告.doc
PAGE \* MERGEFORMAT 3 河海大学物联网工程学院 课程设计报告 题 目 基于LCD的电子时钟实验 专业.学号 电信 . 授课班号 完成时间 2013.07.05 课程设计(报告)任务 ...
- Canvas入门-利用Canvas绘制好玩的电子时钟
在这之前 你需要了解一下方法的使用: beginPath() closePath() moveTo() lineTo() fill() stroke() fillRect() clearRect() ...
- 电子时钟单片机c语言程序,51单片机电子时钟C语言程序
本程序基于ATM89系列单片机的电子时钟C语言程序,能显示月日时分秒,同时还能调节其值!显示方式用六个8段数码管! #include//头文件 #define uchar unsigned char/ ...
- JavaBean网页电子时钟
package com.bean;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date ...
- python数码时钟代码_Python+Pyqt实现简单GUI电子时钟
本文实例为大家分享了Python+Pyqt实现简单GUI电子时钟的具体代码,供大家参考,具体内容如下 突发奇想想用GUI做一个简单的电子时钟界面,利用pyqt模块也很方便,代码如下: from PyQ ...
- ntp如何确认与服务器偏差_LED电子时钟显示屏如何实现时间同步统一校时?
LED电子时钟显示屏采用一体式铝合金边框设计,更坚固美观节能环保,更以其简单的操作和稳定的性能,广泛应用于学校.考场.医院.金融.移动通信.石油.电力.交通.工业以及国防等同步时钟系统的显示终端,LE ...
- C语言/C++程序员大神打造纯C的电子时钟(加图形库+源码)
C语言/C++程序员大神打造纯C的电子时钟,每天看时间再也不麻烦了 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进 ...
- Web前端基础---JQuery的页面加载+选择器+电子时钟案例
jQuery jQuery的页面加载 <!DOCTYPE html> <html><head><meta charset="UTF-8"& ...
最新文章
- iOs 自定义UIView 日历的实现 Swift2.1
- GIF Movie Gear V4.2.3 破解版
- 实验五 数据库完整性技术
- 牛客网 小白赛4 A三角形【贪心】
- boost::function_types::function_arity用法的测试程序
- 光学字符识别 android,基于Android的光学字符识别研究与实现
- c语言中代码参数太少,C语言不定参数探究
- android 实现 效果代码,Android实现雷达View效果的示例代码
- 小技巧 ----- 关于Java中的System.arraycopy()
- oracle报错ORA-01843: not a valid month
- Linux Sentaurus-Silvaco虚拟机使用方法
- 运维安全操作建议规范手册
- Java 编程要点之并发(Concurrency)详解
- 路由器上DHCP配置 及单臂路由
- 用计算机对视频进行剪裁和编辑,Win10系统剪裁视频功能怎么用?windows10剪裁视频功能使用方法介绍...
- 关于linux下的嵌入式文件系统以及flash文件系统选择(转)
- 手机信息采集 ——基于ebay网站Apple手机案例分析
- 项目系统设计与数据库设计(那周余嘉熊掌将得队)
- mac kendryte使用model-cmpiler运行kpu-demo
- Linux系统ORACLE 19C OEM监控管理