为 LED 计时的最有效方法是什么

What is the most efficient way to time LED’s

我需要创建一个包含大约 50 个 LED 的电路板。 LED 需要单独和一起打开 on/off(计时器基于天,假设每个星期一打开所有 50 个 LED,一周中的每一天打开 10 个 LED)。

在我的研究中,我找到了 LM555 定时器,但这会导致包含 50 个不同定时器的巨大电路

控制这些 LED 的最有效方法是什么

我的第一个回答真的很愚蠢(我对此感到非常抱歉)而且我不知道为什么我之前没有想到令人惊叹的 "Shift Registers"。

您的 Arduino 没有那么多引脚来点亮您拥有的每个 LED。但是使用移位寄存器这是可能的。从一个 8 位移位寄存器,您可以使用 Arduino 板上的 2-3 个 PIN 点亮 8 个 LED(1 个用于时钟,1 个用于数据,1 个用于锁存器)。 因此,要点亮 50 个 PIN,您只需要 this components 中的 7 个(例如)。

如何使用?网上有很多教程,通常 sparkFun tutorial 是我最喜欢的。

下图:来自 Arduino 网站的图片。它解释了如何连接 16 个 LED。

不管怎样,从软件方面来说,你必须知道ShiftOut 功能。 之后你必须使用 time 函数。

首先初始化你的时间变量,正如你在我上面发布的 link 中看到的那样。 之后,在你的循环中:

  • previousMonth != month 时,将您的 Datapin 连接到 50 个 LED 上。
  • daySum == 10 时将 HIGH dataPin 连接到 10 个 LED(因此,当 previousDay != day 时,您必须使用 daySum++ 增加 daySum)。