【单片机毕业设计】【mcuclub-dz-805】基于STM32单片机的彩灯控制器
本项目基于STM32F103C8T6单片机设计开发了一款多功能彩灯控制器。系统通过3个RGB灯实现5种灯光效果模式,包括单灯渐变色循环、多灯同步变色等,可通过5个物理按键或语音识别模块(唤醒词"小远小远")进行模式切换。硬件采用两层PCB板设计,集成TYPE-C供电接口,软件使用Keil5开发环境,逻辑程序与驱动程序分离。系统框图清晰展示了以单片机为核心的中控部分、按键/语音输
一、基本介绍
项目名:基于STM32单片机的彩灯控制器
项目编号:mcuclub-dz-805
单片机类型:STM32F103C8T6
具体功能:
1、通过3个RGB灯展示灯光
2、通过5个按键展示5种不同的模式
模式一:一个灯亮完三种颜色再换另一个灯亮
模式二:一个灯亮一个颜色,从暗到亮再到暗,然后切换下一个颜色,亮完三个颜色后再换下一个灯
模式三:三个灯一起亮一种颜色的灯,然后依次亮红、绿、蓝
模式四:三个灯同时亮一种颜色从暗到亮再到暗,然后换下一种颜色
模式五:一个灯亮一个颜色,然后切换下一个灯
3、通过语音识别SU-03T控制不同的模式”唤醒指令:小远小远
二、资料总览
实物资料

