40184| 24
|
[中级教程] Arduino教程中级 项目十三 数字骰子 |
项目十三 数字骰子本系列教程为DF创客社区版权所有,配套硬件套件:新版Arduino中级套件 小时候都玩过飞行棋吧,是不是特别喜欢掷骰子,然而我们今天就要通过Arduino来做个数字骰子,或者叫做电子骰子,随便怎么叫,就是这么个意思! 所需元件1× 数字大按钮模块 硬件连接
硬件分析Shiftout模块Shiftout模块就是一块74HC595串行输入串行或并行输出的移位寄存器芯片。如果要看懂代码,那就需要对 74HC595芯片的工作原理有个简单认识。我们很快的看下这块芯片是如何工作的? 74HC595实现了串行输入转并行输出的功能。 先说下什么是串行与并行。下图可以简单看出串行与并行的区别。串行,是一个一个数往发,而并行是 8位数一道往外发的。 74HC595可以串行进来的数据,让它并行输出。这样的好处是,比如在我们要用到多个LED,而数字引脚又不够用的时候,用一个74HC595,就可以同时控制多个LED了。 LED模块LED模块其实就是8个LED,每一段都是一个独立的LED,一共是8段。一个74HC595芯片输出正好也是8位,所以可以用74HC595的输出正好可以控制一个LED模块。 输入代码
数码管会随机产生 0~9之间的数,每次按下按钮都会是不同的数。 代码回顾前面硬件介绍部分提到了 74HC595的用法,起到的作用就是能够通过一个数据口并行输出 8位,,不会让LED占用 8个数字引脚,当然如果你想接8个数字口也是没 有问题的,只是占用的引脚会多一点而已。也说到了三个比较关键的引脚 latchPin,clockPin,dataPin。所以代码开始定义了这三个量,以及按钮。 下面就来说下 shiftOut()函数怎样用? shiftOut函数格式: dataPin:输出每一位数据的引脚(int)
相关参考资料:
代码中,我们可以看出输出位的顺序是最高位优先的,Tab[number]就是输出的数据。
那我们看下 Tab[number]里面是些什么?
是不是看的一头雾水,什么又是 c0,又是f9的,这都是些什么东西?我们只要说一个,之后的就全明白了。 0xc0这些是16进制表达方式,我们日常生活接触比较多的是10进制,也就是0~9的表现形式。16进制是由0~9,A~F组成。0~9对应0~9;A~F对10~15。 你可能说还是不太明白,没关系,打开电脑自带的计算器,设置成“程序员”模式。选择“十六进制”,输入“c0”,点击“二进制”。此时,“c0”就“11000000”。 现在我们知道了 0~9的数字是如何显示的,既然需要做数字骰子,还有一个重要的一步,如何随机产生0~9之间的数字呢? Arduino提供了个好用的函数random()。 random(max) random(10);// 生成0~9之间的数 randomSeed()函数是用来设置随机种子的,我们这里就接到了模拟口 0。 趣味练习LED模块还有其他的玩儿,比如可以结合我们前面的红外接收管,做个红外遥控数码管,在数码管上显示你在红外遥控器上按下的数字。没事儿玩儿猜数字游戏也不错啊~ |
1.01 KB, 下载次数: 7152
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed