可编程RGB情绪灯-Attiny85

29,700.

357

27

简介:可编程RGB情绪灯-Attiny85

欢迎来到我的第一个指导页面。一年前,我被介绍到了Arduino和电子的奇妙世界。我从这个网站学到了很多,这似乎是一个展示我的项目的好地方。我希望你觉得这个项目有趣而且有帮助。

我很想知道你的想法。请在评论中告诉我,请记住我是初学者,不是以英语为母语的人。欢迎您的所有意见;)

这个项目

我几个月前我的夜晚灯破裂了,我正在寻找一个替代品。然后我想:如果我能做一个,为什么要买一个!我的第一个意图是使用Atmega328,但这个项目只需要几个引脚,我希望建造尽可能便宜。所以我做了一些研究,并结束了一个神秘的85。

我自制的夜灯有3个旋钮,可以选择所需的颜色、饱和度和亮度。还有3个按钮,你可以按下选择一个你最喜欢的预设颜色。这些预设是可编程的,可以改变,因为可能的时间,你想。只要选择你想要的颜色,然后按下按钮3秒钟。我还实现了一个褪色的色轮。按下按钮1和按钮3激活该模式。控制颜色的旋钮现在可以用来控制褪色色轮的速度。要退出这种模式,只需按一个预设按钮或转动一个旋钮。

观看此视频查看完成的项目:

第一步:准备好你的用品

现在是时候提供了物资!列表上的最多项目来自eBay或亚马逊。这些物品广泛可用,所以我重构它不会发现它们是一个问题。


项目

  • Attiny85(20Pu)
  • 原委会
  • 单可寻址LED 8mm {PL9823或WS28XX系列} [60mA,5V](8X)
  • 陶瓷电容器100pF [104] (8x)
  • 电解电容器47uF(3x)
  • 电位器10k(3x)
  • 旋钮(3倍)
  • 硅二极管(3倍)
  • 按钮绿色led [12V] (3x)
  • 电阻220欧姆(4x)
  • 电阻10K欧姆(3x)
  • 开/关开关
  • IC插座(8引脚)
  • 橡胶脚(4x)
  • 电源[5V,500mA]
  • 松木棒材(1000mm X 100mm X 12mm)
  • 乳白色丙烯酸玻璃(500毫米x250毫米x5mm)
  • 木材胶
  • 4个钉子


关于LED(PL9823)

在这个项目中,我使用了便宜的Adafruit Neopix版本。我在易趣上买的,100件18欧元。它们类似于ws28xx系列LED,只需要一个数据管脚即可控制它们。它们还与流行的FastLed库配合使用,易于控制。


关于阿提尼85

Attiny85是低功耗8位Atmel微控制器,可以通过Arduino IDE进行编程。我选择了这种微控制器,因为它很小,并拥有这个项目的所有必要的引脚。因为我们只需要3个模拟引脚和2个数字输出引脚。

第2步:制作底座

是时候展示你的木工技能了!

〇砍木头为此建造我使用了普通的Pinewood(荷兰vurenhout)。我将松木棒切成4件,每个高度为100毫米。前部和背部的长度为220mm,侧面196mm,因为我想制作正方形,木材的厚度为12mm。

钻洞 -我在前板打了10个孔,在后板打了6个孔(用于4个钉子,电源线和开关)。确保纽扣的孔有干净的边缘,否则最终结果会看起来很草率。电位器的孔可能有点粗糙,因为它们会被旋钮盖住。

做缩进 -我在电位器和按钮上做了一些凹痕,因为我选择的木头是用来思考的。我使用了旋转工具和很多的耐心。如果你选择了正确的厚度(取决于按钮和电位器的大小),你可以跳过这一步。

给开关打个洞-使用文件为电源开关制作一个方孔。不要忘记电源线的孔。

为钉子预钻孔-我用长钉子和一些木胶把碎片粘在一起。因此我钻了8个洞(每边4个)。确保你钻得完全直,否则钉子会从侧面板出来。

涂抹一些木材胶水并插入钉子 -插入钉子之前先涂上胶水。

做一个站立的边缘 -用锉刀或旋转工具做立边。这将防止盖的形式滑落。

第三步:制作封面

准备变得又热又粘

切丙烯酸 -切割亚克力玻璃,长度500mm,宽度220mm。确保你的伤口是直的。

〇弯曲丙烯酸使用热风枪或烤箱加热,使其可以弯曲。我用锡箔纸来保护我不想弯曲的地方。再次强调:确保你有一个直的和均匀的角度。

切侧件 -从剩余的丙烯酸切割侧件。我故意将它们剪切太宽并以后打磨它们,以确保合适。

