一、光敏电阻模块简介1 i% r6 d1 y' f3 s' F, p
光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号* R s! S5 t( r
& h' b9 j5 r" I9 f/ x( s$ T
1 D+ g2 K7 | U4 ^" t ~; I9 x8 k. W
' y8 {) V9 [7 ~6 x0 M9 R
调节阈值:我们可以通过旋钮来改变它的阈值,如图
* A% m" D2 | L0 J! M- ]6 l' |1 A+ t9 H! P: z9 A
/ Z7 m0 f% e" p* P% o! H. G% _8 z! m8 R& r% s5 A1 L
0 O1 p1 Q* C$ T" J
当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。
; Q# }, \& l: u$ w) C& o) x# W& z6 _+ [6 r, q0 G u# O1 d
AO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。5 u' [! t$ ~5 q1 ]
% U+ e7 {* i% _2 p0 K1 u+ ?6 u这里我主要是用DO口做一个简单的实验,方便大家理解。( T( U) ` A4 y, \9 t
0 }( Z. h6 }, i0 k3 d. A二、实验过程
3 ?/ h0 A. H8 Q8 e7 j在这里我主要是采用PD11作为DO输入口
2 X/ W8 d" i) h- A/ V6 o3 ] G2 x5 U- s* P
光敏模块初始化:. M: Q0 Q. }9 E: n, _, } h
' m. b: P1 r3 T+ |5 {; A( @# m9 W0 f- #include "gm.h"7 g4 K1 }3 ?" |3 x) R: |
% X b1 d) z8 j9 Y K! d' p5 X3 ^# j
% u5 v8 f* G" Q- B9 F' N6 f- void gm_Init(void)
- T) u7 x( g0 k2 q5 ] - {
' n D& P' M, \5 r( w2 D/ F% R
" C. z; H' L8 c) Y7 Q5 w- GPIO_InitTypeDef GPIO_InitStructure;
! S X% m7 Q, Z1 {/ i9 T -
% F) f4 ~" |7 E8 }) \+ s* Q - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); 7 \5 v, ?1 B$ l% m
-
L3 l5 |2 ^, M5 z - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; ( h& ]# d9 e( q% Q! d- N& W7 c
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
! ?/ I5 d5 k& s7 r8 ? - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ; m, |" h( h( y9 v9 x6 K, e
- GPIO_Init(GPIOD, &GPIO_InitStructure);
7 C1 f1 O& b0 k - GPIO_SetBits(GPIOD,GPIO_Pin_11);
$ w( M& v' ^6 H; Z8 R" Q6 j
9 a0 C/ j# h# S+ a# ?- }
复制代码 0 ^- W; f. q+ `& T' F' [ X
头文件声明:
% q& Q' Y9 [. v
/ I, m; m, [" A- d0 E& ?. S6 ~$ p- #ifndef __GM_H7 D* q% o2 n3 Q9 ~( _ a
- #define __GM_H* O5 w+ f8 W7 R7 |3 J1 d8 U- l& U
- #include "sys.h"
! h( Z( _3 F1 L: P& O
2 D, J$ _7 ]! O9 K- e0 X- #define gm PDin(11)4 z9 [5 R" h& U, E
- void gm_Init(void);0 _( p/ \& p4 L7 I" O
- # [2 P' K( f! r
- #endif
复制代码
, i5 I) o4 o( P: \9 d主函数:
! e2 c) S: b. P- r" p! x* r: M& U0 W" x0 c5 L" c' y
- #include "led.h"! Z; d% l# l" y2 ]
- #include "gm.h"' J& j/ _) z0 D$ r
0 P6 r/ O& w% Y4 W! F
1 z: z6 x( h* Z; U4 ?- int main(void)
) e4 k1 L1 y) e. ~, w" [ - {
- m. m- K" o: c. Z2 p - delay_init();
" r1 i: M, P) D: O! c' P - LED_Init(); ; }, `% k$ F3 s! |; a R7 z, w! o% Y
- gm_Init(); O/ r! V9 B' k2 @+ m
- while(1); I3 B* R+ D2 x% I
- {+ @3 t5 M& p4 q5 s
- if(gm==1)
, {2 n& j6 p# a' z5 N% D' F3 m( ]& Y* k. M - {
" R3 Q! S& [: o; e - LED0=1;. C" _# p9 `6 a/ v+ P. _
- LED1=1;* I" U+ l5 P( W, ^
- }4 f4 V) a A( b7 i
- if(gm==0)
$ Z4 |: ^# x, q& n. S( i7 j - {+ i1 q5 r7 m9 e# i g# X
- delay_ms(50);
3 ?; S+ C, N% W1 Z - if(gm==0)3 P8 x; ^; B) ^' M4 @* \
- {
9 H8 O! j% f% q- A - LED0=0;
" u: _8 H k( u, X4 q* [! V) k: _ - LED1=0;
* N* y; C, s; ?! e7 C - }
1 h0 A% @8 @. _ - }
7 H0 ]6 X8 U* Z) S: X$ w+ w - }4 t/ f0 n: v) t- h& K: g
- }
复制代码
" `- j1 u3 O2 `实验截图:4 n# I J/ s$ E5 }2 w7 T
% q: q4 r; a1 R, x0 U2 W4 p/ d7 b
( E4 v5 s. T: a( Z
9 C! V' t; q( u
5 Q2 F9 I$ E L
[1 M. S( j: G3 \ 三、总结
; l0 U2 u4 T0 h. E4 e! b到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。
0 d: K! f% G8 X3 @) x- c2 B z6 e' l+ j5 ]3 S
0 ?- h; P7 u) h4 W: G6 l$ a1 P
|