使用光敏电阻和 LED 灯的环境光传感器!
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
| ||||
|
关于这个项目
我已经使用 Arduino 一段时间了,我决定是时候从头开始设计我自己的项目了。我修改了从 Alex Glow 和 Joe Coburn 在网上找到的一些电路,使它们更适合这个项目。请,如果您发现任何问题,或者认为您找到了比我的设计更有效的东西,请在下面发表评论,我会尽快回复您。
接线
我有一个光敏电阻连接到模拟引脚 0(任何模拟引脚都可以工作)和面包板右侧的 5V 电压。它通过一个接地的 1K 欧姆电阻器运行。我将面包板另一侧的 LED(任何颜色)连接到数字引脚 13(任何数字引脚都可以)和接地的 220 欧姆电阻(100 欧姆也可以)。在第一个 LED 的右侧,以相同的方式连接了一个不同颜色的 LED,只是使用了不同的数字引脚。
工作原理
如果光敏电阻读取的值高于 450,它会打印“很轻!”在串行监视器上并关闭所有 LED,如下所示:
if(light> 450) { // 如果它很亮... Serial.println("It is很轻!");数字写入(13,低); //关闭左LED digitalWrite(12,LOW); // 关闭右侧 LED }
如果它读取的值介于 230 和 450 之间,则会打印“这是平均光!”在串行监视器上打开左侧 LED,如下所示:
else if(light> 229 &&light <451) { // 如果是平均光... Serial.println("It is average light!");数字写入(13,高); //打开digitalWrite(12,LOW)上的左LED; // 关闭右侧 LED }
这只会让我们考虑低于 230 的值。如果一个值低于 230,它会打印“它很暗!”在串行监视器上打开两个 LED,如下所示:
else { // 如果天很黑... Serial.println("天很黑!");数字写入(13,高); //打开digitalWrite(12,HIGH)上的左LED; // 打开右边的 LED }
我在循环的末尾添加了 1000 的延迟,以防止信息过载进入串行监视器,如下所示:
延迟(1000); // 不要向计算机发送垃圾邮件!
在上传或运行任何东西之前,请务必查看原理图并检查代码。
代码
- LED_PR_Light_Read
LED_PR_Light_ReadArduino
int light =0; // 存储当前的灯光 valuevoid setup() { // 把你的设置代码放在这里,运行一次:Serial.begin(9600); //配置串口与计算机 pinMode(13, OUTPUT); // 将数字引脚 13 配置为输出 pinMode(12, OUTPUT); // 将数字引脚 12 配置为输出}void loop() { // 将您的主要代码放在这里,重复运行:light =analogRead(A0); // 从 PR Serial.println(light) 读取并保存值; // 打印当前光照值 if(light> 450) { // 如果它很亮... Serial.println("It is很轻!");数字写入(13,低); //关闭左LED digitalWrite(12,LOW); // 关闭右侧 LED } else if(light> 229 &&light <451) { // 如果是平均光... Serial.println("It is average light!");数字写入(13,高); //打开digitalWrite(12,LOW)上的左LED; // 关闭右侧 LED } else { // 如果天很黑... Serial.println("天很黑!");数字写入(13,高); // 开启 digitalWrite(12,HIGH); // 打开右边的 LED } delay(1000); // 不要向计算机发送垃圾邮件!}
示意图
制造工艺