把它粘在一起-我使用热熔胶来固定碎片,但还有更好的胶水可以用于这个任务(如果你需要更强的粘合)

(可选)用砂纸打磨丙烯酸我用砂纸打磨丙烯,使它的触感更柔和,表面光泽更少。

第4步:原理图

建造起来很容易,但有一个小技巧。灯有6个输入(3个旋钮和3个按钮),但阁楼只有3个模拟输入引脚。为了解决这个问题,第一个电位计和第一个按钮共用一个模拟引脚,这也适用于第二个和第三个电位计和按钮。

当按下一个按钮时,电流流向模拟引脚时没有太大的电阻,我们得到的读数为1024(即5V)。未按下按钮时,电流流过电位计。该电流必须首先通过二极管(具有压降),然后才能进入模拟引脚。因此,我们可以得到的最大读数是由二极管压降决定的。

我得到的最大读数是910。所以现在我们知道,当第一个引脚的值超过915时,按钮被按下,较小的数字表示相反。

此外,我们使用10k欧姆下拉电阻去抖动按钮和电解电容器的电压电容器。

我们使用100PF陶瓷电容器,用于LED和220欧姆电阻,以保护数据引脚免受电压尖峰。为按钮LED的四个220欧姆电阻限制了电流。

注:描述的9V不具有代表性,我们使用5V电源

第5步:焊料

现在是棘手的部分:焊接。

密切注意正负引脚,led不会受到反向电压的保护。确保按钮放置得很好,并且它们与我们在前板上钻的孔紧密贴合。

第六步:密码

我尽我所能描述代码。这是我的第一个真正的编码项目,我认为有一些改进的空间,我愿意接受建议。

如果您想为您的Arduino UNO使用此代码,您将必须更改引脚

第7步:编程Attiny85

我不会在这里进入很多细节。有很多伟大的教程如何编程Attiny85。我在下面的2个来源中链接。我将简要描述您必须采取的步骤

1.在Github下载The The Tiny Library:

https://github.com/damellis/attiny/ar..。

2.将ArduinoISP文件上载到arduino

3.将arduino与阁楼相连:

Arduino Pin Tidiny Pin

  • 5V->VCC
  • 接地->接地
  • 引脚10->重置
  • 引脚11->IO 0/数字1/5
  • 引脚12 -> IO 1 / digital2 / 6
  • 引脚13 - > IO 2 / Analog1 / 7

不要忘记在接地和arduino复位之间放置一个10uF电容器

4.选择ArduinoISP作为程序员并选择Agistiny 1MHz或8MHz板

5.上传你的草图

有用网站:

awesomepcb://www.smiletrl.com/id/How-to-Program-ATt...

codebender_cc://www.smiletrl.com/id/How-to-program-the..。

第八步:把它们放在一起

现在有趣的部分,把它整合在一起!

- 通过孔馈送电源线并将其焊接到原型板

—拧紧前面板上的按钮

-将已编程的Attiny85插入其套接字

- 放置旋钮

-拧上一些橡皮脚

-可选:为了增加重量,我使用了一些重型螺栓并将它们热粘在底座上

- 放置盖子,插入并享受

步骤9:未来的改进

在下一个版本中,我要实现:

1.更多的发光二极管,我将使用至少16个LED和更大的电源,我发现8个LED有点太弱。

2.涂基地

3.使用内存-使用EEPROM IC存储可能的新预设。(现在,如果您拔下灯泡,它将忘记新添加的预设)

4.找到一种方法来单独解决按钮led -因此,我可以显示当前处于活动状态的程序

2016年举行竞赛

参加了
2016年举行竞赛

2016年Arduino大赛

参加了
2016年Arduino大赛

