美文网首页
玩Arduino(之单色LED)

玩Arduino(之单色LED)

作者: ghostheaven | 来源:发表于2020-07-28 15:48 被阅读0次

Arduino买了几年了,之前买来的时候玩了几天,然后很快就吃灰了。这两天家里的小朋友不知道怎么翻了出来,在他的要求下又开始玩了起来,有个小盆友虽然生产力降低50%,但是展开了另一种生活方式_

Arduino是一块基于 ATmega328P的单片机,由于周边的软件适配非常完善,让我们这种几乎从来没有动过硬件的纯码农也能摆弄硬件。


相对几年前,Arduino的生态更加丰富了,大概几年前淘宝上几乎只有Arduino和树莓派的衍生硬件,现在在淘宝上可以很方便地购买各种开发板、传感器以及其他DIY配件。淘宝店家主要有以下几家:

  • SeeedStudio:老牌国产Arduino和DIY硬件厂商,有一大票自主开发的Grove传感器
  • DFRobot:以机器人为主,等开始玩小车和机器人的时候应该会经常光顾
  • YwRobot:这家是新发现的淘宝店,店家在天津,硬件相对比较便宜,我在这家店里买了传感器扩展版、多Pin口的面包线、环形和条状LED等等一大坨配件

软件方面,Windows上可以在Windows Store上直接安装Arduino IDE,Arduino IDE可以直接搜索各种软件库,不用在手动下载解压缩到某个目录这种原始的方式了。


对于小盆友来说,会发光的LED灯是非常有吸引力的,一闪一闪的小灯灯能让他玩很久。

准备材料

  • Arduino UNO开发板和USB连接线
  • 单色LED灯若干
  • 220k电阻若干
  • 面包板一个
  • 杜邦线若干

让小灯闪烁起来

驱动普通的发光二极管需要一点点电路知识,把13号信号输出端,220k的电阻,用于限制电流,LED灯和GND连接起来,写一个最简单的程序就可以控制发光。

image.png
const int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT); // 设置13端口为输出
}

void loop() {
  digitalWrite(ledPin, HIGH); // 设13端口为高位,让灯亮起来
  delay(1000); // 等待1s
  digitalWrite(ledPin, LOW); // 设为低位,让灯熄灭
  delay(1000); // 等待1s
}

其实13口比较特殊,板载了一个LED可以直接通过13口来控制,所以即使没有外接任何LED,你也能够做这个实验。

灯,等灯等灯

下一步,再加入2个不同颜色的LED灯吧,让3个小灯循环亮灭,间隔1s。接线上按照前面的LED接法,把另外两个LED灯和电阻串联分别连接到11和12端口,另一端接地(GND)。


image.png
const int redPin = 13;
const int yellowPin = 12;
const int bluePin = 11;

void setup() {
  pinMode(redPin, OUTPUT); // 设置3个LED的端口为输出
  pinMode(yellowPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  digitalWrite(redPin, HIGH); // 点亮红灯
  delay(1000);
  digitalWrite(redPin, LOW); // 熄灭红灯
  digitalWrite(yellowPin, HIGH); // 点亮黄灯
  delay(1000);
  digitalWrite(yellowPin, LOW); // 熄灭黄灯
  digitalWrite(bluePin, HIGH); // 点亮蓝灯
  delay(1000);
  digitalWrite(bluePin, LOW); // 熄灭蓝灯
}

作为码农,上面的代码可以再优化,把pin初始化成3元素的数组,然后通过循环或者直接利用loop函数的循环特性,来实现上面的功能。


除了单色LED,还有全彩LED灯,下一次写写如何用Arduino控制全彩RGB灯。
RGB Yes!🎆

发布于Medium

相关文章

网友评论

      本文标题:玩Arduino(之单色LED)

      本文链接:https://www.haomeiwen.com/subject/ufwfrktx.html