2019-1-24 17:14:34 [显示全部楼层]
6264浏览
查看: 6264|回复: 1

[入门] Arduino学习(三)点亮LED灯

[复制链接]
本帖最后由 tyjjr 于 2019-1-24 17:15 编辑

本篇开始,学习用Arduino控制各种外部电子元器件、传感器等,学习如何搭建相关电路。

用Arduino搭建电路有两种方式:

方式1: 购买并使用Arduino现成的模块:由于模块本身已经做好了电路,这种方式使用比较简单,只需要把管脚接上即可,不需要了解元器件性能、不需要搭电路。这种方式仅适合初学者、上手快。但长期使用模块,则可能对元器件、电路一无所知,更谈不让设计电路了。

方式2:直接使用电子元器件,自己搭电路。这种方式成本便宜,能深入了解元器件性能、电路原理,以后能自己设计电路。

我想,既然学习单片机,  最终必须搞懂元器件原理和自已设计电路,  因此个人推荐尽量用方式2自已搭电路.  (但是对于通信联网等复杂电路,  可以用使用模块简化开发)
虽然电路组成方式不同,但不管方式1还是方式2,Arduino的软件都是一样的。

在以后的博文中,尽可能把两种方式都同时介绍一下。

一, 基础知识

1,Arduino Nano的管脚, GPIO的概念

先看一下Arduino Nano的管脚
Arduino学习(三)点亮LED灯图1

      GND 是 电源地,  即0V

      5V 是5V正电压引出脚

  D1 -  D13 是 数字IO脚, 又称为 GPIO

所谓GPIO ( General Purpose Input Output ) 全名为通用输入输出,是单片机的一种管脚,即可以做输入、也可以做输出, 常用于将开关、按键、LED、传感器等接到单片机。
      数字IO脚有两个状态: HIGH 或 LOW,  HIGH就是高电压(5V,  表示1), LOW是低电压(0 V, 表示0).   可以通过软件控制管脚的电平状态, 从而实现对外围设备的控制.

2, Arduino 模块
Arduino 模块就是把电子元件做在一个电路板上,  引出几个管脚.  使用者只需把管脚连接到Arduino板, 即可组成电路.  这样做很方便,  初学者甚至不需要懂得元件或 电路, 就能开展电子制作.
Arduino 模块种类非常多,包括:LED, 开关, 各类传感器等.
在淘宝上购买一个Arduino 37件模块套装(约70元).
以下进入本次实验学习

二、点亮LED灯(使用LED模块)

1, LED模块
如下图:
Arduino学习(三)点亮LED灯图2
这种LED模块上面有一个发光二极管(即LED),  有两个状态:亮或灭
模块有三个引出管脚,  GND接地, VCC接5V, IN 接IO脚.  
不同厂家的模块对管脚标注方法可能不同,    有的厂家把GND标为 "-"号,  把 IN 标为 S (即 Signal 信号的意思)

2, 接线

用杜邦线把LED模块的三个脚接到Arduino板上,    GND接地, VCC接5V, IN 接 D5脚 (IO脚可以随便选)
3, 在Arduino IDE中写个Arduino程序控制D5脚上的LED灯
[mw_shl_code=applescript,true]int pin = 5; //LED的管脚

void setup() {
  pinMode(pin, OUTPUT); //设置管脚为输出模式
}

void loop() {
  digitalWrite(pin, 1); //向管脚写入1, 设置为高电平, 则LED灯亮
}[/mw_shl_code]
运行效果:   LED灯亮起

4, 再写个程序,让LED灯闪烁
[mw_shl_code=applescript,true]int pin = 5; //连接LED的IO脚

void setup() {
  pinMode(pin, OUTPUT); //设置管脚为输出模式
}

void loop() {
  digitalWrite(pin, HIGH); //将管脚设置为高电平, 则LED灯亮
  delay(1000); //等待1000毫秒
  digitalWrite(pin, LOW); //将管脚设置为低电平, 则LED灯灭
  delay(1000); //等待1000毫秒
}[/mw_shl_code]
运行效果:   LED灯闪烁 (亮1秒, 灭1秒)

