前段时间刷b站看到嘉立创白嫖梵高星空pcb板的视频,以学习的名义将pcb板打了回来。打回来板后发现板子透光很好看,就在b站里找到了同样用星空板做小夜灯的视频,于是就跟着up主的视频复刻了星空小夜灯。
项目简介
基于b站“我不是姓崔的”up主的星空pcb,使用STM32F103C8T6芯片制作的小夜灯。本项目中主要用到ws2812b灯带和雷达检测模块。
PCB和元器件准备
首先在嘉立创中新建工程文件将原理图绘制出来
(原理图)
原理图完成后,生成pcb文件,布局pcb板
(pcb及3D预览)
以及星空pcb板:https://oshwhub.com/sytnocui/star-pcb-drawing
pcb板完成后,现在需要准备焊接对应的元器件
软件准备
使用kill5进行编程
这里放主程序的代码,其余代码在资源文件里
#define WS2812B_LED_QUANTITY 30
extern uint32_t WS2812B_Buf[WS2812B_LED_QUANTITY]; // 0xGGRRBB
int MODE = 0;
int SWIFT = 0;
uint32_t color = 0x005577; // 初始颜色
void Init(void)
{
RCC_Init();
WS2812B_Init();
Rader_Init();
Crontrl_Init();
}
int main(void)
{
Init();
while(1)
{
SWIFT = RCrontrl_GetMode();
MODE = Rader_GetMode();
if(MODE == 1)
{
if (SWIFT != 1)
{
if(color <= 0xFFFFFF)
color += 10; //修改颜色,使灯带的颜色变化
else
color = 0x000023;
for (int i = 0; i < WS2812B_LED_QUANTITY; i++)
{
WS2812B_Buf[i] = color; // 黑色
}
WS2812B_UpdateBuf();
}
else
{
for (int i = 0; i < WS2812B_LED_QUANTITY; i++)
{
WS2812B_Buf[i] = 0xFFFFFF; // 黑色
}
WS2812B_UpdateBuf();
}
}
else
{
WS2812B_UpdateBuf();
WS2812B_SetBuf(0x000000);
WS2812B_ClearBuf();
WS2812B_UpdateBuf();
}
Delay_ms(100); // 添加延时,以便观察效果
}
}
组装
将烧录好的pcb和背景pcb组装在一起
b站up主视频链接:星空,PCB复刻_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18H4y1L7UY/?vd_source=586f992815c727960ef2da21fce2dccd基于星空PCB做了一个小夜灯_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1pZ421B7Lt/?spm_id_from=333.337.search-card.all.click&vd_source=586f992815c727960ef2da21fce2dccd