站内搜索
更多
2025年蛇年征集令作品-蛇年闪闪板-基于Air00
专业版

2025年蛇年征集令作品-蛇年闪闪板-基于Air00

工程标签

Arduino

DIY设计

265
0
0
1

简介

使用彩色丝印,做一块迎蛇年的PCB板。采用CR2032供电, Air001芯片,可编程实现呼吸灯等效果。附代码。 采用RH6616, 触摸亮灯。

简介:使用彩色丝印,做一块迎蛇年的PCB板。采用CR2032供电, Air001芯片,可编程实现呼吸灯等效果。附代码。 采用RH6616, 触摸亮灯。
”暖冬创趣迎新年“

开源协议

GPL 3.0

创建时间:2025-01-08 23:27:06更新时间:2025-03-03 11:15:22

描述

# 蛇年闪闪板

## 目标  
使用彩色丝印,做一块迎蛇年的PCB板。采用CR2032供电, Air001芯片,后续可实现呼吸灯等效果。
采用RH6616, 触摸亮灯。

## 供电

打算做一个可以携带的,所以采用CR2032供电。

没有加降压芯片,也没有做USB接口,但做了排针输入,所以目前只能使用CR2032,或使用干电池供电。

## 后续扩展

- 如果PCB板可用的话,还打算以后加个槽,把小蛇的身体用冷光灯带围起来,可能夜间轮廓线会更加好看些。

- 引出Air001的引脚,以备后续更多功能。

 

## 上班比较忙,没完成,春节放假时,发现芯片烧录不进去,等春节过后,再用jlink方式烧录试一下。

建议手工焊接,感觉不能用铁板烧,否则彩色丝印的白色部分,很明显泛黄,不好看。

下面左边是铁板烧的,右边是手工焊接的,白色部分对比,就很明显了。

用Arduino写了个呼吸灯的小程序,烧录到Air001后,可以实现呼吸灯的效果。

 

#define EYE PB_0
#define HORN PB_1
#define BODY PA_4
#define Button PA_6

void flash(void);
void water(void);
void breath(void);

volatile int touchState = LOW; // 按键当前状态
int waterDelaySec = 1000; // 流水灯延迟时间
int flashDelaySec = 100; // 爆闪延迟时间

// 按键防抖参数
unsigned long lastButtonPress = 0;
const unsigned long debounceDelay = 50;

volatile byte mode = 0; // 当前模式
unsigned long lastMillis = 0; // 用于计时的全局变量

void setup(void) {
pinMode(EYE, OUTPUT);
pinMode(HORN, OUTPUT);
pinMode(BODY, OUTPUT);
analogWrite(EYE, 255); // 共阳,默认LED熄灭
analogWrite(HORN, 255); // 共阳,默认LED熄灭
analogWrite(BODY, 255); // 共阳,默认LED熄灭
pinMode(Button, INPUT_PULLUP); // 设置按键为输入, 默认拉高
Serial.begin(115200);
attachInterrupt(digitalPinToInterrupt(Button), btn_pressed, RISING); // 触发中断
}

void loop(void) {
switch (mode) {
case0:
breath();
break;
case1:
water();
break;
case2:
flash();
break;
case3:
// 空闲模式
Serial.println("空闲模式, 关闭所有LED");
delay(1000);
analogWrite(EYE, 255);
analogWrite(HORN, 255);
analogWrite(BODY, 255);
break;
}
}

// 中断服务函数
void btn_pressed() {
unsignedlong currentMillis = millis();
if (currentMillis - lastButtonPress > debounceDelay){
mode = (mode + 1) % 4; // 切换模式
lastButtonPress = currentMillis;
}
}

// 流水灯
void water() {
Serial.println("开始流水灯");
staticint ledIndex = 0;
staticint ledPins[] = {EYE, HORN, BODY};
 
if (millis() - lastMillis >= waterDelaySec) {
Serial.println("流水灯- 切换LED");
for (int i = 0; i < 3; i++) {
analogWrite(ledPins[i], 255);
}
analogWrite(ledPins[ledIndex], 0);
ledIndex = (ledIndex + 1) % 3;
lastMillis = millis();
}
}

// 呼吸灯
void breath() {
Serial.println("开始呼吸灯");
staticint brightness = 0;
staticint fadeAmount = 5;
constint breathDelay = 20;

if (millis() - lastMillis >= breathDelay) {
Serial.println("呼吸灯- 切换亮度, brightness => " + String(brightness));
analogWrite(EYE, brightness);
analogWrite(HORN, brightness);
analogWrite(BODY, brightness);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
lastMillis = millis();
}
}

// 爆闪灯
void flash() {
Serial.println("开始爆闪灯");
static byte ledState = 255;
int count = 0; //爆闪5次

while (count < 5){
if (millis() - lastMillis >= flashDelaySec) {
Serial.println("爆闪灯- 切换亮灭状态");
if (ledState == 255){
ledState = 0;
} else {
ledState = 255;
}
analogWrite(EYE, ledState);
analogWrite(HORN, ledState);
analogWrite(BODY, ledState);
lastMillis = millis();
count += 1;
}
}
}

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
IMG_5758 2.MOV
0
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航