
八卦灯|灯光设计|立创面板打印
简介
一个通过了SMT和面板的八卦灯设计,适合做装饰品和学习用
简介:一个通过了SMT和面板的八卦灯设计,适合做装饰品和学习用开源协议
:GPL 3.0
描述
写个简介吧。做了一个会随机停的八卦灯,程序很简单,可以拿去学习。
面板在嘉立创打印的非常棒!!!
效果:https://www.bilibili.com/video/BV1YW4y1R7Gu/?spm_id_from=333.337.search-card.all.click

程序如下:
// 定义74HC595芯片引脚与Arduino引脚的对应关系
#define DS 8
#define OE 7
#define STCP 6
#define SHCP 5
// 定义要输出的数据
byte data[] = {
0b11111110,
0b01111111,
0b10111111,
0b11011111,
0b11101111,
0b11111101,
0b11111011,
0b11110111,
};
void setup() {
randomSeed(analogRead(0));
// 初始化74HC595芯片引脚
pinMode(DS, OUTPUT);
pinMode(OE, OUTPUT);
pinMode(STCP, OUTPUT);
pinMode(SHCP, OUTPUT);
pinMode(2, INPUT_PULLUP);
// 关闭输出使能
digitalWrite(OE, LOW);
for (int i = 0; i < 8; i++) {
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, 0xff);
digitalWrite(STCP, HIGH);
}
}
void loop() {
// 高速循环3秒
if (digitalRead(2) == 0) {
int stop = random(8); //定义在第几个灯停下
for (int a = 0; a < 11; a++) {
for (int i = 0; i < 8; i++) {
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, data[i]);
digitalWrite(STCP, HIGH);
delay(a * 10);
}
if (a == 10) {
for (int a = 1; a < 6; a++) {
for (int i = 0; i < 8; i++) {
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, data[i]);
digitalWrite(STCP, HIGH);
delay(a * 100);
}
}
for (int loop_end = 1; loop_end < 9; loop_end++) {
if (loop_end == stop) {
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, data[stop - 1]);
digitalWrite(STCP, HIGH);
break;
} else {
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, data[loop_end - 1]);
digitalWrite(STCP, HIGH);
delay(600);
}
}
}
}
}
}

设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论