0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何制作POV LED空气写入器

454398 来源:网络整理 作者:网络整理 2019-11-28 10:04 次阅读

您可以通过闪烁的LED来完成各种操作,在这个简单的项目中,我们将制造一个小型设备,当您来回挥动消息时,它可以在空中广播消息。它比您想像的要容易,而且零件的总成本不到5美元。

该项目利用了一种称为视觉持久性的视觉幻觉,使文本在空中出现。晚上有人快速移动点燃的烟火时,您可能会遇到这种现象。我们将使用Arduino和一些LED来模仿这种效果。该项目易于构建,几乎不需要任何组件,而且几乎不需要焊接(尽管如果您想了解一些开始使用烙铁的技巧,请查阅本指南)。

您将需要

Arduino(我使用了$ 2Nano,因为它紧凑且便宜,但任何型号都可以)。

5个红色LED。

5x220欧姆电阻

1x9v电池座。

1x拨动开关。

一块protoboard,

用于存放成品的外壳(我用了一个漆成黑色的小纸板箱)。

您还需要电烙铁和一些焊料才能将它们放在一起。

虽然可选,但如果您要使用任何焊锡芯,也可以派上用场。焊接错误。面包板和一些连接线对于测试电路也很有用。

如何制作POV LED空气写入器

布线

布线不那么简单。首先,如下图所示连接Arduino,LED和电阻器

引脚D2到D6分别连接到每个电阻,这些电阻连接到每个LED的正极(长脚)。阴极接地,然后接地回Arduino。完成后,它应该看起来像这样:

就是这样:我们的电路已经完成!

代码

现在,将您的Arduino连接到计算机,然后打开Arduino IDE。如果您不熟悉Arduino,并希望获得良好的入门指南,此链接将非常有用。

打开一个新草图并复制此代码。此代码是从该项目中修改的,您可以

// how long each led stays on for

int delayTime = 1;

//how long between each

int charBreak = 3;

//how long to wait after the message is finished before it repeats

int resetTime = 20;

int LED1 = 2;

int LED2 = 3;

int LED3 = 4;

int LED4 = 5;

int LED5 = 6;

void setup(){

pinMode(LED1, OUTPUT);

pinMode(LED2, OUTPUT);

pinMode(LED3, OUTPUT);

pinMode(LED4, OUTPUT);

pinMode(LED5, OUTPUT);

}

int a[] = {1, 6, 26, 6, 1};

int b[] = {31, 21, 21, 10, 0};

int c2[] = {14, 17, 17, 10, 0};

int d[] = {31, 17, 17, 14, 0};

int e[] = {31, 21, 21, 17, 0};

int f[] = {31, 20, 20, 16, 0};

int g[] = {14, 17, 19, 10, 0};

int h[] = {31, 4, 4, 4, 31};

int i[] = {0, 17, 31, 17, 0};

int j[] = {0, 17, 30, 16, 0};

int k[] = {31, 4, 10, 17, 0};

int l[] = {31, 1, 1, 1, 0};

int m[] = {31, 12, 3, 12, 31};

int n[] = {31, 12, 3, 31, 0};

int o[] = {14, 17, 17, 14, 0};

int p[] = {31, 20, 20, 8, 0};

int q[] = {14, 17, 19, 14, 2};

int r[] = {31, 20, 22, 9, 0};

int s[] = {8, 21, 21, 2, 0};

int t[] = {16, 16, 31, 16, 16};

int u[] = {30, 1, 1, 30, 0};

int v[] = {24, 6, 1, 6, 24};

int w[] = {28, 3, 12, 3, 28};

int x[] = {17, 10, 4, 10, 17};

int y[] = {17, 10, 4, 8, 16};

int z[] = {19, 21, 21, 25, 0};

int eos[] = {0, 1, 0, 0, 0};

int excl[] = {0, 29, 0, 0, 0};

int ques[] = {8, 19, 20, 8, 0};

int space[] = {0, 0, 0, 0, 0};

void displayLine(int line){

int myline;

myline = line;

if (myline》=16) {digitalWrite(LED1, HIGH); myline-=16;} else {digitalWrite(LED1, LOW);}

if (myline》=8) {digitalWrite(LED2, HIGH); myline-=8;} else {digitalWrite(LED2, LOW);}

if (myline》=4) {digitalWrite(LED3, HIGH); myline-=4;} else {digitalWrite(LED3, LOW);}

if (myline》=2) {digitalWrite(LED4, HIGH); myline-=2;} else {digitalWrite(LED4, LOW);}

if (myline》=1) {digitalWrite(LED5, HIGH); myline-=1;} else {digitalWrite(LED5, LOW);}

}

void displayChar(char c){

if (c == ‘a’){for (int i = 0; i 《5; i++){displayLine(a[i]);delay(delayTime);}displayLine(0);}

if (c == ‘b’){for (int i = 0; i 《5; i++){displayLine(b[i]);delay(delayTime);}displayLine(0);}

if (c == ‘c2’){for (int i = 0; i 《5; i++){displayLine(c2[i]);delay(delayTime);}displayLine(0);}

if (c == ‘d’){for (int i = 0; i 《5; i++){displayLine(d[i]);delay(delayTime);}displayLine(0);}

if (c == ‘e’){for (int i = 0; i 《5; i++){displayLine(e[i]);delay(delayTime);}displayLine(0);}

if (c == ‘f’){for (int i = 0; i 《5; i++){displayLine(f[i]);delay(delayTime);}displayLine(0);}

if (c == ‘g’){for (int i = 0; i 《5; i++){displayLine(g[i]);delay(delayTime);}displayLine(0);}

if (c == ‘h’){for (int i = 0; i 《5; i++){displayLine(h[i]);delay(delayTime);}displayLine(0);}

if (c == ‘i’){for (int it = 0; it 《5; it++){displayLine(i[it]);delay(delayTime);}displayLine(0);}

if (c == ‘j’){for (int i = 0; i 《5; i++){displayLine(j[i]);delay(delayTime);}displayLine(0);}

if (c == ‘k’){for (int i = 0; i 《5; i++){displayLine(k[i]);delay(delayTime);}displayLine(0);}

if (c == ‘l’){for (int i = 0; i 《5; i++){displayLine(l[i]);delay(delayTime);}displayLine(0);}

if (c == ‘m’){for (int i = 0; i 《5; i++){displayLine(m[i]);delay(delayTime);}displayLine(0);}

if (c == ‘n’){for (int i = 0; i 《5; i++){displayLine(n[i]);delay(delayTime);}displayLine(0);}

if (c == ‘o’){for (int i = 0; i 《5; i++){displayLine(o[i]);delay(delayTime);}displayLine(0);}

if (c == ‘p’){for (int i = 0; i 《5; i++){displayLine(p[i]);delay(delayTime);}displayLine(0);}

if (c == ‘q’){for (int i = 0; i 《5; i++){displayLine(q[i]);delay(delayTime);}displayLine(0);}

if (c == ‘r’){for (int i = 0; i 《5; i++){displayLine(r[i]);delay(delayTime);}displayLine(0);}

if (c == ‘s’){for (int i = 0; i 《5; i++){displayLine(s[i]);delay(delayTime);}displayLine(0);}

if (c == ‘t’){for (int i = 0; i 《5; i++){displayLine(t[i]);delay(delayTime);}displayLine(0);}

if (c == ‘u’){for (int i = 0; i 《5; i++){displayLine(u[i]);delay(delayTime);}displayLine(0);}

if (c == ‘v’){for (int i = 0; i 《5; i++){displayLine(v[i]);delay(delayTime);}displayLine(0);}

if (c == ‘w’){for (int i = 0; i 《5; i++){displayLine(w[i]);delay(delayTime);}displayLine(0);}

if (c == ‘x’){for (int i = 0; i 《5; i++){displayLine(x[i]);delay(delayTime);}displayLine(0);}

if (c == ‘y’){for (int i = 0; i 《5; i++){displayLine(y[i]);delay(delayTime);}displayLine(0);}

if (c == ‘z’){for (int i = 0; i 《5; i++){displayLine(z[i]);delay(delayTime);}displayLine(0);}

if (c == ‘!’){for (int i = 0; i 《5; i++){displayLine(excl[i]);delay(delayTime);}displayLine(0);}

if (c == ‘?’){for (int i = 0; i 《5; i++){displayLine(ques[i]);delay(delayTime);}displayLine(0);}

if (c == ‘。’){for (int i = 0; i 《5; i++){displayLine(eos[i]);delay(delayTime);}displayLine(0);}

if (c == ‘ ’){for (int i = 0; i 《5; i++){displayLine(space[i]);delay(delayTime);}displayLine(0);}

delay(charBreak);

}

void displayString(char* s){

for (int i = 0; i《=strlen(s); i++){

displayChar(s[i]);

}

}

void loop(){

//Change the text inside here to change the text displayed.

//Make sure to keep the brackets and the quotation marks.

displayString(“。.hello!。.”);

delay(40);

}

