
☛ 功能说明
使用 Arduino 开发板配合光线侦测元件侦测光线的强弱,并以 LED 指示光线的强弱。当光线转暗时,点亮 LED,当光线转强时,关闭 LED。光敏电阻 ( light dependent resistor;简记 LDR 或 CDS ),是最简单的光线侦测元件。当光线越强,光电流越大,其内部电阻越小,最小的电阻称为亮电阻。在完全没有光线照射状态则称为暗电阻。
☛ 使用材料
Arduino UNO R3 开发板 × 1、光敏电阻 × 1、电阻 220Ω × 1、电阻 10KΩ × 1、LED× 1。
☛ 电路图及面包板接线图


☛ 程序码
const int cds=0; //CDS 连接至类比接脚 0
const int led=2; //LED 连接至数位接脚 2
int val; //数位值
void setup()
{
pinMode(led,OUTPUT); //设定数位接脚 2 为输出模式
digitalWrite(led,LOW); //关闭 LED
}
void loop()
{
val=analogRead(cds); //读取输入类比电压
if(val>512)
digitalWrite(led,LOW); //光线较亮时,关闭 LED
else
digitalWrite(led,HIGH); //光线较暗时,点亮 LED
}
☛ 练习
⑴ 设计 Arduino 程式,使用 Arduino 开发板配合 CDS 侦测光线的强弱,并以 LED 指示光线的强弱。当光线转暗时,闪烁 LED,当光线转强时,关闭 LED。
const int cds=0; //CDS 连接至类比接脚 0
const int led=2; //LED 连接至数位接脚 2
int val; //数位值
void setup()
{
pinMode(led,OUTPUT); //设定数位接脚 2 为输出模式
digitalWrite(led,LOW); //关闭 LED
}
void loop()
{
val=analogRead(cds); //读取输入类比电压
if(val>512)
digitalWrite(led,LOW); //光线较亮时,关闭 LED
else
flushLED(); //光线较暗时,闪烁 LED
}
void flushLED()
{
for(int i=0;i<2;i++)
{
digitalWrite(led,HIGH); //点亮 LED
delay(100); //延迟 100ms
digitalWrite(led,LOW); //关闭 LED
delay(100); //延迟 100ms
}
}
⑵ 设计 Arduino 程式,使用 Arduino 开发板配合 CDS 侦测光线的强弱,并以三个 LED 指示光线的强弱。当光线转暗时,只有 LED1 点亮;当光线介于全暗与全亮之间时,只点亮 LED2;当光线转强时,只点亮 LED3。
const int cds=0; //CDS 连接至类比接脚 0
const int led[]={2,3,4}; //LED 连接至数位接脚 2~4
int val; //数位值
void setup()
{
for(int i=0;i<3;i++)
{
pinMode(led[i],OUTPUT); //设定数位接脚 2~4 为输出模式
digitalWrite(led[i],LOW); //关闭 LED
}
}
void loop()
{
val=analogRead(cds); //读取输入类比电压
if(val>800)
{
digitalWrite(led[0],LOW);
digitalWrite(led[1],LOW);
digitalWrite(led[2],HIGH); //光线较亮时,点亮 LED3
}
else
{
if(val<200)
{
digitalWrite(led[0],HIGH); //光线较暗时,点亮 LED1
digitalWrite(led[1],LOW);
digitalWrite(led[2],LOW);
}
else
{
digitalWrite(led[0],LOW);
digitalWrite(led[1],HIGH); //光线介于全亮与全暗之间, 点亮 LED2
digitalWrite(led[2],LOW);
}
}
}


