目录
一、实验目的
1熟悉光敏传感器原理与功能;
2理解串联电路获取传感器数据原理;
3 熟悉模拟输入、输出接口特性与函数的功能;
4编写光敏感应控制LED亮度程序。
二、实验设备与环境
Arduino UNO套件、Arduino IDE、计算机、光敏电阻、LED灯、电阻、跳线等
三、实验重点
1实验电路连接;2程序代码编写;3程序调试
四、实验难点
1程序代码编写、功能调试
五、实验内容
5.1实验任务
任务描述:读取、输出光敏电阻信号值;LED灯亮度感应控制
5.2实验原理
1.基础函数
analogRead(pin);
功能:从引脚pin读取模拟输入值,将0-5V输入电压值映射10位精度的0-1023之间的整数值,返回整数值。
analogWrite(pin,Value);
功能:向引脚pin输出8位精度0-255的Value值。
map(value, fromLow, fromHigh, toLow, toHigh);
功能:将变量Value的值从fromLow~ fromHigh范围映射到toLow~toHigh范围。
2.光敏传感器
光敏传感器是利用光敏元件将光照强度信号转换为电信号的转换器件。它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。光传感器不只局限于对光的探测,它还可以作为探测元件组成其他传感器,对许多非电量进行检测,只要将这些非电量转换为光信号的变化。
光敏传感器应用:夜灯、照相机、监控器、光控玩具、声光控开关、光控音乐盒、音乐杯、人体感应开关等电子产品光自动控制领域。
3.LED亮度感应控制电路
利用光敏电路的阻值随光照强度变化而变化的特性,在亮度控制电阻中串联一个电阻构成串联分压电路,实现光敏电阻上随电阻变化得电压值的读取。
串联分压电路
亮度感应控制电路
亮度感应控制原理图
5.3实验内容
1.读取光敏电阻的电压值
步骤1:连接电路(如上图所示)
步骤2:画流程图
步骤3:编写程序源代码
Arduino IDE程序:
const int light_R_Pin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int light_Value;
light_Value = analogRead(light_R_Pin);
Serial.print(“light Value =:”);
Serial.println(light_Value); // 输出光敏电阻读取的数据
Serial.println(light_Value,BIN); // 以二进制输出光敏电阻读取的数据
Serial.println(light_Value,HEX); // 以十六进制输出光敏电阻读取的数据
delay(500);
}
Mixly程序:
步骤4: 程序编译与调试
2.LED灯亮度感应控制
步骤1:连接电路
步骤2:画流程图
步骤3:编写程序源代码
Arduino IDE程序:
const int light_R_Pin = A0;
const int ledPin = 5;
int light_Value;
int light_Value_max = 600; // 光敏电阻最大读取值,实验时,以实际读数为准
int led_Value;
void setup() {
Serial.begin(9600);
}
void loop() {
light_Value = analogRead(light_R_Pin);
Serial.print("light_Value =:");
Serial.println(light_Value); //将读取的值输出到监视器
led_Value = map(light_Value,0, light_Value_max,0,255);
Serial.println(light_Value); //将读取值映射后输出到监视器
Serial.analoglWrite(ledPin, led_Value); // 输出光敏电阻读取的数据
delay(200);
}
Mixly程序:
步骤4: 程序编译与调试
步骤5:改变map()函数映射范围初值、终值顺序,观察LED亮度变化规律
5.4实验结果
结论:在本次实验中,结果为随着光照强度变小,LED越来越暗,光照强度变大,LED越亮。
反思:首先,通过本此实验我更加熟练地使用Arduino IDE软件,以及通过Arduino IDE软件来编译代码控制Arduino微控制板,本次实验要知道光敏电阻的性质,还学到了很多的知识。其次,在本次实验中,结果为随着光照强度变小,LED越来越暗,光照强度变大,LED越亮。最后,希望下次继续努力学习,再接再厉。
作品:
5.5思考题
1.光敏电阻的阻值随光照强度如何变化?
2.模拟输入、输出接口有哪些,输入、输出数值各有什么特点?
3.PWM的涵义是什么?占空比45%PWM值是多少?
4.如果将map()函数的映射数据范围的初值、终值取反,会观察到什么现象?为什么?