原文地址:https://circuitdigest.com/microcontroller-projects/digital-dice-using-arduino

使用Arduino的数字骰子

ARDUINO的

经过**萨达姆** 2015年7月2日3

我们都熟悉骰子,经常使用骰子玩LUDO或SANP SIDI(蛇梯棋)游戏。骰子是一个乡绅型的实心盒子,在其所有侧面上均包含6个不同的数字。我们在玩游戏时将骰子放在表面上以获得随机数。在这个项目中,我们尝试使用arduino uno board数字骰子复制它。代替掷骰子,这里我们需要按下一个按钮以获得0到6之间的一个随机数。

所需组件

  1. Arduino UNO
  2. 七段显示(共阳极)
  3. 按按钮
  4. 连接线
  5. 面包板
  6. 1 k电阻
  7. 电源供应

电路图和说明

如上面的数字骰子电路所示,arduino用于控制整个过程。电路中使用了两个按钮-一个用于启动骰子,另一个用于重置骰子。Arduino会读取这两个按钮并执行操作。七段显示器用于显示骰子结果。

Arduino持续执行rand()函数并将其值存储到一个临时变量中。当按下骰子按钮时,将使用适当的方法计算存储的值并将其显示在七段中(请参见文章的编程部分)。

在此骰子电路中,共阳极七段显示器用于显示骰子编号,它直接与arduino数字引脚号6、5、4、3、2、1、0连接。七段共阳极引脚为与+5伏220欧姆电阻连接。还连接了两个按钮,即骰子按钮和复位按钮,它们相对于地面分别连接到数字引脚14(A0)和15(A1)。

代码说明

该项目的编程部分在七段显示器上显示随机数字骰子数量方面发挥着非常重要的作用。Arduino不包含用于七段显示的任何库。因此,我们无需使用任何库就可以创建完整的代码。

首先,我们为七段显示选择数字引脚。

int pin [7] = {6,5,4,3,2,1,0};

之后,我们创建一个由6个数字组成的骰子数组,分别为1、2、3、4、5和6。

char digit[6]={0x02, 0x79, 0x24, 0x30, 0x19, 0x12};

现在我们给出了使用arduino引脚作为输出的指示。

void setup()
{for(int i=0;i<7;i++)pinMode(pin[i], OUTPUT);pinMode(dice, INPUT);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 [i],temp1);temp = temp >> 1;}

现在,我们运行rand()函数以获取一个随机数。

int temp = rand();

当我们按下骰子按钮程序时,首先映射该随机数,然后使用按位运算符将数字发送到七段显示。

if(digitalRead(dice)==0){int k=temp%6;temp=digit[k];wait();for(int i=0;i<7;i++){int temp1=temp&0x01;digitalWrite(pin[i], temp1);temp=temp>>1;}delay(200);}

与重置按钮相同。

在此程序中,我们一次发送一位。在这里,我们应用了一个for循环,该循环运行7次以将数据逐段发送到每个段。

代码

#define resett 15
#define dice 14char digit[6]={0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
int pin[7]={6,5,4,3,2,1,0};
void setup()
{for(int i=0;i<7;i++)pinMode(pin[i], OUTPUT);pinMode(dice, INPUT);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[i], temp1);temp=temp>>1;}delay(1000);
}void loop()
{int temp=rand();if(digitalRead(dice)==0){int k=temp%6;temp=digit[k];wait();for(int i=0;i<7;i++){int temp1=temp&0x01;digitalWrite(pin[i], temp1);temp=temp>>1;}delay(200);}if(digitalRead(resett)==0){temp=0x40;for(int i=0;i<7;i++){int temp1=temp&0x01;digitalWrite(pin[i], temp1);temp=temp>>1;}}
}void wait()
{for(int m=0;m<10;m++){for(int k=0;k<6;k++){int ch=digit[k];for(int l=0;l<7;l++){char tem2=ch&0x01;digitalWrite(pin[l], tem2);ch=ch>>1;}delay(50);}}
}