第一个分享

    建议

    • 让它发光比赛

      让它发光比赛
    • 第一次作家比赛

      第一次作家比赛
    • PCB的挑战

      PCB的挑战

    27讨论

    0
    karl2222

    2年前

    你好!

    非常好的项目!我真的不明白你是否使用5v或9v电源。好像是5v。。。

    您知道9v或12v电源按下按钮时的读数是多少吗?

    我实际上计划建造这个神奇的灯,但我希望它更强大一点。

    无论如何,谢谢你分享这个!

    卡尔

    编辑:没关系,我在其他评论中看到了答案^^

    0
    威廉诺30.

    3年前

    我一直在做这个,但我有一个噩梦,调试代码,我已经设法解决了,由于某种原因改变盆位置(其中任何一个)是改变'程序'变量的值似乎是随机数,如29730或12930,似乎没有理由!如果您能提供任何建议,我们将不胜感激。我在一台nano上运行它,因为这就是我手头的

    0
    德洛卡佛

    3年前

    我们可以让它更简单吗?

    只需要一个按钮就可以改变颜色/图案?

    任何建议

    0
    Svinska013

    三年前的答复

    研究错入并与之播放以更好地了解代码。
    对于构建,我将使用一个按钮push计数器并使用' if '语句:
    if(QuantButtringes ==数量){
    红色
    }

    0
    TiagoC72

    3年前

    你好,我要做这个项目为大学考试,我将感激有一些我的疑问得到解答,请记住,我仍然是一个乞讨与arduino,所以我不太了解他们在此刻。

    1:你用什么电缆连接电子元件和原型板?它们只是普通的跨接电缆吗?

    2:灯的电源输入是通过microrousb适配器?

    3:是否有可能与常规的植物和一个Arduino Uno制作这个项目?

    0
    Svinska013

    三年前的答复

    你好,谢谢你的评论。回答你的问题:
    1:我使用了我的arduino起动器套件中的常规电缆。它们被称为杜邦电缆。
    2:我用过一位旧的手机充电器(诺基亚,我认为,每个人都在我的日子里的那个旧的)。重要事项是您的电源是5V(因此您可以使用MicrousB充电器),当前绘制不超过电源的最大值。因此,如果您的LED绘制1.0A,请确保您的电源至少可以提供1A(1.5是更好的选择即可肯定)。
    3:可以用arduino uno而不是阁楼来完成这个项目。只需将data_引脚(代码顶部)更改为所需的(arduino uno)输出数据引脚。同时,将setupLoop末尾的“0”(零)更改为不需要的数据输出引脚。

    我希望我能够很好地解释它。如果没有,只是Aks!


    祝你大学考试祝你好运!保持思考!

    0
    Dzefri.

    3年前

    伟大的项目:-D

    0
    詹卡洛6

    3年前

    嗨伴侣,谢谢你分享想法!

    我通常使用arduino初学者套件中的RGB led,它看起来真的很像pl9823,但我不确定它们是否相同,因为我必须在相对引脚和地面上的最后一个引脚上设置颜色值,以获得正确的颜色;但是颜色混合真的很糟糕。

    您知道pl9823是否也可以用作简单的rgb led?

    0
    Svinska013

    三年前的答复

    他们看起来一样,但他们是不同的。你不能使用PL9823作为一个普通的RGB LED(有一个共同的阳极或阴极)。PL9823内部有一个芯片。红色、绿色和蓝色led连接到这个集成芯片上。

    0
    罗莫枢纽

    3年前

    我们能用arduino做一个吗?

    0
    Svinska013

    三年前的答复

    当然可以。我首先使用arduino板(atmega328)进行原型设计和调试。只需将DATAPIN更改为所需的输出引脚。

    0
    Build_it_Bob

    3年前

    你的教导给我留下了深刻的印象。我喜欢使用ATTiny的项目,因为它们很小,但可以做很多奇妙的事情。我认为你在模拟引脚的双重功能上非常有创意……太棒了!我知道在不久的将来我将用面包板制作这个电路。

    谢谢分享,

    Build_it_Bob

    0
    Svinska013

    三年前的答复

    非常感谢(大家)。很高兴听到这么多人喜欢我的项目。

    如果你喜欢这场比赛,别忘了给它投票。谢谢你!

    0
    Build_it_Bob

    三年前的答复

    您好,我刚刚通读了您的代码,我喜欢您的风格。我也可以从中学到很多东西。

    再次感谢你,

    鲍勃

    0
    Svinska013

    3年前

    仔细阅读步骤4。

    当您在此配置中不使用二极管(用按钮链接时),您可以在您的TINTINY ADMIPIN引脚上获得不稳定的读数。此外,我不得不弄清楚如何在一个引脚上连接2个输入。二极管降低了电压,因此您从电位器获得的最大读数小于按钮按下的电压。如果我不使用二极管,我会把电位器转向最大设置,那么阅读将是1024.我无法讲述电位计的最大读数和按钮按下的差异。

    我希望这有帮助。如果你有更多的问题,不要犹豫。

    你好!伟大的项目

    为什么二极管带有电位计?

    0
    efbe1840

    3年前

    伟大的,

    我要建立一个。

    但是你能给我一个来源吗

    绿色led按钮[20mA Vf=3.0] (3x)

    Bedankt en Ik Kijk Uit Naar Het Vervolg。

    efbe.

    0
    Svinska013

    三年前的答复

    不幸的是我的线人不再卖了。多亏了你,我发现了一个错误:按钮led的额定电压为12V(50mA),而不是5V,但他们只是工作得很好。

    只要在eBay上搜索“push button switch led 10mm”就可以了。