You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoTcat 383c7d6f4e try 5 years ago
docs try 5 years ago
pic classify pic 5 years ago
CNAME Update CNAME 5 years ago
LICENSE Initial commit 5 years ago
README.md Update README.md 5 years ago
_config.yml Set theme jekyll-theme-cayman 5 years ago
digital-clock.ino add debug mode 5 years ago
digital-screen.h add debug mode 5 years ago
ovo.h ini 5 years ago
switch.h fix reset 5 years ago

README.md

digital-clock

本项目旨在帮助同学们快速完成EEE116数字时钟的代码开发。

先觉条件(非常重要!!任何一条不满足你的代码就无法运行)

  • 新版Arduino可能无法运行,请使用1.8.5版本(下载地址:win / mac)
  • 下载并解压代码到本地(代码下载戳这里)
  • 请务必先解压,否则代码无法运行
  • 请保证包含代码文件的文件夹名称为digital-clock

相关资料

效果图

Demo_effect

电路实物图

请参考以下图片搭建你的电路! One Demo of Circuit

Arduino Nano推荐连法

Arduino Nano

译码器连法

译码器与显示器连法(由番茄树同学提供) Circuit of dicoder and screen 更多资料请查看附录译码器电路示意图

开关电路说明

  • 说三遍:开关是有方向的,开关是有方向的,开关是有方向的
  • 请务必保证开关上有突起的一面朝左
  • 开关的具体接法可参考以下两张图 swi pic up swi pic down
  • 在参考接法中,左边的开关用于暂停,右边的开关用于重置

快速开始

  • 用Arduino IDE打开digital-clock.ino文件
  • 根据需求编辑代码第22-50行的定义初始参数部分,比如修改小组组号。具体见参数说明
  • 请不要使用Arduino Nano的D0,D1,D2端口!!
  • 代码其它部分如不明白请不要改动
  • 之后正常编译上传即可。如果编译或上传失败,请到下文Q&A中寻找自己的问题!
  • 如果上传后你的时钟正常运行,那么恭喜你。否则,请参考下文错误排查方法

错误排查

  1. 去掉代码开头//#define DEBUG_MODE的注释,编译并上传,进入debug模式
  2. 检查你的两个数字屏是否同时按照0-9的顺序循环跳动。如果出现个别数字是乱码,请检查译码器到数字屏的线路。参考:译码器连法,译码器电路示意图, 数字屏电路示意图
  3. 分别长按两个按钮开关,观察arduino板最左边的板载led是否亮起。如果板载led常亮,请检查你的两个开关线路,保证当开关按下时,输出为高电平。
  4. 如果上述测试均通过,请重新注释#define DEBUG_MODE,编译并上传
  5. 如果你的问题仍无法解决,请参考下文Q&A

参数说明

代码注释比较详细,我直接copy过来如下

/*** 定义初始参数 ****/

//小组组号
#define GROUP_ID 22 //计时器增大到此值将重新从零开始
                    //例如此处我的组号是22

//时钟变换时间间隔 (毫秒)
#define INTERVAL_TIME 1000 //默认是1秒

//pin口 - 接译码器1 (显示个位)
#define DIG_1_1 9   //A
#define DIG_1_2 10  //B
#define DIG_1_3 11  //C
#define DIG_1_4 12  //D

//pin口 - 接译码器2 (显示十位)
#define DIG_2_1 5   //A
#define DIG_2_2 6   //B
#define DIG_2_3 7   //C
#define DIG_2_4 8   //D

//pin口 - 接开关
#define SWI_OFF 3

//pin口 - 接reset键
#define SWI_RESET 4

Q&A

代码编译出现错误找不到ovo.h

答:请保证压缩包中所有文件均在一个名为digital-clock的文件夹中!!之后通过arduino打开此文件夹中的digital-clock.ino即可。

编译错误中出现关键词auto

答:请确保你的arduino为1.8.5版本!!(下载地址:win / mac)

上传错误avrdude: ser_open(): can't open device

答:请在上方栏工具中选择指定端口

上传错误avrdude: stk500_recv(): programmer is not responding

答:此错误由先前对端口的非正常操作引起。请尝试重启系统更换电脑解决。

数字时钟显示乱码

答:请先检查译码器与arduino的线路连接是否正确!!(大部分同学问题都出在这里)
请务必保证译码器的 A,B,C,D脚(参考:译码器连法,译码器电路示意图, 数字屏电路示意图)正确地连接到代码中你自定义的pin脚(默认为9,10,11,12和5,6,7,8)
使用debug模式排查线路连接问题!

暂停键没有反应

答:请使用debug模式,观察按下开关时arduino板载led是否亮。详情见上文错误排查部分。

显示屏个位与十位错位

答:两个译码器接反了。换过来即可。

已知bug

  • 部分按钮开关需要长按才能识别
  • reset键不灵敏

更新日志

2019/4/9

  • 修复reset按钮不灵敏的bug
  • 修复时钟显示问题
  • 添加debug模式

背景资料

自豪地引用ovo.h搭建非阻塞Arduino程序框架!

我要参与

如果你认为本项目对你有帮助,请到本页最上方star本项目
如果你希望和我们一起完善本代码,请通过邮箱联系我

开源协议

本项目使用GNU General Public License v3.0开源协议!

附录 - 更多参考电路图片

全局电路鸟瞰图

circuit_overall

译码器电路示意图

decoder_up decoder_down

数字屏电路示意图

screen_left screen_right