【Arduino光敏电阻教程 (Arduino Photoresistor Tutorial)】
(资料图片仅供参考)
教程介绍
光敏电阻是一种模拟传感器,一般用于光的测量和控制以及光电转换。
光敏电阻有2个引脚。因为光敏电阻没有正负极,所以我们不需要区分这两个引脚。
光敏电阻上的感应元件有两个独立的电极, 电极之间蜿蜒的红线是半导体材料层。无光照时, 光敏电阻值很大, 电路中电流很小。当照射到半导体材料层上的光线变强时,光敏电阻值会减小,导电性会变好,增强电路中的电流。
但是Arduino不能直接测量电阻,它只能测量电压。因此,我们需要将光敏电阻和一个普通的电阻串联,然后根据串联分压的方法读取光敏电阻上的电压。
Arduino Uno的引脚A1到A5可以作为模拟输入使用,将电压(在0v和Vcc之间)转换为整数值(在0到1023之间),称为模拟值。在将光敏电阻的引脚连接到模拟输入引脚后,我们可以使用analogRead函数读取模拟值。
在这里,我们需要注意的是光敏值仅反映光强的近似趋势,不代表精确的光通量。因此,我们不应该在需要高精度的环境中使用它。
材料清单
1. Arduino Uno 开发板 x1
2. 装有Arduino IDE(编译器)的电脑 x1
3. USB接线 x1
4. 光敏电阻 x1
5. 220欧电阻 x2
6. LED灯x1
7. 面包板 x1
8. 双公头面包线x6 (黑线x3, 红线x1, 绿线x1, 黄线x1)
电路图
代码
int photoPin = A0; //定义连接光敏电阻的引脚
int ledPin = 7; //定义连接LED灯的引脚
void setup() {
pinMode(ledPin, OUTPUT); //把LED等设置为输出
Serial.begin(9600); //初始化串口通信
}
void loop() {
int lightRaw = analogRead(photoPin); //读取光敏电阻输出值
Serial.println(lightRaw); //打印输出值0-1023
int light = map(lightRaw, 1023, 0, 10, 0); //转换模拟值0-1023到0-10
if (light < 5) { //假如输出值少于5
digitalWrite(ledPin, HIGH); //输出高电平给LED灯引脚
} else {
digitalWrite(ledPin, LOW); //假如输出值多于5,输出低电平给LED引脚
}
delay(1000); //延迟1000毫秒
}
上传代码的步骤
a) 点击Arduino图标, 打开编程IDE。一个Sketch会跳出来。
b) 点击文件(F) >> 新建项目, 打开一个新的Sketch。
c) 复制并粘贴上面的代码进IDE。
d) 点击工具 >> 开发板 >> Arduino AVR Boards >> 选择你现在用的开发板。
e) 点击工具 >> 选择端口。(端口由电脑分配。)
f) 点击打勾图标检查代码。
g) 如果IDE没有报错,点击右箭头图标上传代码。
h) 点击工具 >> 打开串口监视器, 看传感器被触碰时是否有正确的信息打印出来。
参考资料
Arduino Light Sensor: https://arduinogetstarted.com/tutorials/arduino-light-sensor
How to Use Photoresistors to Detect Light On An Arduino: https://www.circuitbasics.com/how-to-use-photoresistors-to-detect-light-on-an-arduino/
背景图: 来自Canva和Clipchamp
电路图:用virtual Breadboard制作
音乐:A Day to Remember, provided by Storyblocks
标签: