洞洞板改造圣诞树


ChangeCode
转载
发布时间: 2025-06-10 16:20:08 | 阅读数 0收藏数 0评论数 0
封面
在本文和 GlowDuino Uno 板的帮助下,您将能够创建带有 9 个 PWM 控制 LED 的闪烁性能板圣诞树。这是原装Uno板无法做到的

准备工作:

材料:

材料名称
数量
备注
GlowDuino Uno
洞洞板
LED二极管
9
电阻
数据线
1

材料展示

用于控制 LED 的 GlowDuino Uno 板、3mm LED、电阻、用于安装组件的洞洞板

2

将洞洞板切割成一定尺寸

影响项目结果的第一件事是树的大小和形状。如果您购买了更大的 LED,或者每个输出引脚放置了多个 LED,则可能需要制作更大的树。出于我们的目的,3mm LED 和每个引脚一个 LED 就足够了,因此选择了 5cm x 11cm 的高性能板尺寸。预制的穿孔板通常可以用手锯或更坚固的夹刀切割。只需事先标记形状,然后使用您选择的工具将板切掉即可。

3

放置组件

将电路板切割成形状后,您需要将组件放置到位。对于您放置的每个 LED,您将需要一个串联的电阻器来限制电流。要找到您需要的电阻器,您可以使用此在线计算器找到正确的值: 链接 为此,您需要知道 LED 的电压和电流以及 GlowDuino 板将使用的电压。在我们的例子中,我们使用的是 3.3V 输出,LED 电压为 2V。绿色和黄色 LED 消耗 6mA,红色 LED 消耗 15mA。使用这些值,我们得到了用于绿色和黄色 LED 的 180 欧姆电阻器,以及用于红色 LED 的 75 欧姆电阻器。在我们并联两个黄色 LED 的树顶上,每个 LED 的电阻器也需要并联。这样,两个 LED 将有足够的电流来工作。

以美观且易于连接的方式放置您选择的组件。我们建议将 LED 放置在其负极朝外的方向。这样,您以后就可以用一根电线将它们全部连接在一起。同样,您可能希望将电阻器放置在靠近 LED 正极的位置,这样就不需要任何额外的电线来进行串联连接。如果你正在制作这棵完全相同的树,你可以按照如图所示的布局进行操作。

4

将组件焊接在一起

组件就位后,您可以继续将它们焊接到位。在它们固定并就位后,您可以在组件之间建立必要的连接。

您需要将 LED 的每个负极引脚连接在一起,在这里您可以看到电路板外周的单根电线效果最好。

连接所有负极后,您可以在电阻器和 LED 之间进行连接。LED 的每个正极都需要连接到一个电阻器。这样可以限制电流,并且 LED 不会损坏。在下一步中,我们将使用电阻器的另一侧连接导线。

5

为树接线

将组件焊接在一起后,下一步将需要一些电线。如果您想将 GlowDuino 板用作树的支架,您可能希望在此步骤中使用实芯线,如果没有,那么简单的柔性连接线就足够了。

您需要切割 9 根具有足够松弛度的线片,使其能够到达微控制器上所有必要的引脚。准备就绪后,将一根导线焊接到每个电阻器的自由端,并将多余的导线连接到中间。要完成电路,您还需要将单根导线焊接到连接所有 LED 的公共负极线上。如果您想将电线固定在电路板上,您还可以使用额外的部件来覆盖电线束。这样,接线保持整洁。

6

对 GlowDuino 板进行编程

在连接任何东西之前,您需要将程序上传到您的 GlowDuino 板。下载随附的程序并使用 Arduino IDE 程序,将其上传到您的 GlowDuino 板。上传后,您将能够看到板上PWM引脚的指示灯开始以随机方式亮起。这表示上传成功。

7

连接树

我们将要使用的输出引脚在板上标有“~”符号。标有此符号的每个输出引脚都是使能PWM的引脚。或者,您也可以将电路板翻转过来并查看电路板背面的引脚图。总而言之,我们在这个项目中使用了 9 个 PWM 引脚,这就是为什么需要一个 GlowDuino 板的原因。它比普通的 uno 板多 3 个 PWM 输出,因此您可以控制更多的 LED

找到引脚后,您可以弯曲和修剪电线以安装到位。修剪电线后,您需要剥去每根电线末端的绝缘层,并将连接到电阻器的每根电线插入标记为 PWM 引脚的引脚。最后,您需要将公共负极线连接到 GlowDuino 板上的 GND 引脚,以便完成电路。

8

您的圣诞树完成

如果您正确地完成了所有操作,则只需将USB插入微控制器即可享受灯光秀。

用 LED 树装饰您的办公桌和窗户,并与 GlowDuino 一起度过一个快乐的圣诞节!

9

该计划如何运作?

选择随机引脚是通过 GlowDuino 的内置 random() 函数实现的。这样,程序就会生成一个介于 0 和 12 之间的随机数,用于确定要更改的引脚。

选择引脚后,会生成另一个随机数,该随机数将决定以哪种方式更改引脚。如果高于阈值,它会将目标强度设置为最大值,如果低于阈值,则会将目标强度设置为最小值。淡入淡出效果将根据此处设置的值在下一部分实现。

更改目标值后,程序进入一个循环,持续一段时间,根据目标值增加或减少每个引脚的PWM值。该PWM值通过简单的analogWrite()函数写入每个引脚。每个循环之间的延迟将决定每个 LED 的淡入淡出时间,因此您可以实现更快或更慢的变化灯光秀。

在设定的时间后,程序退出循环并从头开始。

此外,为了能够设置点亮 LED 的密度,还有一个变量可以容纳随机发生器的阈值。如果此数字较低,则生成的随机数低于此值的情况将较少,因此点亮的 LED 数量会减少。

#define probability 5 // Sets the density of the lit up LEDs

int pwmStates[] = {0,0,0,0,0,0,0,0,0,0,0,0}; // Stores the current state of the pins
int pwmTarget[] = {0,0,0,0,0,0,0,0,0,0,0,0}; // Stores the target state of the pins
int rnd = 0; // Stores the random numbers for choosing the pins
int probable = 0; // Stores the random number for the pwm values

void setup()
{
for(int i = 0; i < 12; i++){ // Set all nececary pins to output
pinMode(i, OUTPUT);
}
}

void loop()
{
rnd = random(0, 12);
if(rnd != 4 && rnd != 7 && rnd != 8){ // Chose a valid PWM pin
probable = random(1, 10);
if(probable <= probability){ // Decide if the pin needs to fade on or off
pwmTarget[rnd] = 255;
}else{
pwmTarget[rnd] = 0;
}
for(int i = 0; i < 50; i++){ // Fade the LEDs towards the target value over time
for(int n = 0; n < 12; n++){
if(pwmTarget[n] == 255){
pwmStates[n]++;
}else{
pwmStates[n]--;
}
if(pwmStates[n] >= 255){ // If the pwm value is out of range, reset value
pwmStates[n] = 255;
}
if(pwmStates[n] <= 0){
pwmStates[n] = 0;
}
analogWrite(n, pwmStates[n]); // Write values to the output
}
delay(1);
}
}
}
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报