本帖最后由 shaoziyang 于 2015-1-30 00:05 编辑
' R! V0 U0 ~# |+ D7 w" F1 v$ G; [: k" w+ K) K0 A, P
LED除了可以发光,其实也可以测试光强,因为LED也是二极管。当环境光强变化时,LED上的结电压会发生变化,因此可以通过这个方法测量光强。虽然这种方法精度不是太高,但在有些情况下还是有用的。) c( T( U) S. M r
- c8 M7 E5 n- b, M$ l8 T5 L
ST Nucleo F072RB上只有一个用户LED,它接在PA_5,它也是ADC_IN5。利用F072带有的12位ADC,可以很灵敏的测出光强变化。下面程序就演示这个方法,程序很简单,但是效果还不错。
- `5 c& m O3 `8 }* B( y& e% W; j: E) Z( {% h& g6 P; o$ S% z! G
- #include "mbed.h"$ F# B9 j. p8 S7 F% F
0 ~/ D$ C; ~9 e/ O- DigitalOut myled(LED1); P# R( j. I3 v
- ) \* M; w2 V$ y, C# v4 f8 l7 i8 A3 _
- AnalogIn Light(LED1);9 ^5 M9 v6 K4 i5 U
- ( b/ w8 v' \! s! _5 b7 G
- Serial pc(USBTX,USBRX);5 l+ | L; `1 u) Q
- % B2 W. J! O, R# R4 K5 p
- int main() {" U7 _5 n; P) I# s. A4 n
- myled = 0;
+ W4 {( h5 |. e) Q* j) U - while(1) {- v6 q8 I% O& N$ ~
- wait(0.5);
0 u* S- h# u5 ^3 `; N/ z1 ^ - pc.printf("%d\r\n", Light.read_u16()>>4);1 q$ x& V+ k E' x
- }5 Y& n1 E# _, p' C4 X5 k; @' x
- }
复制代码
) H4 W: d, O* K5 ] }
. U% Q! u, d, b; e5 Y9 {
0 \* ~- H2 I* R* I测试效果
- [6 N1 k5 \) }6 t' w) _
$ Y; r$ G- O4 R+ s) y; O: }
9 g! d0 Q' V; C
1 O; U- D5 m. s8 A N2 u4 a+ \$ G
ST_Nucleo_F072_TEST.zip
(671.1 KB, 下载次数: 8)
|
当环境光强变化时,LED上的结电压会发生变化,它们存在一个对应关系(非线性),所以可以测光强。
缺点是变化范围较小,一致性不是特别好,所以不适合测光强具体数值,但是测光强变化,或者测大概光强还是不错的,不用增加任何硬件成本。" e8 q0 z1 c" x( X( b
你试试就清楚了,很容易的。; L; G" \$ B! j; i
在要求不高,或者IO不够时,这个方法还是有用的,又不增加任何硬件成本啊。一个LED完成两个功能。
多谢,刚刚去复习了一下PN结