极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: 弘毅

arduino学习笔记8 - 数字骰子实验

  [复制链接]
发表于 2015-5-27 20:57:46 | 显示全部楼层
  1. byte smg[10][8] = {    //设置每个数字所对应的开关数组
  2.   { 1,0,0,0,0,1,0,0 },  // = 0
  3.   { 1,0,0,1,1,1,1,1 },  // = 1
  4.   { 1,1,0,0,1,0,0,0 },  // = 2
  5.   { 1,0,0,0,1,0,1,0 },  // = 3
  6.   { 1,0,0,1,0,0,1,1 },  // = 4
  7.   { 1,0,1,0,0,0,1,0 },  // = 5
  8.   { 1,0,1,0,0,0,0,0 },  // = 6
  9.   { 1,0,0,0,1,1,1,1 },  // = 7
  10.   { 1,0,0,0,0,0,0,0 },  // = 8
  11.   { 1,0,0,0,0,0,1,0 }   // = 9
  12.   };

  13. void setup()
  14. {
  15.     pinMode(2,INPUT);
  16.     for(int x = 4; x <= 11;x ++)
  17.     {
  18.         pinMode(x,OUTPUT);
  19.     }
  20. }

  21. void loop()
  22. {
  23.    
  24.     for(int j = 0;j <= 9;j ++)
  25.     {
  26.       int pin = 4;
  27.       for(int i = 0;i <= 7;i ++)
  28.       {
  29.         digitalWrite(pin,smg[j][i]);
  30.         pin ++;
  31.       }
  32.       delay(50);
  33.       while(digitalRead(2))
  34.       {
  35.           delay(1000);
  36.       }
  37.     }
  38. }
复制代码
我也来写一段代码试试。
回复 支持 反对

使用道具 举报

发表于 2015-5-27 21:00:12 | 显示全部楼层
我想写一个按下,数码管停止跑动,再按下重新启动数码管跑动的程序,为何不行呢?程序如下,请教大家
  1. byte smg[10][8] = {    //设置每个数字所对应的开关数组
  2.   { 1,0,0,0,0,1,0,0 },  // = 0
  3.   { 1,0,0,1,1,1,1,1 },  // = 1
  4.   { 1,1,0,0,1,0,0,0 },  // = 2
  5.   { 1,0,0,0,1,0,1,0 },  // = 3
  6.   { 1,0,0,1,0,0,1,1 },  // = 4
  7.   { 1,0,1,0,0,0,1,0 },  // = 5
  8.   { 1,0,1,0,0,0,0,0 },  // = 6
  9.   { 1,0,0,0,1,1,1,1 },  // = 7
  10.   { 1,0,0,0,0,0,0,0 },  // = 8
  11.   { 1,0,0,0,0,0,1,0 }   // = 9
  12.   };

  13. void setup()
  14. {
  15.     pinMode(2,INPUT);
  16.     for(int x = 4; x <= 11;x ++)
  17.     {
  18.         pinMode(x,OUTPUT);
  19.     }
  20. }

  21. void loop()
  22. {
  23.    
  24.     for(int j = 0;j <= 9;j ++)
  25.     {
  26.       int pin = 4;
  27.       for(int i = 0;i <= 7;i ++)
  28.       {
  29.         digitalWrite(pin,smg[j][i]);
  30.         pin ++;
  31.       }
  32.       delay(50);
  33.       int k = digitalRead(2);
  34.       while(k)
  35.       {
  36.           while(1);
  37.           {
  38.               if(digitalRead(2))
  39.               {
  40.                  k = 0;
  41.                  break;
  42.               }
  43.           }
  44.       }
  45.     }
  46. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2015-5-27 21:39:55 | 显示全部楼层
经反复调试,觉得以下程序能够实现按下,数码管停止跳动,再次按下,数码管重新跳动。欢迎交流学习。
  1. byte smg[10][8] = {    //设置每个数字所对应的开关数组
  2.   { 1,0,0,0,0,1,0,0 },  // = 0
  3.   { 1,0,0,1,1,1,1,1 },  // = 1
  4.   { 1,1,0,0,1,0,0,0 },  // = 2
  5.   { 1,0,0,0,1,0,1,0 },  // = 3
  6.   { 1,0,0,1,0,0,1,1 },  // = 4
  7.   { 1,0,1,0,0,0,1,0 },  // = 5
  8.   { 1,0,1,0,0,0,0,0 },  // = 6
  9.   { 1,0,0,0,1,1,1,1 },  // = 7
  10.   { 1,0,0,0,0,0,0,0 },  // = 8
  11.   { 1,0,0,0,0,0,1,0 }   // = 9
  12.   };

  13. void setup()
  14. {
  15.     pinMode(2,INPUT);
  16.     for(int x = 4; x <= 11;x ++)
  17.     {
  18.         pinMode(x,OUTPUT);
  19.     }
  20. }

  21. void loop()
  22. {
  23.    
  24.     for(int j = 0;j <= 9;j ++)
  25.     {
  26.       int pin = 4;
  27.       for(int i = 0;i <= 7;i ++)
  28.       {
  29.         digitalWrite(pin,smg[j][i]);
  30.         pin ++;
  31.       }
  32.       delay(50);
  33.       int k = digitalRead(2);
  34.       while(k)//第一次按键按下时,进入while死循环。
  35.       {
  36.         delay(100);
  37.         if(digitalRead(2))
  38.         {
  39.          delay(100);
  40.          if(digitalRead(2))//再次按下按键时,将K值反转,自动跳出while循环。
  41.           {
  42.             k = !k;
  43.             while(digitalRead(2))//等待按键松开
  44.             {
  45.               delay(1);
  46.             }
  47.            }
  48.               }
  49.       }
  50.     }
  51. }
复制代码
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-5-5 07:20 , Processed in 0.038674 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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