圣源电子制作

 找回密码
 立即注册
查看: 8933|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-5-13 01:23:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Ardunio 入门教程-实验八 7LED电子骰子

实验用到的元件

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

原理图



连接图







实验演示视频:


代码
  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号-1|圣源电子

GMT+8, 2024-12-4 03:12 , Processed in 0.043444 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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