将 Arduino 连接到面包板以点亮 LED






4.96/5 (7投票s)
这是“将 Arduino 连接到面包板以点亮 LED”的替代方案。
引言
这是一篇受一篇很棒的文章启发的简短说明:将 Arduino 连接到面包板以点亮 LED,该文章是作为 Arduino 夏季乐园挑战的一部分发表的。 在参与这项挑战并分析源代码时,我意识到如果我们将整个字节一次性写入输出端口,而不是在循环中设置单个位,则可以显着简化代码。 如果我们采用这种方法,就不需要维护引脚编号的数组并在代码中操作该数组。
背景
如果我们将 8 个 LED 连接到前 8 个数字引脚(引脚 0 到 7,也称为端口 D),那么将代码 1(二进制 00000001)写入端口将点亮 LED 0(最右边的)。 写入代码 2(二进制 00000010)将打开 LED 1 并关闭 LED 0。 代码 3(二进制 00000011)将打开 LED 1 和 LED 0,依此类推,直到代码 255(二进制 11111111)将打开所有 LED。 这是一种一次性控制所有 LED 而不是单独设置它们的一种简单方法。
连接到设备
我对原始连接图做了一些小的修改,为每个 LED 使用了单独的电阻。 所有 LED 的阴极(短引脚)都位于连接到 Arduino 板 GND 引脚的负极总线上。 每个阳极(长引脚)连接到一个电阻器,该电阻器连接到端口 D 的相应数字引脚。
整个系统如下所示
Using the Code
代码现在非常简单。 它是一段纯粹的 C 代码,看起来像 JavaScript。
我们定义一个字节变量 counter
,它每 100 毫秒递增一次。 在 setup()
方法中,我们将端口 D 的所有引脚配置为输出。 在 loop()
方法中,我们将 counter
的当前值发送到端口并在一个语句中递增它。 一旦 counter
达到其最大值(255),它将自动重置为 0
。
byte counter = 0;
// Initial setup
void setup() {
DDRD = 0xff; // set all pins of Port D to output
PORTD = 0; // turn all LEDs off
}
// Infinite loop
void loop() {
PORTD = counter++; // write current counter value to the port and increment the counter
delay(100);
}
就这样了。 祝您编码愉快!