文档章节

Arduino的进阶之路01——I2C四位数码管的简易时钟(原创)

soul董董
 soul董董
发布于 2016/01/28 11:33
字数 716
阅读 221
收藏 0

事先说明,我手上的数码管与其对应的ALPHA的MEGA328-U均来自OCROBOT系列,它的板子都做的非常简单,使用方便,适合新手入门。OCRBOT系列是对Arduino各类开源板子优化的一个系列。
OCROBOT官网:www.ocrobot.com.

OCROBOT淘宝店:www.ocrobot.taobao.com


首先,进行基础连接,用四根公对母的杜邦线将i2c四位数码管与ALPHA MEGA328-U模块连接起来,VCC对5V,GND对GND,C对SCL,D对SDA。
接着,用数据线把ALPHA MEGA328-U模块连接上电脑,并查看端口号。
然后,打开IDE,添加一个驱动库,一个描绘库,编写arduino代码。


#include <Wire.h>
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"
 
Adafruit_7segment matrix = Adafruit_7segment();
 
void setup() {
#ifndef __AVR_ATtiny85__
  Serial.begin(9600);
  Serial.println("7 Segment Backpack Test");
#endif
  matrix.begin(0x70);
}
 
void loop() {
int16_t b=0,day_hour =16;                   //现在是16点,所以改day_hour=16;如果是别的小时,改数字即可。
boolean drawDots = true;
 
for(uint16_t s=12;s<60;s++)                            //这一段是秒的设定,由于秒的定点时间很快,所以需要预估你的速度,以及下载速度,比如现在2s,那么你需要预估一下上传至完成的时间大概多少秒,我预估在10S左右。所以这里就是一个出现误差的关键所在。
        {
          matrix.drawColon(drawDots);
          matrix.writeDisplay();
         if (s%2==0)
        {
          drawDots = false; delay(30);
        }
        else {
         drawDots = true; delay(30);                
       }
         delay(1000);
        } 
for (uint16_t m =31; m <60; m++)             //现在是31分,所以改m=31,如果是别的分,就改数字就可。
   {     b=day_hour*100+m;
         matrix.print(b,DEC);
         matrix.writeDisplay();
        for(uint16_t s=0;s<60;s++)
        {
          matrix.drawColon(drawDots);
          matrix.writeDisplay();
         if (s%2==0)
        {
          drawDots = false; delay(30);
        }
        else {
         drawDots = true; delay(30);
       }
         delay(1000);
        }
   }
for(day_hour =17; day_hour <24; day_hour++ )       //特别提醒,需要将day_hour的时间+1
{      
  for (uint16_t mf =0; mf <60; mf++)
   {     b=day_hour*100+mf;
         matrix.print(b,DEC);
         matrix.writeDisplay();
        for(uint16_t s=0;s<60;s++)
        {
          matrix.drawColon(drawDots);
          matrix.writeDisplay();
         if (s%2==0)
        {
          drawDots = false; delay(30);
        }
        else {
         drawDots = true; delay(30);
       }
         delay(1000);
        }
 
 
   }
  }
for(uint16_t year =0; year <366; year++)                              //这里开始,则开始计时365天
for(uint16_t hour =0; hour <24; hour++ )
{      
  for (uint16_t fen =0; fen <60; fen++)
   {     b=hour*100+fen;
         matrix.print(b,DEC);                                     //显示格式为数字
         matrix.writeDisplay();                                  //描绘
        for(uint16_t s=0;s<60;s++)                          //循环秒
        {
          matrix.drawColon(drawDots);                     //显示冒号
          matrix.writeDisplay();
         if (s%2==0)                                           //如果秒为双数
        {            
          drawDots = false; delay(30);                   //冒号不亮30s
        }
        else {
         drawDots = true; delay(30);                     //否则亮30s
       }
         delay(1000);                                           //整体延时
        }
 
 
  }      
  }  
  }

效果图:


总结说明:
     关于时间,最主要的是误差,秒的误差,这个需要你预估,所以整体来说,误差还是可见的。

      此项目纯属娱乐,实际用途不大,可供参考,绝对原创!

   未经允许,请勿转载!

© 著作权归作者所有

soul董董
粉丝 0
博文 1
码字总数 716
作品 0
程序员
私信 提问
Arduino 入门学习笔记7 I2C LCD1602液晶显示实验 及 超声波传感器距离检测

版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 https://blog.csdn.net/xundh/article/details/83721411 I2C 简介 I2C总线是由Philips公司开发的一种简单、双向二线制同...

谢厂节
2018/11/04
0
0
自制导纳信号发生器 [原创cnblogs.com/helesheng]

最近正在研制一种通过测量人体导纳,估算体内血液变化率,进而评估心血管系统泵血功能的医疗仪器。为测量人体导纳,我们设计了一套巧妙的激励信号幅度反馈电路,该电路由于涉及商业机密就不在...

helesheng
08/04
0
0
Arduino初初教程2——I/O口输出应用

Arduino除了能驱动LED之外,还可以通过I/O输出驱动蜂鸣器和数码管。 LED(发光二极管),能将电能转化为光能,其也具有单向导电性,反向击穿电压约5V。它的正向伏安特性曲线很陡,使用时必须...

小堤
2013/05/28
1K
0
微机原理之跑马灯课程设计设计报告及相关汇编代码

微机原理课程设计 设计报告 花式跑马灯 一、设计目的 1、熟悉Protues ISIS的基本操作,及基本电路绘制; 2、能根据电路修改理解程序; 3、能根据程序分析各种功能; 二、设计内容 用七段数码...

wxx258369
2017/01/01
0
0
AliOS Things手势识别应用演示

1. 概述 手势识别作为一种辅助的人机交互方式,在人机脱离的场景下可以提供方便的交互体验。本文介绍基于AliOS Things + STM32F413H Discovery开发板实现手势交互功能的演示。 2. 环境搭建 ...

玄一
2018/09/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部