极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11890|回复: 2

数码管实验改成数字骰子实验

[复制链接]
发表于 2012-10-20 09:32:21 | 显示全部楼层 |阅读模式
数码管实验改成数字骰子实验
根据’’迷你强’的arduino数码管实验’,再连接一个按纽,做成数字骰子实验.

徽型按纽 一端接5V,另一端接A0模拟端口.


为了使主程序便于观看,把显示数字的功能做成了子程序.

void digital_0(void)
{  
/*==============显示数字0==========*/
  int n0[8]={0,0,0,0,0,0,1,1};
  //定义数组通过0,1定义各数码管的明灭.
  
  int z=0;
  for (int x=2;x<=9;x++)
//采用循环方式方式点亮指定的数码管Led(数级中0为点亮),单位时间只点亮1个led
  {
   digitalWrite(x,n0[z]);
   z++;
  //点亮led语句,X为引脚数 n0[z]为数组z为0--8的变量,来依次读取数组中的值z++
   if (z>=9) //防止变量z累加超过了8
    z=0;
  }
}

void digital_1(void)
{
/*=============display 1=========*/
  int n1[8]={1,0,0,1,1,1,1,1};
   int z=0;
  for (int x=2;x<=9;x++)
   {
     digitalWrite(x,n1[z]);
     z++;
     if (z>=9)
      z=0;
   }
}

void digital_2(void)
{

/*============display 2==========*/
int n2[8]={0,0,1,0,0,1,0,1};
   int z=0;
for (int x=2;x<=9;x++)
  {
    digitalWrite(x,n2[z]);
    z++;
    if (z>=9)
     z=0;
  }
}

void digital_3()
{
  /*============dispaly 3=======*/
  int n3[8]={0,0,0,0,1,1,0,1};
  int  z=0;
  for (int x=2;x<=9;x++)
   {
     digitalWrite(x,n3[z]);
     z++;
     if (z>=9)
     z=0;
   }

}

void digital_4()
{
   /*=========display 4======*/
   int n4[8]={1,0,0,1,1,0,0,1};
  int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n4[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_5()
{   
   /*=========display 5======*/
   int n5[8]={0,1,0,0,1,0,0,1};
   int  z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n5[z]);
      z++;
      if (z>=9)
      z=0;
    }
}


    void digital_6()
{
           /*=========display 6======*/
   int n6[8]={0,1,0,0,0,0,0,1};
   int  z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n6[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_7()
{
         /*=========display 7======*/
   int n7[8]={0,0,0,1,1,1,1,1};
   int  z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n7[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

   void digital_8()

{
          /*=========display 8======*/
   int n8[8]={0,0,0,0,0,0,0,1};
   int  z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n8[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_9()
{   
       /*=========display 9======*/
   int n9[8]={0,0,0,0,1,0,0,1};
  int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,n9[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

   void digital_a()
{
            /*=========display a======*/
   int na[8]={1,1,0,0,0,1,0,1};
  int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,na[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_b()
{   
         /*=========display b======*/
   int nb[8]={1,1,0,0,0,0,0,1};
  int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,nb[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_c()   
{
      /*=========display c======*/
   int nc[8]={0,1,1,0,0,0,1,1};
  int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,nc[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

  void digital_d()
{

           /*=========display d======*/
   int nd[8]={1,0,0,0,0,1,0,1};
  int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,nd[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_e()
{

          /*=========display e======*/
   int ne[8]={0,0,1,0,0,0,0,1};
  int   z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,ne[z]);
      z++;
      if (z>=9)
      z=0;
    }
}

void digital_f()
{   
           /*=========display F======*/
   int nF[8]={0,1,1,1,0,0,0,1};
    int z=0;
   for (int x=2;x<=9;x++)
    {
      digitalWrite(x,nF[z]);
      z++;
      if (z>=9)
      z=0;
    }
}



初始参数设置

void setup()
{
   Serial.begin(9600);
   pinMode(13,OUTPUT);
   //激活13号引脚,我们需要用它供电
   for (int n=2;n<=9;n++)
    {
      pinMode(n,OUTPUT);
    }
}

循环内容

void loop()
{
  digitalWrite(13,HIGH);
  int temp;
  temp=analogRead(A0);
   digital_0();
    while (analogRead(A0)>1000); //如果读到模拟口A0的值为1000说明有按键按下
        {  Serial.println(temp); delay(100);}
  
  
   digital_1();
     while (analogRead(A0)>1000);
      {  Serial.println(temp); delay(100);}   
   digital_2();
    while (analogRead(A0)>1000);
    {  Serial.println(temp); delay(100);}
   
   digital_3();
       while (analogRead(A0)>1000);
     {  Serial.println(temp); delay(100);}
   
   digital_4();
    while (analogRead(A0)>1000);
    {  Serial.println(temp); delay(100);}
   
   digital_5();
    while (analogRead(A0)>1000);
    {  Serial.println(temp); delay(100);}   
   
   digital_6();
    while (analogRead(A0)>1000);
    {  Serial.println(temp); delay(100);}   
   digital_7();
    while (analogRead(A0)>1000);
     {  Serial.println(temp); delay(100);}   

  
   digital_8();
    while (analogRead(A0)>1000);
       {  Serial.println(temp); delay(100);}   

   digital_9();
    while (analogRead(A0)>1000);
      {  Serial.println(temp); delay(100);}   

   digital_a();
    while (analogRead(A0)>1000);
       {  Serial.println(temp); delay(100);}   
   digital_b();
    while (analogRead(A0)>1000);
     {  Serial.println(temp); delay(100);}   
   digital_c();
    while (analogRead(A0)>1000);
       {  Serial.println(temp); delay(100);}   
   digital_d();
    while (analogRead(A0)>1000);
       {  Serial.println(temp); delay(100);}   
   
   digital_e();
    while (analogRead(A0)>1000);
       {  Serial.println(temp); delay(100);}   

   
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 新人贴,赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-10-20 14:56:39 | 显示全部楼层
这个图是VBB画的吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-20 15:55:08 | 显示全部楼层
不是,是从原教程(数码管实验--迷你强 )图中取得图片,再在window附带绘图软件中添加的.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-27 12:38 , Processed in 0.042544 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表