我们都熟悉骰子,经常使用骰子玩LUDO或SANP SIDI(蛇梯棋)游戏。骰子是一个乡绅类型的实心盒子,其所有侧面均包含6个不同的数字。我们在玩游戏时将骰子放在表面上以获得随机数。在这个项目中,我们尝试使用arduino uno board用数字骰子复制它。代替掷骰子,这里我们需要按一个按钮以获得0到6之间的随机数。
所需组件
- Arduino UNO
- 七段显示(共阳极)
- 按按钮
- 连接线
- 面包板
- 1 k电阻
- 电源供应
电路图和说明
如上面的数字骰子电路所示,arduino用于控制整个过程。电路中使用了两个按钮-一个用于启动骰子,另一个用于重置骰子。Arduino会读取这两个按钮并执行操作。七段显示器用于显示骰子结果。
Arduino持续执行rand()函数并将其值存储到一个临时变量中。当按下骰子按钮时,将使用适当的方法计算存储的值并将其显示在七段中(请参见文章的编程部分)。
在此骰子电路中,共阳极七段显示器用于显示骰子编号,它直接与arduino数字引脚号6、5、4、3、2、1、0连接。七段共阳极引脚为与+5伏220欧姆电阻连接。还连接了两个按钮,即骰子按钮和复位按钮,它们相对于数字引脚14(A0)和15(A1)接地。
代码说明
该项目的编程部分在七段显示器上显示随机数字骰子数量方面发挥着非常重要的作用。Arduino不包含用于七段显示的任何库。因此我们无需使用任何库就可以创建完整的代码。
首先,我们为七段显示选择数字引脚。
int pin = {6,5,4,3,2,1,0};
之后,我们创建一个由6个数字组成的骰子数组,分别为1、2、3、4、5和6。
字符位数= {0x02、0x79、0x24、0x30、0x19、0x12};
现在我们给出了使用arduino引脚作为输出的指示。
void setup(){for(int i = 0; i <7; i ++)pinMode(pin,OUTPUT); pinMode(骰子,输入); pinMode(resett,INPUT); digitalWrite(dice,HIGH); digitalWrite(resett,HIGH);
我们发送一个代码,默认情况下在七段显示器上显示零。
int temp = 0x40; for(int i = 0; i <7; i ++){int temp1 = temp&0x01; digitalWrite(pin,temp1); temp =温度>> 1; }
现在,我们运行rand()函数以获取随机数。
int temp = rand();
当我们按下骰子按钮程序时,首先映射此随机数,然后使用按位运算符将数字发送到七段显示。
if(digitalRead(dice)== 0){int k = temp%6; temp = digit; 等待(); for(int i = 0; i <7; i ++){int temp1 = temp&0x01; digitalWrite(pin,temp1); temp =温度>> 1; } delay(200); }
与重置按钮相同。
在此程序中,我们一次发送一位。在这里,我们应用一个for循环,该循环运行7次以将数据逐段发送到每个段。