在本快速入门指南中,您将学习如何将光敏电阻连接到Arduino板并读取电压。您将首先使用串行监视器来了解光传感器的行为方式,然后构建一个电路,在天黑时自动打开灯。
当您学习Arduino时,这是一个很好的练习电路。代码简单明了,光传感器连接也很简单。
所需零件
Arduino Uno的
面包板(和一些面包板电线)
光敏电阻 – 也称为光敏电阻 (LDR) *
电阻 10 kΩ
电线
将光传感器连接到Arduino
要将光传感器连接到Arduino,请将光传感器与5V和GND之间的电阻串联。然后将电阻器和光传感器之间的中间点连接到Arduino上的vwin 输入引脚。
在面包板上连接Arduino光传感器
以下是使用面包板和一些电缆将此电路连接到Arduino的方法:
Arduino光传感器代码
此Arduino代码是读取电压tage 从光传感器(连接到模拟引脚 A0)然后将模拟读数值打印到串行监视器的示例。
还有一些代码会尝试确定它是黑暗的、昏暗的、明亮的、明亮的还是非常明亮的。您必须调整阈值才能使其与您的传感器一起使用。
模拟引脚将为您提供一个介于 0 和 1023 之间的值,其中 0 表示 0V,1023 表示可能的最大电压(通常为 5V)。
与所有Arduino代码一样,您有两个主要函数setup()和loop():
在 setup() 中,您需要配置串行端口,以便可以读出值。
在 loop() 中,您需要读取模拟输入并在串行端口上打印此值。
void setup() {
// Setup serial communication at baudrate 9600 for reading the light sensor
Serial.begin(9600);
}
void loop() {
// reads the input on analog pin A0
int lightValue = analogRead(A0);
// Print out the values to read in the Serial Monitor
Serial.print("Analog reading (0-1023): ");
Serial.print(lightValue);
// Use the value to determine how dark it is
// (Try tweaking these to make it more accurate)
if (lightValue < 10) {
Serial.println(" - Dark");
} else if (lightValue < 200) {
Serial.println(" - Dim");
} else if (lightValue < 500) {
Serial.println(" - Light");
} else if (lightValue < 800) {
Serial.println(" - Bright");
} else {
Serial.println(" - Very bright");
}
delay(500);
}
代码的工作原理
在setup()函数中,只有一行:这一行设置了Arduino的串行端口,以便可以将数据从Arduino发送到您的计算机中。Serial.begin(9600);
在 loop() 函数中,有四个部分:
int lightValue = analogRead(A0);:此行读取模拟引脚 A0 上的模拟电压。它返回一个介于 0 和 1023
之间的值,表示引脚上相对于参考电压的电压电平(大多数 Arduino 板通常为 5V)。该值存储在变量 中。lightValue
Serial.println(lightValue);:此行将 lightValue 的值打印到串行监视器,以便您可以读取它。
if (lightValue 《 10) {
。..这些线将使用预先确定的阈值来确定它是暗的、暗的、亮的、亮的还是非常亮的。您必须调整阈值以使其适用于您的传感器。
delay(500);:此行在每次读取和打印之间增加 500 毫秒的小延迟。此延迟可防止代码运行过快。这样可以更轻松地读取串行监视器上的读数。
此代码的最终结果是,它连续读取引脚 A0 处的模拟电压,将读数(0 到 1023
之间的数字)和亮度值(暗、暗、亮、亮或非常亮)打印到串行监视器,并在循环中重复该过程。
当您将手放在传感器上时,它检测到的光量会发生变化,您可以在串行监视器中观察变化的值。这是可视化数据并在事情未按预期工作时进行调试的有用方法。
使用串行监视器
若要使用串行监视器检查上述代码的结果,请按照下列步骤操作:
使用USB电缆将Arduino板连接到计算机。
使用Arduino IDE将提供的代码上传到Arduino板。
通过单击放大镜图标或使用键盘快捷键 (Windows/Linux) 或 (Mac) 打开串行监视器。Ctrl + Shift + MCmd +
Shift + M
将串行监视器中的波特率设置为 9600(或与代码中的函数中的值相同)。Serial.begin()
读取串行监视器中的输出。
将手放在光传感器上,查看读数如何实时变化。
示例:暗激活 LED
下面是一个示例电路,其中发光二极管 (LED) 在天黑时打开。如果您想控制户外灯,您可以轻松地用更强大的 LED 替换
LED。您可以在我们的晶体管教程中了解有关如何做到这一点的更多信息。
以下是在试验板上连接电路的方法:
// Definition of constants - values that will never change
const int LIGHT_SENSOR = A0;
const int LED = 3;
// Definition of variables - values that can change
int analogValue;
void setup() {
// Set the LED pin as an output
pinMode(LED, OUTPUT);
}
void loop() {
// read the input from the analog pin
analogValue = analogRead(LIGHT_SENSOR);
// Check if it's above a specific threshold and turn the LED on or off
if(analogValue < 700)
digitalWrite(LED, HIGH); // turn on LED
else
digitalWrite(LED, LOW); // turn off LED
}
审核编辑:陈陈
-
光敏电阻
+关注
关注
4文章
293浏览量
48971 -
Arduino
+关注
关注
188文章
6468浏览量
186943
发布评论请先 登录
相关推荐
评论