基于arduino和I2C接口制作的计数器(原创)

2015-11-304.1万
精华项目
AI 快速预览详细 收起
本文介绍了如何使用Arduino主板和I2C接口制作一个简单的计数器。主要硬件包括一个按钮和一块1.2寸7段数码管。通过中断方式检测按钮信号,并通过防抖动处理确保计数准确。接线方式为将开关的OUT接入D2,VCC接入3.3V,GND接入GND,SCL接入A5,SDA接入A4,VCC接入5V,GND接入GND。这个项目适用于初学者和STEM教育场景,孩子可以轻松完成并展示成果,老师也能直接套用课堂案例。


前几天帮朋友做了一个计数器,非常简单的计数器
我看论坛上还没人发如何制作计数器,所以抛砖引玉下
有人会问这么简单的东西有什么应用啊,哈哈,这个是
韩国的running men,来南京演唱会,这个是给他们
现场做的点赞器。
主要硬件就是一个按钮、一个Arduino主板+一块1.2寸的
7段数码管
基于arduino和I2C接口制作的计数器(原创)图1

制作过程
1、将数码管和arduino连接,由于采用的是I2C接口
所以信号线只需要2根即可实现功能
基于arduino和I2C接口制作的计数器(原创)图2

接线方式
  • "D" - I2C Data Pin (SDA)
  • "C" - I2C Clock Pin (SCL)
  • "+" - 5v. (Will not run on 3.3v!)
  • "-" - GND
  • "IO" - I2C bus voltage
对于uno采用如下接线方式
  • D -> SDA
  • C -> SCL
  • + -> 5v
  • - -> GND
  • IO -> jumper to + for 5v.
代码:

为了检测按钮信号,采用了中断方式
将开关的OUT接入D2
  1. /*接线:
  2. kaiguan
  3. out----D2
  4. vcc ---3.3V
  5. gnd----gnd
  6. sumaguan
  7. scl----a5
  8. sda----a4
  9. vcc----5V
  10. GND----GND
  11. */
  12. #include <Wire.h>
  13. #include "Adafruit_LEDBackpack.h"
  14. #include "Adafruit_GFX.h"
  15. Adafruit_7segment matrix = Adafruit_7segment();
  16. long count=0 ;
  17. unsigned long time = 0;
  18. void setup() {
  19.    matrix.begin(0x70);
  20.   Serial.begin(9600);
  21.    attachInterrupt(0, runCount, FALLING);    //设置触发,中断号0,即数字2口
  22.   // put your setup code here, to run once:
  23. }
  24. void loop() {
  25.   Serial.println(count);
  26.   matrix.print(count, DEC);
  27.   matrix.writeDisplay();
  28.   delay(500);
  29.   // put your main code here, to run repeatedly:
  30. }
  31. void runCount()            //触发函数
  32. {
  33. if ((millis() - time) > 150) //防抖动处理
  34. {
  35.     count ++;
  36.       //for(int i = 0; i < 4; i++) {
  37.        //  EEPROM.write(i,  *dpointer);
  38.         
  39.       //   dpointer++;
  40.      // }
  41. }
  42. time = millis();
  43. }
复制代码
下面的附件是程序中涉及的库文件
下载附件Adafruit-GFX-Library-master.zip下载附件Adafruit-LED-Backpack-Library-master.zip

led_matrix_2013_04_12_IMG_1634-1024.jpg (47.24 KB, 下载次数: 14782)

Arduino + I2C接口 · 制作计数器_image_3.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(14)
afy47lf5
afy47lf5
库文件报错
DFH1cUlGQdQ
DFH1cUlGQdQ
能用红外传代替按键吗
kaka
kaka
作者
回复DFH1cUlGQdQ
当然可以,只是个传感器而已
wuhq1207
wuhq1207
您好,我也想想用Arduino做个秒表,请问下你附件里的程序怎么使用,还有D2是板子上的Digital2吗,谢谢
kaka
kaka
作者
回复wuhq1207
是的
kaptar
kaptar
为什么我的不行呢 总是这个样子,求解答 谢谢

kaka
kaka
作者
回复kaptar
我看不见你发的,一直在刷新,什么都出不来
jczaza
jczaza
很好奇他们策划用这个在现场是怎样用呢
kaka
kaka
作者
回复jczaza
给喜欢的明星投票啊,有一次跑男中国结束投票还是用纸然后统计,我这个直接按了就投票
kaka
kaka
作者
你也可以用普通按钮,甚至拿根线接3v3,接电阻,去碰D2口
jczaza
jczaza
按钮呢
kaka
kaka
作者
回复jczaza
按钮我没拍进去了,买的是下面的这种按钮,3个接线,VCC,GND,OUT接D2口

孙毅
孙毅
哈哈,什么情况,竟然论坛置顶了?!
kaka
kaka
作者
回复孙毅
我也不清楚
qq815076543322
qq815076543322
学习了
Juice
Juice
running man ~~~那用你东西的人好多了啊~赞赞~~
hnyzcj
hnyzcj
不错不错,值得学习。
appzpp12
appzpp12
这个LED比我红色的高端多了
kaka
kaka
作者
回复appzpp12
我也有红色的这个数码管
kevinzhang19701
kevinzhang19701
有意思:handshake
R2D2
R2D2
数码管颜色挺好看,代码乱了。 代码最好黏贴到记事本里,然后去掉里面的标记,再复制到论坛里,就看起来整齐了。
kaka
kaka
作者
回复R2D2
不好意思,在修改
- 没有更多了 -