小华盛顿 发表于 2015-5-27 20:57:46

byte smg = {    //设置每个数字所对应的开关数组
{ 1,0,0,0,0,1,0,0 },// = 0
{ 1,0,0,1,1,1,1,1 },// = 1
{ 1,1,0,0,1,0,0,0 },// = 2
{ 1,0,0,0,1,0,1,0 },// = 3
{ 1,0,0,1,0,0,1,1 },// = 4
{ 1,0,1,0,0,0,1,0 },// = 5
{ 1,0,1,0,0,0,0,0 },// = 6
{ 1,0,0,0,1,1,1,1 },// = 7
{ 1,0,0,0,0,0,0,0 },// = 8
{ 1,0,0,0,0,0,1,0 }   // = 9
};

void setup()
{
    pinMode(2,INPUT);
    for(int x = 4; x <= 11;x ++)
    {
      pinMode(x,OUTPUT);
    }
}

void loop()
{
   
    for(int j = 0;j <= 9;j ++)
    {
      int pin = 4;
      for(int i = 0;i <= 7;i ++)
      {
      digitalWrite(pin,smg);
      pin ++;
      }
      delay(50);
      while(digitalRead(2))
      {
          delay(1000);
      }
    }
}我也来写一段代码试试。

小华盛顿 发表于 2015-5-27 21:00:12

我想写一个按下,数码管停止跑动,再按下重新启动数码管跑动的程序,为何不行呢?程序如下,请教大家byte smg = {    //设置每个数字所对应的开关数组
{ 1,0,0,0,0,1,0,0 },// = 0
{ 1,0,0,1,1,1,1,1 },// = 1
{ 1,1,0,0,1,0,0,0 },// = 2
{ 1,0,0,0,1,0,1,0 },// = 3
{ 1,0,0,1,0,0,1,1 },// = 4
{ 1,0,1,0,0,0,1,0 },// = 5
{ 1,0,1,0,0,0,0,0 },// = 6
{ 1,0,0,0,1,1,1,1 },// = 7
{ 1,0,0,0,0,0,0,0 },// = 8
{ 1,0,0,0,0,0,1,0 }   // = 9
};

void setup()
{
    pinMode(2,INPUT);
    for(int x = 4; x <= 11;x ++)
    {
      pinMode(x,OUTPUT);
    }
}

void loop()
{
   
    for(int j = 0;j <= 9;j ++)
    {
      int pin = 4;
      for(int i = 0;i <= 7;i ++)
      {
      digitalWrite(pin,smg);
      pin ++;
      }
      delay(50);
      int k = digitalRead(2);
      while(k)
      {
          while(1);
          {
            if(digitalRead(2))
            {
               k = 0;
               break;
            }
          }
      }
    }
}

小华盛顿 发表于 2015-5-27 21:39:55

经反复调试,觉得以下程序能够实现按下,数码管停止跳动,再次按下,数码管重新跳动。欢迎交流学习。byte smg = {    //设置每个数字所对应的开关数组
{ 1,0,0,0,0,1,0,0 },// = 0
{ 1,0,0,1,1,1,1,1 },// = 1
{ 1,1,0,0,1,0,0,0 },// = 2
{ 1,0,0,0,1,0,1,0 },// = 3
{ 1,0,0,1,0,0,1,1 },// = 4
{ 1,0,1,0,0,0,1,0 },// = 5
{ 1,0,1,0,0,0,0,0 },// = 6
{ 1,0,0,0,1,1,1,1 },// = 7
{ 1,0,0,0,0,0,0,0 },// = 8
{ 1,0,0,0,0,0,1,0 }   // = 9
};

void setup()
{
    pinMode(2,INPUT);
    for(int x = 4; x <= 11;x ++)
    {
      pinMode(x,OUTPUT);
    }
}

void loop()
{
   
    for(int j = 0;j <= 9;j ++)
    {
      int pin = 4;
      for(int i = 0;i <= 7;i ++)
      {
      digitalWrite(pin,smg);
      pin ++;
      }
      delay(50);
      int k = digitalRead(2);
      while(k)//第一次按键按下时,进入while死循环。
      {
      delay(100);
      if(digitalRead(2))
      {
         delay(100);
         if(digitalRead(2))//再次按下按键时,将K值反转,自动跳出while循环。
          {
            k = !k;
            while(digitalRead(2))//等待按键松开
            {
            delay(1);
            }
         }
            }
      }
    }
}
页: 1 2 [3]
查看完整版本: arduino学习笔记8 - 数字骰子实验