三、32单片机部分资料展示
1、实物图展示
单片机型号:STM32F103C8T6
供电接口:TYPE-C
板子类型:PCB集成板,厚度1.2,两层板(上下层覆铜接地)
器件类型:元器件基本上为插针式,个别降压芯片会使用贴片式。
2、原理图展示
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构图
3、PCB图展示
由原理图导出,中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。
四、系统框图
绘制软件:VISIO
本设计以STM32F103C8T6单片机为核心控制器,加上其他的模块一起组成彩灯控制器检测系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STM32F103C8T6单片机,其主要作用是获取输入的部分数据,经过内部处理,控制输出部分。输入由三部分组成,第一部分是语音识别模块,通过该模块控制灯光模式;第二部分是按键模块,通过按键选择灯光模式;第三部分是供电模块,通过该模块可给整个系统进行供电。输出由一部分组成,第一部分是RGB灯模块,通过该模块模拟灯光。系统框图如图3.1所示。
五、部分程序展示
软件版本:keil5
注意:逻辑程序和驱动程序分开,分布于main.c和其他.c文件
else if(flag_mode_4 == 1) //模式四:三个灯同时亮一种颜色从暗到亮再到暗,然后换下一种颜色
{
switch(flag_step)
{
case 0:
colour_1 = 0;
colour_2 = 0;
colour_3 = 0;
state_pwm_1 = 1;
state_pwm_2 = 1;
state_pwm_3 = 1;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 1:
colour_1 = 0;
colour_2 = 0;
colour_3 = 0;
state_pwm_1 = 2;
state_pwm_2 = 2;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 2:
colour_1 = 0;
colour_2 = 0;
colour_3 = 0;
state_pwm_1 = 3;
state_pwm_2 = 3;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 3:
colour_1 = 0;
colour_2 = 0;
colour_3 = 0;
state_pwm_1 = 2;
state_pwm_2 = 2;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 4:
colour_1 = 0;
colour_2 = 0;
colour_3 = 0;
state_pwm_1 = 1;
state_pwm_2 = 1;
state_pwm_3 = 1;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 5:
colour_1 = 1;
colour_2 = 1;
colour_3 = 1;
state_pwm_1 = 1;
state_pwm_2 = 1;
state_pwm_3 = 1;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 6:
colour_1 = 1;
colour_2 = 1;
colour_3 = 1;
state_pwm_1 = 2;
state_pwm_2 = 2;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 7:
colour_1 = 1;
colour_2 = 1;
colour_3 = 1;
state_pwm_1 = 3;
state_pwm_2 = 3;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 8:
colour_1 = 1;
colour_2 = 1;
colour_3 = 1;
state_pwm_1 = 2;
state_pwm_2 = 2;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 9:
colour_1 = 1;
colour_2 = 1;
colour_3 = 1;
state_pwm_1 = 1;
state_pwm_2 = 1;
state_pwm_3 = 1;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 10:
colour_1 = 2;
colour_2 = 2;
colour_3 = 2;
state_pwm_1 = 1;
state_pwm_2 = 1;
state_pwm_3 = 1;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 11:
colour_1 = 2;
colour_2 = 2;
colour_3 = 2;
state_pwm_1 = 2;
state_pwm_2 = 2;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 12:
colour_1 = 2;
colour_2 = 2;
colour_3 = 2;
state_pwm_1 = 3;
state_pwm_2 = 3;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 13:
colour_1 = 2;
colour_2 = 2;
colour_3 = 2;
state_pwm_1 = 2;
state_pwm_2 = 2;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 14:
colour_1 = 2;
colour_2 = 2;
colour_3 = 2;
state_pwm_1 = 1;
state_pwm_2 = 1;
state_pwm_3 = 1;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step = 0;
colour_1 = 0;
colour_2 = 0;
colour_3 = 0;
}
break;
default:
break;
}
}
else if(flag_mode_5 == 1) //模式五:一个灯亮一个颜色,然后切换下一个灯
{
switch(flag_step)
{
case 0:
colour_1 = 0;
state_pwm_1 = 3;
state_pwm_2 = 0;
state_pwm_3 = 0;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 1:
colour_2 = 0;
state_pwm_1 = 0;
state_pwm_2 = 3;
state_pwm_3 = 0;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 2:
colour_3 = 0;
state_pwm_1 = 0;
state_pwm_2 = 0;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 3:
colour_1 = 1;
state_pwm_1 = 3;
state_pwm_2 = 0;
state_pwm_3 = 0;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 4:
colour_2 = 1;
state_pwm_1 = 0;
state_pwm_2 = 3;
state_pwm_3 = 0;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 5:
colour_3 = 1;
state_pwm_1 = 0;
state_pwm_2 = 0;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 6:
colour_1 = 2;
state_pwm_1 = 3;
state_pwm_2 = 0;
state_pwm_3 = 0;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 7:
colour_2 = 2;
state_pwm_1 = 0;
state_pwm_2 = 3;
state_pwm_3 = 0;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step++;
}
break;
case 8:
colour_3 = 2;
state_pwm_1 = 0;
state_pwm_2 = 0;
state_pwm_3 = 3;
if(flag_time_finish_500ms == 1)
{
flag_time_finish_500ms = 0;
flag_step = 0;
colour_1 = 0;
colour_2 = 0;
colour_3 = 0;
}
break;
default:
break;
}
}
else //没有模式时,灯关闭
{
state_pwm_1 = 0;
state_pwm_2 = 0;
state_pwm_3 = 0;
}
if(state_pwm_1 == 0) //控制灯1亮度
{
pwm_1 = 0;
}
else if(state_pwm_1 == 1)
{
pwm_1 = 3;
}
else if(state_pwm_1 == 2)
{
pwm_1 = 6;
}
else
{
pwm_1 = 10;
}
if(state_pwm_2 == 0) //控制灯2亮度
{
pwm_2 = 0;
}
else if(state_pwm_2 == 1)
{
pwm_2 = 3;
}
else if(state_pwm_2 == 2)
{
pwm_2 = 6;
}
else
{
pwm_2 = 10;
}
if(state_pwm_3 == 0) //控制灯3亮度
{
pwm_3 = 0;
}
else if(state_pwm_3 == 1)
{
pwm_3 = 3;
}
else if(state_pwm_3 == 2)
{
pwm_3 = 6;
}
else
{
pwm_3 = 10;
}
}
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)