(十九)arduino入门:简易数字骰子

释放双眼,带上耳机,听听看~!

一、本节介绍

在以前的实验中,我们学会了使用7段LED显示器和控制按钮。在本课中,我们将使用7段显示器和按钮一起创建一个简单的数字骰子。

二、材料准备

1*-arduino UNO板

-USB数据线*1

-杜邦线

1*-按钮

*(1-10kΩ电阻器)

电阻器220Ω*(-8)

-7段显示器*1

1*104-陶瓷电容器

1*-74HC595

三、原理讲解

骰子的数字背后的想法非常简单:7段显示器从圆1~6。当按下按钮时,跳跃会减慢直到它停止在3秒后。当再次按下该按钮,则该过程将重复。

四、实验步骤

步骤1:构建电路

将74HC595用于布线之间,7段和arduinoUNO,请参考第11课74HC595。

一种按钮,所述按钮的一端连接到5V,而另一端与10kΩ电阻和电容器,连接在电阻和电容连接至GND。

(十九)arduino入门:简易数字骰子

原理图

(十九)arduino入门:简易数字骰子

步骤2:编写程序

步骤3:编译代码

步骤4:上载程序到arduino UNO板

你现在可以看到跳跃的7段显示从1到6之间。当按钮被按压时,将跳跃减速直至停止3秒。如果再次按下该按钮,则该过程将重复。

(十九)arduino入门:简易数字骰子

本节课代码:

[scu name=”arduino-ide-post” platform=”arduino:avr:uno”]

/***********************************************
  //数字骰子
  你现在可以看到单个的7段显示器之间从1到6。
  当按钮被按压时,将跳跃减速直至停止3秒。
  如果再次按下该按钮,则该过程将重复。
*************************************************/
//2017.11.11

const int latchPin = 12;//引脚12连接至ST_CP的74HC595
const int clockPin = 8;//8引脚连接到CP的74HC595_SH
const int dataPin = 11; //到DS的连接销1174HC595
const int ledPin = 13; //ledpin附加到13脚
const int keyIn = 2; //KEYIN连接到引脚
int num = 0;

//display 0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F
int datArray[16] = {252, 96, 218, 242, 102, 182, 190, 224, 254, 246, 238, 62, 156, 122, 158, 142};

long randNumber;
/***********************************************/
void setup()
{
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(keyIn, INPUT);
  Serial.begin(9600);
  randomSeed(analogRead(0)); //初始化A0输入随机数字生成
}
/************************************************/
void loop()
{
  int stat = digitalRead(keyIn);//读取自存储键
  if (stat == HIGH) // 检查是否按压了按钮
    num ++;
  if (num > 1)
  {
    num = 0;
  }

  Serial.print(num); //将num串行打印到监视器
  if (num == 1) //当按钮被按下
  {
    randNumber = random(1, 7); //随机存储1-7
    //显示随机数以1秒间隔3次
    showNum(randNumber); //显示在7段randnumber
    delay(1000);

    randNumber = random(1, 7);
    showNum(randNumber);
    delay(1000);

    randNumber = random(1, 7);
    showNum(randNumber);
    delay(1000);

    while (!digitalRead(keyIn)); //当没有按下按钮,程序停止在这里
    int stat = digitalRead(keyIn);//读取键的状态
    if (stat == HIGH) //检查是否按压了按钮
    {
      num ++;
      digitalWrite(ledPin, HIGH);
      delay(100);
      digitalWrite(ledPin, LOW);
      delay(100);
      if (num >= 1)
      {
        num = 0;
      }
    }
  }
  //显示100毫秒间隔在随机数字
  randNumber = random(1, 7);
  showNum(randNumber);
  delay(100);
}
/************************************************/
//该函数驱动7段显示数字
void showNum(int num)
{
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, datArray[num]);
  digitalWrite(latchPin, HIGH);
}
/************************************************/

[/scu]

本节课程序下载:点击下载

下载密码:

给TA打赏
共{{data.count}}人
人已打赏
ArduinoArduino-入门

(十八)arduino入门:简易交通灯

2018-6-14 11:15:07

ArduinoArduino-进阶

(一)arduin进阶:定时器中断的使用

2018-6-14 11:21:04

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
'); })();