如何用LED测量光线
我们都知道,有些LED太亮,直接照进房间;有些LED又不够亮,需要用手指遮挡才能判断是否点亮。为了解决这个问题,我们可以利用LED本身作为光传感器。发光二极管(LED)不仅能发出光,还能感应照射到其上的光线。由于我们可以精确地在产品发光的位置测量光线,因此就能根据实际光照情况调整LED的亮度。
就像电机也可以充当发电机一样,LED也是一种微型太阳能电池板。当光线照射到LED上时,它会产生少量电流。由于LED常被用于需要可见但不显眼的地方(比如设备上的待机LED,白天和夜晚都使用),将LED自身作为调节亮度的方式,可能是一种有趣且经济有效的解决方案。
但问题在于,LED产生的电流非常微弱,不足以通过模拟数字转换器进行有效处理。解决这一问题的一种方法是利用电流会积累的特性,通过长时间测量LED,可以得到更显著的差异。
我们对D2施加正电压,并将D1连接到GND。对于LED而言,这是反向的,电流不会流动,灯也不会亮起,但此时LED结和Arduino引脚的电容会被充电。我们将输出高电平驱动器从D2断开(使其变为高阻抗输入),然后测量D2中存储的电荷通过LED流向D1(接地)所需的时间。光线越亮,电荷释放得越快,从而导致D2的输入读数由高电平变为低电平。
LED对波长等于或小于其主要发射波长的光敏感。例如,绿色LED对蓝光和部分绿光敏感,但对黄光和红光不敏感。
代码
本文编译自hackster.io





