圣源电子制作
标题:
Ardunio 入门教程-实验八 7LED电子骰子
[打印本页]
作者:
sydz
时间:
2012-5-13 01:23
标题:
Ardunio 入门教程-实验八 7LED电子骰子
Ardunio 入门教程-实验八 7LED电子骰子
实验用到的元件
(, 下载次数: 73)
上传
点击文件名下载附件
实验用到的元件 7个LED(颜色看个人喜好),7个 470欧姆的电阻,1个10K欧姆电阻,1个轻触开关,11根杜邦线,一块实验板。
原理图
(, 下载次数: 75)
上传
点击文件名下载附件
连接图
(, 下载次数: 74)
上传
点击文件名下载附件
(, 下载次数: 73)
上传
点击文件名下载附件
(, 下载次数: 73)
上传
点击文件名下载附件
实验演示视频:
代码
// Listing. Project 9.
int ledPins[7] = {2, 3, 4, 5, 6, 7, 8};
int dicePatterns[7][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 1
{0, 0, 1, 1, 0, 0, 0}, // 2
{0, 0, 1, 1, 0, 0, 1}, // 3
{1, 0, 1, 1, 0, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 1, 1, 1, 1, 1, 0}, // 6
{0, 0, 0, 0, 0, 0, 0} // BLANK
};
int switchPin = 9;
int blank = 6;
void setup()
{
for (int i = 0; i < 7; i++)
{
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
randomSeed(analogRead(0));
}
void loop()
{
if (digitalRead(switchPin))
{
rollTheDice();
}
delay(100);
}
void rollTheDice()
{
int result = 0;
int lengthOfRoll = random(15, 25);
for (int i = 0; i < lengthOfRoll; i++)
{
result = random(0, 6); // result will be 0 to 5 not 1 to 6
show(result);
delay(50 + i * 10);
}
for (int j = 0; j < 3; j++)
{
show(blank);
delay(500);
show(result);
delay(500);
}
}
void show(int result)
{
for (int i = 0; i < 7; i++)
{
digitalWrite(ledPins[i], dicePatterns[result][i]);
}
}
复制代码
欢迎光临 圣源电子制作 (https://bbs.syyyd.com/)
Powered by Discuz! X3.4