器件简介

  LED是英文light emitting diode(发光二极管)的缩写,属于半导体二极管的一种,可以把电能转化成光能;它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。
在这里插入图片描述
  发光二极管的核心部分是由Р型半导体和N型半导体组成的晶片,在Р型半导体和N型半导体之间有一个过渡层,称为PN结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管。当它处于正向工作状态时(即两端加上正向电压),电流从LED阻极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。
  与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和Р区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。
  磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光
在这里插入图片描述


电路连接

  发光二极管的工作电压一般为1.5~ 2.0V,工作电流一般为10~20mA,反向击穿电压为5V。控制板逻辑电路供电为5V。根据以上参数假设LED工作电压选用1.7,工作电流选用15ma,限流电阻=(总电压-LED电压)/电流,所以限流电阻=(5-1.7)/0.015=220Ω。故为了防止其烧毁,一般要给它串一个220Ω的电阻作为限流电阻
  发光二极管的两根引线中较长的一根为正极,应连接电源的正极。LED灯的阳极通过限流电阻与板子上的数字IO口相连。数字口输出高电平时,led导通,发光二极管发亮光。数字口输出低电平口,发光二极管不发光。


在这里插入图片描述
也可以这样接,LED灯的阴极与板子上数字IO口相连,数字口输出高电平,led截止,发光二极管熄灭;数字口输出低电平,led灯导通,发光二极管点亮。
在这里插入图片描述
这便是下拉电阻与上拉电阻,根据不同的电路,程序代码略有不同,但原理相似。只需在信号口给一个高电平(digitalWrite(yinjiao,HIGH);)或低电平(digitalWrite(yinjiao,LOW);)使得LED两端电流是从正极流向负极即可。


项目1:点亮13号引脚LED灯。

电路搭建:


在这里插入图片描述


参考程序:


int redLedPin = 11;
void setup() {
pinMode(redLedPin, OUTPUT);
}
void loop() {
digitalWrite(redLedPin, HIGH);
}

    项目2:流水灯

    电路搭建:


    在这里插入图片描述


    参考程序:

    int redLedPin = 9;
    int yellowLedPin = 10;
    int greenLedPin = 11;

    void setup() {
    pinMode(redLedPin, OUTPUT);
    pinMode(yellowLedPin, OUTPUT);
    pinMode(greenLedPin, OUTPUT);
    }
    void loop() {
    digitalWrite(redLedPin, HIGH);
    delay(1000);
    digitalWrite(redLedPin, LOW);
    delay(1000);
    digitalWrite(yellowLedPin, HIGH);
    delay(1000);
    digitalWrite(yellowLedPin, LOW);
    delay(1000);
    digitalWrite(greenLedPin, HIGH);
    delay(1000);
    digitalWrite(greenLedPin, LOW);
    delay(1000);
    }
      >

    项目3:呼吸灯

    电路搭建:


    在这里插入图片描述


    参考程序:


    const int ledPin=11;  //设置LED模块的连接引脚为11
    void setup() {
    pinMode(ledPin, OUTPUT);
    }
    void loop() {
    for(int i=0;i<=255;i+=5){
    //For循环语句;i+=5的含义为i=i+5,i-=5的含义是i=i-5,控制LED亮度的数值的变化幅度为5
    analogWrite(ledPin,i);
    //向引脚6写入0~255之间的模拟信号值,引脚根据模拟信号值,输出0V~5V之间的电压;控制灯的亮度的变化
    delay(50);
    }
    for(int i=255;i>=0;i-=5){
    analogWrite(ledPin,i);
    delay(50);
    }
    }