资料介绍
描述
万圣节快乐!今天我们本着万圣节的精神,将学习一个教程来制作一个陌生人事物“帮助我”板。
您需要的零件:
- 发光二极管
- 硬纸板或刨花板
- 9V电池
- 夏普
Elegoo Uno R3 完整入门套件非常适合此用途,因为它包含 4 种不同的 LED 颜色。幸运的是,我周围还有一些其他颜色的 LED,这样我就可以为项目添加更多变化。
原理图
为了使用更少的 I/O 引脚,我们将使用 5×5 矩阵。这将覆盖字母 AY。对于 Z 它将有自己的引脚。通过查看上面的示意图,您可以看到,为了打开一个 LED,该行将变为高电平,而源将被设置为低电平。例如。要打开 A,PIN 2 将设置为高电平,而 Pin 8 将设置为低电平。这只会打开 A。将一个 ROW 设置为高电平而将其他 ROWS 设置为 LOW 以及将一列设置为低电平而将其他列设置为 HIGH 的每种组合一次只会点亮一个 LED。这使用 10 个引脚 + 1 来完成所有 26 个字母。与必须为每个 LED 配备一个 I/O 相比,这使用的 I/O 引脚要少得多。
接下来要决定的是源电阻(R1-R6)。由于有不同的 LED,因此会有不同的电压降。LED 两端的电压范围为 1.5V 至 3.5V。因为这应该看起来很吓人,所以我们并不真正关心某些 LED 可能看起来更亮而其他 LED 可能看起来更暗。我们唯一关心的是确保我们不超过 Arduino 引脚可以提供的最大电流 20mA。我最终为这个项目挑选了 250 欧姆的电阻器。这为我们提供了 (5V-1.5V)/250 Ohm 至 (5V-3.5V)/250Ohms 或 14mA – 6mA 的范围。这没关系,因为我们不会超过 I/O 引脚的最大 20mA 要求。
步骤1
现在我们有了要使用的电路,第一步是拿起硬纸板或硬纸板并布置字母表。确保事先在一张纸上试一试,这样你才能得到正确的字母间距和大小
第2步
接下来我们将在字母下方钻孔。尽量让这些间隔开,以便 LED 引线可以轻松插入孔中。
步骤 3
钻完所有孔后,就可以插入所有 LED 了。我选择尝试让 LED 随机。将它们全部插入相同的极性方向,这样更容易接线。我在左侧插入了每个带有长引线的 LED。在查看原理图时,这使得 LED 接线变得非常容易。
第4步
现在是时候开始焊接了。您需要将电路板翻转到背面。确保执行此操作时 LED 不会掉落。当我将它翻转到背面时,我通过将另一块芯片板放在 LED 的顶部来做到这一点。
步骤 5
现在继续添加你的 Arduino,9V 电池并将所有东西连接到适当的引脚。还可以使用电工胶带确保没有短路。我把我的放在 LED 的引线和 Arduino 的背面。然后我使用电工胶带将 9V 电池和 Arduino 固定到电路板背面。
第 6 步 – 编码
现在我们将开始编码。您可以通过使用 digitalWrite() 进行设置来测试您的电路和布线,并将所有行设置为低,除了一列,然后将所有列设置为高,除了一列,并确保相应的 LED 为组合打开。
我们将不使用 digitalWrite(),而是直接进入 ATMEGA 微型库,通过将PORTD 和 PORTB设置为我们想要打开和关闭的数字 I/O来打开和关闭引脚。这将使编程更容易。PORTD 控制数字 I/O 引脚 0-7,而 PORTB 控制引脚 8-13。例如:如果您想打开引脚 7 并关闭所有其他引脚,只需设置 PORTD = 10000000。
首先,我们将创建一个结构来定义每个字母的端口配置。
typedef struct // Create a structure to convert Binary of the PORTs for the corresponding Letter
{
byte portd;
byte portb;
}letter_data_t;
我们将命名为 letter_data_t 的结构。接下来,我们将布置表格,根据我们连接的 5×5 矩阵将每个字母定义为一个端口。这将是 letter[] 数组。
const letter_data_t letter[] =
{
{B00000100,B11111110}, //A
{B00000100,B11111101}, //B
{B00000100,B11111011}, //C
{B00000100,B11110111}, //D
{B00000100,B11101111}, //E
{B00001000,B11111110}, //F
{B00001000,B11111101}, //G
{B00001000,B11111011}, //H
{B00001000,B11110111}, //I
{B00001000,B11101111}, //J
{B00010000,B11111110}, //K
{B00010000,B11111101}, //L
{B00010000,B11111011}, //M
{B00010000,B11110111}, //N
{B00010000,B11101111}, //O
{B00100000,B11111110}, //P
{B00100000,B11111101}, //Q
{B00100000,B11111011}, //R
{B00100000,B11110111}, //S
{B00100000,B11101111}, //T
{B01000000,B11111110}, //U
{B01000000,B11111101}, //V
{B01000000,B11111011}, //W
{B01000000,B11110111}, //X
{B01000000,B11101111}, //Y
{B10000000,B11111111}, //Z
{B00000000,B00000000} //26 = 0ff
};
现在已经使用我们上面创建的结构为每个字母建立了引用 PIN 输出的表。
接下来我们将转到代码的设置部分。每个引脚都需要设置为输出
void setup() {
// Setup each pin used as an output
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
现在已经设置了代码并创建了表,我们将设置一些函数。该程序的主要功能是 runHelpme() 函数。这将使董事会拼写 HELP ME。这是我们试图表明“颠倒”中的某个人可能正在尝试联系我们的尝试。
void runHelpme()
{
PORTD = letter['h'-'a'].portd;
PORTB = letter['h'-'a'].portb;
delay(1000);
PORTD = letter['e'-'a'].portd;
PORTB = letter['e'-'a'].portb;
delay(1000);
PORTD = letter['l'-'a'].portd;
PORTB = letter['l'-'a'].portb;
delay(1000);
PORTD = letter['p'-'a'].portd;
PORTB = letter['p'-'a'].portb;
delay(1000);
PORTD = letter[26].portd;
PORTB = letter[26].portb;
delay(1000);
PORTD = letter['m'-'a'].portd;
PORTB = letter['m'-'a'].portb;
delay(1000);
PORTD = letter['e'-'a'].portd;
PORTB = letter['e'-'a'].portb;
delay(1000);
PORTD = letter[26].portd; //Turn off the LEDs
PORTB = letter[26].portb; //Turn off the LEDs
delay(1000);
}
这使用了我们创建的结构,并将减去我们想要的字母减去 'a' ,这是表中的第一个字母。这将通过给我们我们创建的表的想要的“字母”编号来实现。设置字母后,我们延迟一秒钟,然后打开下一个字母。
下一个我们要写的函数是一些花哨的函数,让棋盘看起来有点怪异。第一个 flair 函数将是一个 runRandom() 函数,它将随机选择字母并将它们打开随机次数。
void runRandom()
{
for(int i = 0; i<=15; i++)
{
int x = random(0,25);
PORTD = letter[x].portd;
PORTB = letter[x].portb;
delay(random(40,200));
delay(random(40,200));
delay(random(40,200));
}
}
这将运行 15 个随机字母。我们将 x 设置为 0-25 之间的随机数,它选择 26 个字母之一,然后等待 40 毫秒到 200 毫秒之间的三个随机时间。
我们要编写的最后一个函数是 flickerRandom() 函数。这将闪烁一个随机函数。我认为这无疑增加了一个很好的感觉,即董事会正在发生一些奇怪的事情。
void flickerRandom()
{
int x = random(0,25);
for(int i = 0; i<=5; i++)
{
PORTD = letter[x].portd;
PORTB = letter[x].portb;
delay(random(40,500));
PORTD = letter[26].portd;
PORTB = letter[26].portb;
delay(random(40,500));
}
}
这将在 40 毫秒至 500 毫秒的闪烁时间之间的任何位置闪烁 5 个随机字母。
现在所有的函数都写好了,是时候把所有的主循环代码放在一起了。
void loop() {
flickerRandom();
delay(2000);
runHelpme();
delay(2000);
flickerRandom();
flickerRandom();
runRandom();
}
这将首先启动闪烁例程,延迟 2 秒,显示我们的“帮助我”例程,等待 2 秒,再次连续闪烁 2 次,然后运行随机例程。这一切都表明陌生人的事情板肯定有一些奇怪的事情正在发生,如果你观察得足够近,有人可以看到它在说“帮助我”。很明显,来自 UPSIDE DOWN 的人正试图联系我们!
您可以在此处获得完整的 BreakoutBros Stranger Things 代码。
请确保您订阅以查看有关项目、教程和评论的更多更新!
- 陌生人闪烁消息开源硬件
- pathoy教程-陌生的metaclass总结
- 单片机数据采集系统PCB板制作
- 对比两种制作电路板的方法,哪个更好?资料下载
- Genesis2000线路制作教程 genesis2000软件自学 0次下载
- 电路板的制作过程和使用的材料资料总结 0次下载
- 印制电路板的制作教程详细资料概述 0次下载
- 如何设计java web人事管理系统的资料说明 13次下载
- 2017年江西省大学生电子设计制作现场(28届)赛题 22次下载
- pcb四层板制作 0次下载
- 多层板与双层板的制作 0次下载
- 电路板的设计与制作总结 21次下载
- 揭开来电显示修改面纱 575次下载
- 军事物流系统架构及其调度决策
- pcb板图制作软件 0次下载
- 基于欧智通V200Z-R开发板的智能门铃设计 2235次阅读
- 印制电路板的制作及检验 9227次阅读
- PCB板加工制作的考虑因素 2156次阅读
- 手机电路板的制作步骤 2w次阅读
- 感光电路板的使用方法和制作步骤解析 2407次阅读
- 电路板制作原理与结构!自制电路板最常用的五种方法比较 2.5w次阅读
- led线路板制作流程 4233次阅读
- 热转印电路板的制作方法 5975次阅读
- 电路板的制作案例分享 5160次阅读
- Protel99制作PCB板时各层各代表什么含义? 8754次阅读
- 动态纹理合成新方法,由“静”至“动” 4218次阅读
- 太阳能板的制作方法(三种太阳能板制作方法) 18.9w次阅读
- 人脸识别技术原理分析 1.7w次阅读
- 双层PCB板制作过程与双层PCB板制作工艺(干货分享) 1w次阅读
- 爱车又无法启动?解密蓄电池那些事!怎么选择蓄电池?怎么延长蓄电池的生命周期? 2023次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多