圣源电子制作

 找回密码
 立即注册
查看: 5981|回复: 0

Ardunio 入门教程-实验八 7LED电子骰子

[复制链接]
发表于 2012-5-13 01:23:57 | 显示全部楼层 |阅读模式
Ardunio 入门教程-实验八 7LED电子骰子

实验用到的元件
TD776_IMG_4028.JPG
实验用到的元件 7个LED(颜色看个人喜好),7个 470欧姆的电阻,1个10K欧姆电阻,1个轻触开关,11根杜邦线,一块实验板。

原理图
20120513155756.png


连接图
TD776_IMG_4021.JPG


TD776_IMG_4025.JPG

TD776_IMG_4026.JPG

实验演示视频:


代码
  1. // Listing. Project 9.

  2. int ledPins[7] = {2, 3, 4, 5, 6, 7, 8};
  3. int dicePatterns[7][7] = {
  4.   {0, 0, 0, 0, 0, 0, 1},    // 1
  5.   {0, 0, 1, 1, 0, 0, 0},    // 2
  6.   {0, 0, 1, 1, 0, 0, 1},    // 3
  7.   {1, 0, 1, 1, 0, 1, 0},    // 4
  8.   {1, 0, 1, 1, 0, 1, 1},    // 5
  9.   {1, 1, 1, 1, 1, 1, 0},    // 6
  10.   {0, 0, 0, 0, 0, 0, 0}     // BLANK
  11. };
  12.   
  13. int switchPin = 9;
  14. int blank = 6;

  15. void setup()                 
  16. {
  17.   for (int i = 0; i < 7; i++)
  18.   {
  19.     pinMode(ledPins[i], OUTPUT);
  20.     digitalWrite(ledPins[i], LOW);
  21.   }
  22.   randomSeed(analogRead(0));
  23. }


  24. void loop()
  25. {
  26.   if (digitalRead(switchPin))
  27.   {
  28.     rollTheDice();
  29.   }
  30.   delay(100);
  31. }

  32. void rollTheDice()
  33. {
  34.   int result = 0;
  35.   int lengthOfRoll = random(15, 25);
  36.   for (int i = 0; i < lengthOfRoll; i++)
  37.   {
  38.     result = random(0, 6);  // result will be 0 to 5 not 1 to 6
  39.     show(result);
  40.     delay(50 + i * 10);
  41.   }
  42.   for (int j = 0; j < 3; j++)
  43.   {
  44.     show(blank);
  45.     delay(500);
  46.     show(result);
  47.     delay(500);
  48.   }
  49. }

  50. void show(int result)
  51. {

  52. for (int i = 0; i < 7; i++)
  53. {
  54.    digitalWrite(ledPins[i], dicePatterns[result][i]);
  55. }
  56. }
复制代码
回复

使用道具 举报

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

本版积分规则

QQ|手机版|联系我们|闽公网安备 35012102000020号|圣源电子 ( 闽ICP备11020110号 )

GMT+8, 2020-7-8 12:41 , Processed in 0.069738 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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