使用Arduino的数字骰子相关推荐

  1. 和12岁小同志搞创客开发:手撕代码,做一款数字骰子

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  2. GY39传感器C语言代码,详解Arduino GY-30数字光强传感器应用

    描述 数字传感器 数字传感器是指将传统的模拟式传感器经过加装或改造A/D转换模块,使之输出信号为数字量(或数字编码)的传感器,主要包括:放大器.A/D转换器.微处理器(CPU).存储器.通讯接口.温度 ...

  3. 使用红外传感器和Arduino制作数字转速表测量RPM

    在本篇文章中,我们使用红外传感器(IR Sensor)和Arduino开发板设计了一款数字转速表,用于测量旋转电机的转数RPM.只需将红外传感器模块与Arduino和1602 LCD显示模块连接即可. ...

  4. 使用Arduino制作一款数字键盘安全门锁

    通常,我们需要在家里或办公室里给某个房间上锁,以便没有人在没有我们允许的情况下不能进入房间,并确保防止盗窃或丢失我们重要的配件和资产.如今,存在许多类型的安全系统,为了进行身份验证,它们依靠指纹.视网 ...

  5. 使用Arduino开发板制作数字出租车计价器

    现今,数字仪表正在逐步取代各个部门的模拟仪表,无论是电表还是出租车费用表.主要原因是模拟仪表的机械部件在长时间使用后容易磨损,并且不如数字仪表那么精确. 一个很好的例子是模拟速度计和里程表,用于旧摩托 ...

  6. Arduino基础入门三:数字IO口作为输出

    一.信号分类: 1.数字信号:物理量的变化在时间和幅值上都是离散的(不连续),反映在电路上就是高电平和低电平两种状态(即只有0和1两个逻辑值).比如:灯有亮和不亮两种状态,天气有晴天和雨天两种状态,门 ...

  7. Arduino基础之十一 74HC595的使用------控制1位数码管

    一 硬件 74HC595是一种8位串行输入,并行输出的寄存器芯片,一共有16个引脚,如下图. 首先需要理解串行和并行的概念,这个比较容易,串行输入就是一个一个数地输入,并行输出就是8位一道输出,见下图 ...

  8. 【Arduino基础】一位数码管实验

    实验现象 使用arduino直接驱动一位数码管依次显示数子0-9. 理论学习 数码管是一种半导体发光器件,其基本单元是发光二极管.数码管按 段数分为七段数数码管和八段数数码管,八段数数码管比七段数数码 ...

  9. Arduino门禁人机接口调试 Version 1.0

    ■ 相关文献链接: Arduino基本人机接口:点阵LED.汉字库.键盘 Grove Beginner Kits基础实验 ESP8266访问网站-urequest get方法 Arduio软件开发环境 ...

最新文章

  1. R语言format函数保留几位小数实战
  2. Swift教程之类和结构体
  3. linux内核学习之三:linux中的32位与64位
  4. JPA中实现双向一对多的关联关系
  5. 定时任务提交spark到yarn出现一直accepted以及yarn出现unhealthy情况
  6. HttpURLConnection和HttpClient的简单用法
  7. 我的新书《PWA入门与实践》上市了
  8. 「视频版」当线程池溢出之后,程序会奔溃吗?面试突击 007 期
  9. Eclipse中SVN过滤指定文件夹或文件下内容
  10. 浅谈对称加密和非对称加密
  11. H3C防火墙——回环流量问题(内网终端通过外网IP访问内部服务器)
  12. CentOS 7 配置 VNC 远程桌面连接
  13. linux 查看、关闭、后台程序 【进程】
  14. 《东周列国志》第六十五回 弑齐光崔庆专权 纳卫衎宁喜擅政
  15. 游戏 蒸汽之城开发经验
  16. UnReal与Unity游戏引擎对比分析
  17. 【Onedrive】查看和使用组共享链接
  18. Cocos2D引擎学习-动作类的学习(一)
  19. 告别增收不增利,中通快递能否跑好“最后一公里”?
  20. Altium Designer生产文件输出与文件归档

热门文章

  1. 微信小程序乐园-checkbox(全选、全不选)
  2. Ubuntu 12.04输入法图标不见了
  3. 【歌曲欣赏】bressanone
  4. 学习吸收优秀者的开发习惯,并自己复述出来
  5. 如何把Spring学精通?
  6. 游戏化设计工作坊--MIXTure团队的预习作业
  7. 滤波算法——均值滤波,中值滤波,一阶(αβ)滤波,卡尔曼滤波
  8. Gamma/伽马函数,伽马分布
  9. 大牛架构师珍藏的10条编程原则
  10. SpringBoot-Webapp