本帖最后由 shaoziyang 于 2015-1-30 00:05 编辑 ) q$ k3 b- A& ~: {+ C1 t# W$ ~
. F |1 H5 g2 R- ]# ?LED除了可以发光,其实也可以测试光强,因为LED也是二极管。当环境光强变化时,LED上的结电压会发生变化,因此可以通过这个方法测量光强。虽然这种方法精度不是太高,但在有些情况下还是有用的。
# G8 D& f7 V( E1 ]) }
, v( s. H1 Z# L, K7 S1 @0 Q3 G" ZST Nucleo F072RB上只有一个用户LED,它接在PA_5,它也是ADC_IN5。利用F072带有的12位ADC,可以很灵敏的测出光强变化。下面程序就演示这个方法,程序很简单,但是效果还不错。9 l9 o5 g0 H. j8 l: _/ o
3 d! L& j" B- K+ S; z' V
- #include "mbed.h"
' O% P, k0 F( q+ o - ; n4 O. p3 _$ ~) Z5 k$ J- b+ ^
- DigitalOut myled(LED1);
4 S! N F* B' w* w1 R - 0 V( S. X2 W0 ?! C5 z: I4 o% \
- AnalogIn Light(LED1);
' ~4 X3 P! O' O8 v: O& R - 0 Q5 G0 F1 J E/ m' E7 T
- Serial pc(USBTX,USBRX);5 f: X$ N- t; I5 L
! {' i [* I; o5 e2 n. S- int main() {2 y# I7 H* o# O, \
- myled = 0;
( }8 X2 F; G3 } P& x; D' i! ]* z - while(1) {
2 ]* S7 Z3 Q) Q9 j4 h. d - wait(0.5);1 @/ X8 [/ n; e: [
- pc.printf("%d\r\n", Light.read_u16()>>4);
3 Z5 A* M% ?3 M$ n - }
+ d# Y* O: Q2 N1 g1 L - }
复制代码
8 \$ H" |9 v+ A$ M% R# W3 W& M* X; l2 J4 z' [2 h1 M6 {
$ H8 U! ~" e2 D! i
测试效果
- x' q' b- m& g: E4 i% H' M
: Q( Q2 W7 W2 q) H; I% j
! b' F( \( [. M* X2 t2 ~
R$ a/ i0 R3 e
ST_Nucleo_F072_TEST.zip
(671.1 KB, 下载次数: 8)
|
当环境光强变化时,LED上的结电压会发生变化,它们存在一个对应关系(非线性),所以可以测光强。
缺点是变化范围较小,一致性不是特别好,所以不适合测光强具体数值,但是测光强变化,或者测大概光强还是不错的,不用增加任何硬件成本。9 A8 z5 s& A+ G: P+ M
你试试就清楚了,很容易的。
在要求不高,或者IO不够时,这个方法还是有用的,又不增加任何硬件成本啊。一个LED完成两个功能。
多谢,刚刚去复习了一下PN结