【arduino数码管实验】疫情期间宅着没事做?这个东西可以了解一下......
2020-04-22 16:56
686 查看
目录
1.材料清单
2.实验原理
3.代码分析
4.总结
材料清单 | 型号&数量 |
---|---|
arduino开发板 | UNO*1 |
数码管 | 5161BS(共阳极)*1 |
电阻 | 330Ω*1 |
导线 | 若干 |
引脚分布图:
有了上面两张图,就可以动手连线了,A-G分别接在了板子上2-8引脚,搭建完成的板子是这样的:
废话不说,直接写代码。
(完整代码)
unsigned char num[10][8]={{2,3,4,5,6,7},{3,4},{2,3,5,6,8},{2,3,4,5,8},{3,4,7,8},{2,4,5,7,8},{2,4,5,6,7,8},{2,3,4},{2,3,4,5,6,7,8},{2,3,4,7,8}}; void setup() { for(int i=2;i<9;i++) { pinMode(i,OUTPUT); digitalWrite(i,HIGH); } } void Display(char a) { unsigned char index=0; while(num[a][index]) { digitalWrite(num[a][index],LOW); index++; } } void loop() { Display(random(0,10)); delay(1000); setup(); }
分析:
我的思路是这样的,了解数码管的都知道无非是让它对应的脚输出低电平即可(共阳极),那么我就把要变化的脚写入数组中。
至此这个程序已经完成一半了,setup()函数定义数码管连接的几个引脚为OUTPUT(输出),并把电平拉高,然后进入到主函数(loop()函数)中,产生一个0-9的随机数作为实参传给Display()函数,在显示随机数之后,延时1s并重置各个引脚为高电平(调用setup()函数)。
下面分析Display()函数:
通过while循环来判断是否显示这个数所对应的引脚已全部被拉低,如果未完全,则继续,完全则退出。
没想到arduino的数码管这么繁琐,本来是想Display()函数中用switch来判断传进来的参数并产生对应动作,但是每个数字对应的段选引脚确实太多,会导致代码很多,啰嗦,因此决定用二维数组+while判断来实现。目前数组里只加了数字0-9的段选数据,有兴趣的读者可以自行丰富。
期待更多精彩…
- 点赞 11
- 收藏
- 分享
- 文章举报
相关文章推荐
- 听歌识曲!python这个骚操作可以了解一下!
- 移植gtk,这个配置有点早,可以了解一下他的工作流程
- 介绍一下华为的群p面试法,想了解的朋友可以看看
- Java面试题或者说基础挑战,没事可以学习一下 4000
- 图像识别,ocr 技术,有兴趣的可以了解一下
- 这个学期要开始学习网页制作了,希望可以在这里学习更多的东西
- html5 View API,大家都了解这个东西吗?
- 这个blog功能还算不错,还可以隐藏一些属于自己的东西。
- flot 可以画任意多条线,不是借助 json ,看这个东西很生气,在这里用json太费劲。
- 用yahoo搜索一下工大后院竟然可以找到这个blog
- 因为项目的需要,近日调研了一下在 Windows Phone 手机上播放H264裸码流的方法,期间参考了大量的网络资源,最终得以解决这个问题,对如此具有钻研和奉献精神的他们表示诚挚的感谢!
- 今天说一下 tablesample 这个东西
- 今天说一下 Group by 这个东西
- SolarWinds Orion Network Performance Monitor --看我一个同事用这个东东,特此记录一下,可以统计服务器的cpu使用情况。
- 突然想起来我还有浏览历史这个东西可以用来找回我没发微博和说说的那段时间
- C语言知识点简介(可以根据这个简单复习一下)
- 谁了解Paulo提出的String B-Tree理论?出来讲解一下,我没有找到可以看懂的资料。...
- 如何提高深度学习模型的训练效果,这个小技巧可以尝试一下。
- 慎用console.log(),这个方法打印出来的东西,有时候是错误的。 so amazing。。。你真的了解console.log()吗,它不是同步的,即不是实时的,不是实时的,不是实时的
- 简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。