第三十二篇、基于Arduino uno,获取光敏电阻传感器的原始值和光照强度——结果导向

0、结果

 说明:先来看看串口调试助手显示的结果,第一个值是原始的模拟电压值,第二个值是含光量,也就是光照强度,如果是你想要的,可以接着往下看。

1、外观

说明:虽然光敏电阻传感器形态各异,但是原理和代码都是适用的,只是接线可能不同。


2、连线

说明:只需要连接三根线。
uno————光敏电阻传感器


如果你的光敏电阻长这样:

接线方式如下:

说明:只需要连接三根线。
uno————光敏电阻传感器

3、源程序

说明:采用非阻塞方式编写,一定时间检测一次光照信息,并将对应功能进行函数化,方便移植。

/****************************************光敏电阻 part****************************************/
/*
  注意:
  光越亮,值越小;光越暗,值越大;
*/
#define photosensitivePin A0                            //定义模拟口A5
#define phTimeInterval 1000                             //检测一次的时间间隔     

unsigned long phTimes = 0;                              //记录设备运行时间
int photosenVal = 0;                                    //光照度数值
int photoContent = 0;
/****************************************set up and loop part*********************************/
void setup(){
  Serial.begin(9600);                                   //设置串口波特率为9600

  Serial.println("设备上线!");
}
void loop(){
  getPhData();                                          //获取光敏电阻的值
}
/****************************************光敏电阻 part****************************************/
/*获取光敏电阻的值*/
void getPhData() {
  if (millis() - phTimes >= phTimeInterval) {           //一定时间检测一次
    phTimes = millis();
    photosenVal = analogRead(photosensitivePin);        //获取原始值
    photosenVal = constrain(photosenVal, 10, 1024);     //原始值限制在一定范围
    photoContent = map(photosenVal, 10, 1024, 100, 0);  //映射到对应的区间

    Serial.print("原始数据: ");                          //串口打印对应的值
    Serial.print(photosenVal);                          //串口打印对应的值
    Serial.print(" ,光照强度: ");                       //串口打印对应的值
    Serial.print(photoContent);                         //串口打印对应的值
    Serial.println(" %");                               //串口打印对应的值
  }
}

4、注意事项

说明:如果有什么问题可以评论@我,我将帮助你。如果你的光敏电阻不是集成的模块,那么就需要采取第二种方式连接线路,电阻10K左右的就够了。特别注意的是:光照强度最强光,我是拿手机灯光模拟的,如果你想改,可以拿最强光照着光敏电阻,然后看原始值,就可以更改光照强度,基本上最强光也就那么亮了。

5、基本原理

        光敏电阻是一种依据光线明暗程度变化而改变阻值的电阻器件,其原理是基于半导体中的内照效应。

        在光敏电阻的半导体材料中,掺入了一些能够响应光线的掺杂物。当这些掺杂物受到光线的作用时,会产生载流子,从而影响电阻器的电阻值。具体来说,当有光照射在光敏电阻上时,电荷载流子就会在半导体中产生并向外扩散,使材料本身的电阻值降低。反之,如果没有光照射在光敏电阻上时,电荷载流子的数量就很少,此时材料的电阻值较高。

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
很高兴为您提供帮助!以下是一个基于库函数的光敏电阻传感器测得的光照强度并显示到OLED上的代码示例: ``` #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); const int LDR_PIN = A0; // 光敏电阻连接的引脚 void setup() { pinMode(LDR_PIN, INPUT); // 设置光敏电阻引脚为输入 display.begin(SSD1306_SWITCHCAPVCC, 128, 32); // 初始化OLED display.clearDisplay(); // 清空显示内容 } void loop() { int lightLevel = analogRead(LDR_PIN); // 读取光敏电阻 display.clearDisplay(); // 清空显示内容 display.setTextSize(2); // 设置字体大小 display.setTextColor(WHITE); // 设置字体颜色 display.setCursor(0,0); // 设置光标位置 display.print("Light Level:"); // 显示文字 display.setCursor(0,20); // 设置光标位置 display.print(lightLevel); // 显示光照强度 display.display(); // 更新显示内容 delay(1000); // 延时1秒钟 } ``` 这段代码使用了Adafruit的库函数来驱动OLED屏幕,并读取光敏电阻来计算光照强度。在循环中,我们首先读取光敏电阻,然后清空OLED屏幕并显示光照强度。最后,我们使用`display.display()`函数更新显示内容,并延时1秒钟以使屏幕保持稳定。 请注意,您需要将OLED屏幕正确连接到Arduino板上,并在代码中正确设置屏幕的参数(如屏幕的分辨率和连接方式)。另外,本代码示例仅供参考,请根据您的具体需求进行修改和优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值