圣源电子制作

标题: Ardunio 入门教程-实验八 7LED电子骰子 [打印本页]

作者: sydz    时间: 2012-5-13 01:23
标题: Ardunio 入门教程-实验八 7LED电子骰子
Ardunio 入门教程-实验八 7LED电子骰子

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

原理图
(, 下载次数: 70)


连接图
(, 下载次数: 69)


(, 下载次数: 69)

(, 下载次数: 69)

实验演示视频:


代码
  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. }
复制代码





欢迎光临 圣源电子制作 (https://syyyd.com/) Powered by Discuz! X3.4