三、点亮LED灯  (使用LED元器件自已搭电路)

1, 准备元器件和器材

    发光二极管(LED) 一个
    面包板一块
    1K 电阻一个
     杜邦线若干

2, 了解LED

    发光二极管(LED) 是一种单向导电的二极管.  有两个脚. 两个脚有一长一短,短的是连接GND,长的是连接正极. (注意: 接反了不会亮的)
    当适当的电流通过时,  LED将发光.
   一般的LED发光时电流值为 3- 10 mA,  电流太小不发光,  电流过大则会烧坏LED.  电流小则亮度低, 电流大一些则更亮.  
   LED两端电压不能太大, 一般在1 -  2 V.  连接在电路中时, LED会产生压降,约为1.7V.
   LED接线的 电路原理图如下:
Arduino学习(三)点亮LED灯图3

     上图中:   LED压降约为1.7V,   当GPO脚输出为5V时,  电阻R两端电压为3.3V, 根据欧姆定律计算电流  =   3.3V / 1000 = 3.3mA.  由于3.3mA电流通过 LED, 则LED将发光.
      当GPIO脚输出0V时, 两端无电压, 无电流,则LED灭
      上图中,如果把电阻换为 330欧姆, 当GPO脚输出为5V时,   则电流 = 3.3V / 330 = 10 mA.  电流更大一些,则LED会更亮一些.

3, 用面包板接线

把LED和电阻插入面包板, 用杜邦线接线,  示意图如下:  
Arduino学习(三)点亮LED灯图4

4, 在Arduino IDE中写个Arduino程序控制D5脚上的LED灯
[mw_shl_code=applescript,true]int pin = 5; //LED的管脚

void setup() {
pinMode(pin, OUTPUT); //设置管脚为输出模式
}

void loop() {
digitalWrite(pin, 1); //向管脚写入1, 设置为高电平, 则LED灯亮
}
[/mw_shl_code]
运行效果:   LED灯亮起
这个程序与使用模块的程序是一样的.

5, 再写个程序,让LED灯闪烁
[mw_shl_code=applescript,true]int pin = 5; //连接LED的IO脚

void setup() {
pinMode(pin, OUTPUT); //设置管脚为输出模式
}

void loop() {
digitalWrite(pin, HIGH); //将管脚设置为高电平, 则LED灯亮
delay(1000); //等待1000毫秒
digitalWrite(pin, LOW); //将管脚设置为低电平, 则LED灯灭
delay(1000); //等待1000毫秒
}
[/mw_shl_code]
运行效果:   LED灯闪烁 (亮1秒, 灭1秒)
这个程序与使用模块的程序也是一样的.

课后练习题:

1,连接一个LED灯到Arduino开发板,编写一个程序,让LED灯来亮。
  用万用表测量一下,当向IO口输出1时,该IO口电压是多少?输出0时电压是多少?
  通过LED灯的电流是多少。限流电阻两端的电压是多少。LED灯两端的电压是多少
  如果要增加电流到10ma,限流电阻应改为多少? 修改电阻,看LED灯亮度有否变化,电流是否变化。

2,思考题: LED灯的电阻是多少? LED灯产生的压降是多少?
       用万用表电阻档,直接测量LED灯的电阻,会不会把LED烧坏? 该怎么量?

3,连接一个LED灯,编写一个程序,让灯亮二秒、灭一秒,依此循环。

4,连接四个LED灯到Arduino开发板,编写一个程序,让第1个LED亮一秒然后灭掉,让第2个LED亮一秒然后灭掉,第3个LED亮一秒然后灭掉, 第4个LED亮一秒然后灭掉。 然后现让第1个LED亮一秒然后灭掉,依此循环。形成跑马灯。

5,如何搭一个低电平触发电路,让IO脚输出0时LED灯亮, 输出1时LED灯灭
JoStudio原文链接

gada888  版主

发表于 2019-2-1 13:47:03

支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail