发光二极管 (英语:Light-Emitting Diode,缩写:LED)[1] 是一种能发光的半导体电子元件,透过三价与五价元素所组成的复合光源。此种电子元件早在1962年出现,早期只能够发出低光度的红光,被hp买下专利后当作指示灯利用。及后发展出其他单色光的版本,时至今日,能够发出的光已经遍及可见光、红外线及紫外线,光度亦提高到相当高的程度。用途由初时的指示灯及显示板等;随着白光发光二极管的出现,近年逐渐发展至被普遍用作照明用途。
发光二极管只能够往一个方向导通(通电),叫作正向偏置(正向偏置),当电流流过时,电子与空穴在其内重合而发出单色光,这叫电致发光效 应,而光线的波长、颜色跟其所采用的半导体物料种类与故意掺入的元素杂质有关。具有效率高、寿命长、不易破损、反应速度快、可靠性高等传统光源不及的优 点。白光LED的发光效率近年有所进步;每千流明成本,也因为大量的资金投入使价格下降,但成本仍远高于其他的传统照明。虽然如此,近年仍然越来越多被用 在照明用途上。
——————本条解释源自维基百科
发光二极管应该是最常见最简单的输出器件了,因为它通常只有两种状态。亮和灭,市面上常见的发光二极管就有贴片式和直插式两类。下面简要介绍一下。
贴片式的在你的Arduino板子上就有几个,方形的透明小玩意,它们能告诉你一些简单的信息,譬如电路板上丝印层写着TX的LED如果亮起,则表明板子的主控器正在使用串口向外发送数据,同样RX的LED亮起表示串口正在接收数据。
上图所示的常见的直插引脚式发光二极管(LED),上图发光二极管有Ф3mm和Ф5mm两种,指的是发光二极管的直径。由上述照片可以看出,它们的引脚都有长短之分,长的引脚是正极,短的引脚是负极。只有当电流从长引脚流入,从短引脚流出时,LED才会发光。这种接线引脚有正负极之分的原件通常称为极性原件。
除了要注意LED的连接方向之外,一定不要忘记需要串联电阻,因为如果直接将发光二极管的正负极和电源或者端口的正负极相连,会导致发光二极管通过的电流过大而烧毁。发光二极管方向接反只是无法正常发亮工作,不会造成发光二极管的损坏。让我们根据欧姆定律来点小计算。
根据我们查阅相关手册(查阅的方法11.2节会叙述),我们知道一般的LED只需通过5mA的电流即可发光,一般不应超过20mA。当发光二极管发光时,其两端的电压约为1.7V,Arduino端口提供的是5V的电压,则串联电阻两端的压降为5V-1.3V=3.3V,串联一个330Ω的电阻后,3.3V/330Ω=0.01A=10mA。看来330Ω的电阻能够符合要求。
根据上面的电路原理图和面包板接线图,我们连好流水灯所需的电路,开始往Arduino中装载程序,其源代码如下所示。
int Led1 = 4; int Led2 = 5; int Led3 = 6; int Led4 = 7; int Led5 = 8; int Led6 = 9; int Led7 = 10; int Led8 = 11; //led灯花样显示样式1子程序 void style_1(void) { unsigned char j; for(j=4;j<=11;j++)//每隔200ms依次点亮4~11引脚相连的led灯 { digitalWrite(j,HIGH);//点亮j引脚相连的led灯 delay(200);//延时200ms } for(j=11;j>=4;j--)//每隔200ms依次熄灭11~4引脚相连的led灯 { digitalWrite(j,LOW);//熄灭j引脚相连的led灯 delay(200);//延时200ms } } //灯闪烁子程序 void flash(void) { unsigned char j,k; for(k=0;k<=1;k++)//闪烁两次 { for(j=4;j<=11;j++)//点亮4~11引脚相连的led灯 digitalWrite(j,HIGH);//点亮不j引脚相连的led灯 delay(200);//延时200ms for(j=4;j<=11;j++)//熄灭4~11引脚相连的led灯 digitalWrite(j,LOW);//熄灭不j引脚相连的led灯 delay(200);//延时200ms } } //led灯花样显示样式2子程序 void style_2(void) { unsigned char j,k; k=1;//设置k的数值为1 for(j=7;j>=4;j--) { digitalWrite(j,HIGH);//点亮灯 digitalWrite(j+k,HIGH);//点亮灯 delay(400);//延时400ms k +=2;//k值加2 } k=7;//设置k值为5 for(j=4;j<=7;j++) { digitalWrite(j,LOW);//熄灭灯 digitalWrite(j+k,LOW);//熄灭灯 delay(400);//延时400ms k -=2;//k值减2 } } //led灯花样显示样式3子程序 void style_3(void) { unsigned char j,k;//led灯花样显示样式3子程序 k=7;//设置k值为5 for(j=4;j<=7;j++) { digitalWrite(j,HIGH);//点亮灯 digitalWrite(j+k,HIGH);//点亮灯 delay(400);//延时400ms digitalWrite(j,LOW);//熄灭灯 digitalWrite(j+k,LOW);//熄灭灯 k -=2;//k值减2 } k=3;//设置k值为3 for(j=6;j>=4;j--) { digitalWrite(j,HIGH);//点亮灯 digitalWrite(j+k,HIGH);//点亮灯 delay(400);//延时400ms digitalWrite(j,LOW);//熄灭灯 digitalWrite(j+k,LOW);//熄灭灯 k +=2;//k值加2 } } void setup() { unsigned char i; for(i=4;i<=11;i++)//依次设置4~11个数字引脚模式 pinMode(i,OUTPUT);//设置第i个引脚为输出模式 } void loop() { style_1();//样式1 flash();//闪烁 style_2();//样式2 flash();//闪烁 style_3();//样式3 flash();//闪烁 } |
赞赞赞!