保存此草图,然后将其上传到您的电路板上。如果出现任何错误,请确保选择了正确的板卡和COM端口。您的LED应该开始闪烁。如果没有,请检查面包板上的所有连接。在代码开头声明的整数决定了文本显示的速度。数值越大,挥动设备的速度就越快。我发现这里使用的数字效果很好。

现在进行快速测试。断开Arduino与USB电缆的连接,然后将电池座连接到arduino的VIN和GND引脚上

现在,您可以移动它了,小心地尝试摆动您前面的LED。如果您周围足够暗,您应该会看到一些字母在空中形成。我发现它有助于设置手机来捕获它。

它有效!现在使它变得更永久一些。

准备就绪的铁!

像这样在原型板上放置Arduino板,电阻器和LED:

当然,只要电路保持不变,就可以使布局紧凑。确保您在Arduino的每一侧留出至少一行原型板触点,以用于组件和电源。如果您是电子产品的初学者,这里有一些很棒的提示。

我们将把LED阴极成一条线焊接在一起以形成共同的基础,就像我们制作LED矩阵时所做的一样

折叠每个阴极,使其与另一个阴极重叠,然后焊接它们以形成一条不间断的线。现在,我们需要将阳极焊接到旁边的电阻器脚上。我发现最简单的方法是将每条脚焊接到各自的焊盘上,然后将烙铁放在它们之间,以加热两个接头,最后再添加更多的焊料以弥合它们之间的间隙。

检查每个连接都已牢固连接,然后使用剪钳从电阻和LED上断开多余的支脚。

现在重复相同的任务,但是这次将电阻器的另一端连接到Arduino的腿。这是焊接中最棘手的部分。每个电阻都单独连接到其Arduino引脚,否则电路将无法正常工作。我在这里犯了几个错误,不得不多次使用焊芯来清除多余的焊锡。

一旦您建立了所有正确的连接,请仔细检查它们是否与邻域重叠。如果您可以在此处使用万用表,则可以使用连续性模式来检查每个引脚的电阻上只有一条不间断的线。如果您只有万用表,那么本文中会提供一个很好的入门指南。

检查完每个连接后,请减少多余的连接从电阻器的支脚开始的长度

增加功率

现在,将一条线从Arduino的GND引脚延伸到焊接阴极线末端附近的孔中,然后将电池座的黑色电线放在旁边。

现在,将电线焊接到GND引脚,就像使用电阻器一样,并将两根导线焊接到阴极线的末端以为电路创建一个公共接地。

最后,将一根导线连接到arduino的VIN引脚上,然后将开关置于该导线和电池组。为这张照片中的热熔胶开关道歉,我不得不拆除完成的机器才能拍摄这个阶段!

一旦全部焊接在一起,就放好插入电池并轻按开关。恭喜你!电路完成。如果您看不到任何东西亮起,请仔细检查每个焊点,看哪里可能有断裂或短路。

外壳

现在,我们可以正常工作了,让我们把它放在一个盒子里。尽管您可以使用在业余商店中购买的盒子甚至旧的特百惠盒子来制作一些永久性的东西,但这里还是使用了一个彩绘的纸板箱。为了获得额外的极客信誉,您甚至可以在这些便宜的3D打印机之一上进行3D打印。

通过对原型板进行打分,并对其打分并小心地折掉不需要的零件。

将电路放置在机柜中,并标记需要戳穿LED和开关的位置。您还可以选择标记Arduino板上USB连接器与边缘的交汇处,以便您可以将其插入以更改文本而无需打开包装盒。在外壳上钻出或切出所需的孔。

现在,在LED的边缘添加一些热胶并将其粘贴到位。我将一块海绵粘在电路下面,以便它可以紧紧地放在盒子里。将开关连接到外壳。我使用了热胶,尽管螺钉或螺栓会使连接更牢固。您也可以在使用电池时将电池座粘在电路板的背面,以防止其在内部移动,但是请确保壳体上的任何金属触点都不会碰到您的任何焊接点!

工作完成!

关闭机箱,您就完成了!要更改文本,请将USB电缆连接到Arduino板上,并在 loop 方法中的 displayString 之后更改括号内的文本。找到一个黑暗的地方,玩得开心!

您是否曾经构建过POV机器并知道改进设计的方法?您打算自己建造一个吗?在下面的评论中告诉我们您的项目,我们很乐意听!
责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22351

    浏览量

    645542
  • Arduino
    +关注

    关注

    184

    文章

    6422

    浏览量

    184628
收藏 人收藏

    评论

    相关推荐

    完美光学涡旋(POV)光束的实验研究

    完美光学涡旋(POV)光束因其具有与轨道角动量无关的径向轮廓而引起广泛关注。迄今为止,它通常是通过透镜在贝塞尔光束上执行的傅里叶变换获得的。该论文从理论和实验上证明了可以通过对具有高阶径向折射率
    的头像 发表于 12-11 11:05 457次阅读
    完美光学涡旋(<b class='flag-5'>POV</b>)光束的实验研究

    LED小夜灯的制作和调试

    电子发烧友网站提供《LED小夜灯的制作和调试.pdf》资料免费下载
    发表于 11-06 08:31 2次下载
    <b class='flag-5'>LED</b>小夜灯的<b class='flag-5'>制作</b>和调试

    LED点阵电子显示屏制作

    电子发烧友网站提供《LED点阵电子显示屏制作.doc》资料免费下载
    发表于 11-02 11:47 4次下载
    <b class='flag-5'>LED</b>点阵电子显示屏<b class='flag-5'>制作</b>

    LED七彩变色灯的制作

    电子发烧友网站提供《LED七彩变色灯的制作.pdf》资料免费下载
    发表于 10-30 11:19 0次下载
    <b class='flag-5'>LED</b>七彩变色灯的<b class='flag-5'>制作</b>

    点阵LED显示屏的原理与制作

    电子发烧友网站提供《点阵LED显示屏的原理与制作.doc》资料免费下载
    发表于 10-30 10:15 2次下载
    点阵<b class='flag-5'>LED</b>显示屏的原理与<b class='flag-5'>制作</b>

    基于stc15w404as制作的指尖pov陀螺

    基于stc15w404as制作的指尖pov陀螺。跟瑶瑶棒的原理差不多,只是把pcb做成指尖陀螺。第一次发帖,附件为程序、原理图、bom清单
    发表于 10-09 08:22

    51单片机POV趣味制作解析

    学校开展电子制作活动的辅导材料。本书以5l单片机为核心,围绕人眼的POV(视觉暂留)效应的电子制作为主线,详细介绍9个简单有趣的电子制作。为方便初学者,在第1章介绍了相关的基础知识,并
    发表于 09-26 07:32

    基于stc15w404as制作的指尖pov陀螺

    电子发烧友网站提供《基于stc15w404as制作的指尖pov陀螺.zip》资料免费下载
    发表于 09-15 16:13 4次下载
    基于stc15w404as<b class='flag-5'>制作</b>的指尖<b class='flag-5'>pov</b>陀螺

    LED虚拟制作在电影制作中的重要作用

    随着科技的进步,电影制作技术也在不断提升,其中一个具有革命性的技术改变就是LED虚拟制作的使用。LED虚拟制作的使用已经在革新电影
    的头像 发表于 08-01 17:43 284次阅读

    LED虚拟制作的无限可能性:优势与未来展望

    随着科技的不断进步,LED虚拟制作技术已经成为现代娱乐产业的重要组成部分。LED虚拟制作以其独特的优势,已经在全球范围内改变了影视、直播和舞台表演的
    的头像 发表于 07-21 17:28 263次阅读

    使用螺栓模块制作LED玩具

    电子发烧友网站提供《使用螺栓模块制作LED玩具.zip》资料免费下载
    发表于 07-11 16:23 0次下载
    使用螺栓模块<b class='flag-5'>制作</b>的<b class='flag-5'>LED</b>玩具

    使用LED和纸巾管制作万圣节项目

    电子发烧友网站提供《使用LED和纸巾管制作万圣节项目.zip》资料免费下载
    发表于 06-29 10:23 0次下载
    使用<b class='flag-5'>LED</b>和纸巾管<b class='flag-5'>制作</b>万圣节项目

    制作Hexabitz RGB LED项链

    电子发烧友网站提供《制作Hexabitz RGB LED项链.zip》资料免费下载
    发表于 06-12 14:42 0次下载
    <b class='flag-5'>制作</b>Hexabitz RGB <b class='flag-5'>LED</b>项链

    为架子鼓制作动画灯/LED

    电子发烧友网站提供《为架子鼓制作动画灯/LED.zip》资料免费下载
    发表于 06-09 10:48 0次下载
    为架子鼓<b class='flag-5'>制作</b>动画灯/<b class='flag-5'>LED</b>

    如何用BME680和ESP866模块制作空气质量传感

    我正在用 BME680 和 ESP866 模块制作空气质量传感。我想使用 MQTT 协议进行通信,因为我正在尝试了解更多相关信息。谁能指导我如何去做?
    发表于 05-19 12:04