一、光敏电阻模块简介
5 q/ V D% J, U. u4 I) X4 a光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号* B2 N- |0 e% A E5 m; m1 q, B
" d, S% [/ R* J( B7 f% j
# G6 C3 c5 C* b9 B$ x
% p3 v7 h/ r! g/ S调节阈值:我们可以通过旋钮来改变它的阈值,如图% P* ?- M9 I2 q+ [' ~
S, F3 S9 S* W- c0 \* O2 Q1 d+ z
" W9 |- }! ^& M+ P
8 w N" p: f7 Z% l- k$ ?* F( g2 h' N8 ?4 V1 X4 C
当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。1 t. V/ J6 Q: U2 |! |
. N' M6 {; X" o; M
AO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。; H( H* f: J, T H9 }
' w- @2 D! e5 m9 A5 T
这里我主要是用DO口做一个简单的实验,方便大家理解。5 k# z. V9 ?# T; y
, S7 F' e$ \$ l4 \4 {& Z3 _, d二、实验过程
$ q( L5 C) |+ ~! i: Q2 D+ @在这里我主要是采用PD11作为DO输入口
0 i' D( y0 m' n4 ]3 ^8 d( f; `/ Z5 T0 b4 j( r! i" G2 c
光敏模块初始化:+ ~+ \1 U$ a- T
# y1 ?) W9 ]- i; o# E3 a( l
- #include "gm.h", _; b9 E$ c3 U* G1 X3 H
- $ P1 U6 V) H1 i$ H! F$ e t
- : r$ u5 ]' j- B5 Z _
- void gm_Init(void)+ H( A, |, i9 p* _
- {; Q7 ?' J" J- X* r3 G" K8 K) |6 j* X
& c1 C: Q# |! X- GPIO_InitTypeDef GPIO_InitStructure;
, B0 M, u' N( r& e, n2 D - & f3 W' k7 X2 K
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); ) Z0 ~2 z/ P( w: V1 j+ t
- 0 y4 X) ~! C, G8 e
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; + i" Q& |* l1 M9 ?+ k# q
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
* Y- x& N: m3 N- c9 U - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
$ _/ {3 V; T Y7 P - GPIO_Init(GPIOD, &GPIO_InitStructure); ; k+ k) x1 g* s$ @( y
- GPIO_SetBits(GPIOD,GPIO_Pin_11); & Q3 C+ J' f5 ^
- p& C; H k6 c+ d8 V( _- ?- }
复制代码
. h1 Z) q% k `3 _+ X! n# e& Z* ?头文件声明:( s y5 ]/ K/ Z( x# |' P% ]* J
1 T; r3 ]( m1 y- N* _) |
- #ifndef __GM_H+ d) ]5 U9 G! h3 i8 S
- #define __GM_H1 n5 K1 R& V, \2 ~8 p
- #include "sys.h"" b5 C4 t7 }* _1 g% i9 G
4 K1 x2 {" V+ W- #define gm PDin(11)
9 D) e# k7 X" x& b( s7 M, X - void gm_Init(void);
* K) C, L4 r. {( h9 h2 G' C - 9 }! d4 C1 A1 c( d1 A& y
- #endif
复制代码
+ ]# a( I/ A2 |* X) |* F6 m主函数:
( `3 [0 c- @% i1 B9 [, b. j+ H) _2 z! N" q1 {7 _) z# |
- #include "led.h"
+ l* t5 \( u* |5 i2 B, H/ m - #include "gm.h"! T- E9 Q3 _1 m* H% ]
- $ ~) v2 t, G* Q7 O% X
) p; W4 g t: Q- R+ M: t& [- int main(void)
" S6 v; P' _; ^0 ]# Q" [ - {
" R4 M: t9 C0 Y9 u8 \; Q% l9 R% k - delay_init();
' L% y% b7 n/ e1 E9 F0 _ - LED_Init(); $ ^" t" k; a5 ?- \; w) Q4 S
- gm_Init();
0 ^. R7 g* I% @8 \ - while(1)
. @2 c% k( f7 V! A - {
9 N9 A- t* }+ K( _ \: D5 J - if(gm==1)
4 e9 t2 @" q- D2 O1 s - {, j2 f, k1 w4 b4 i0 f
- LED0=1;
- r: ]% m+ m+ l6 \ - LED1=1;, C, O* A8 B. C2 S8 n! p( h* d. Z. ^
- }% ] N; b- t' w: r% i+ T7 i) x
- if(gm==0) . N. [0 s: r5 G! f+ L/ ]9 R
- {4 y. `! L( I% b/ j, `3 |: I
- delay_ms(50);& c' m* K% H7 A. D) ]
- if(gm==0)' Z/ f3 q4 K4 }/ V% n
- {
& _$ |# l, ]) R) E - LED0=0;
0 ]+ P7 E# E- O! [- r* ~; E4 d+ R - LED1=0;
$ Q6 P/ n3 A3 ^- l - }9 c" f4 P' x( _
- }/ `8 m9 ]) p1 p- W9 y, w) b" n
- }8 u) y0 r- @# n$ G
- }
复制代码
: p3 v8 H9 N& R) c+ ~实验截图:
# V0 M- N. ?) k( U7 V+ a+ m ]3 L* P" b* D; F- I' d
) C8 o9 X. _& t- B! {( J9 k* K- B6 [$ r
7 B* W; S6 i+ R4 ?0 w
# Q+ c1 |" M+ b. a8 ?. o- o% y) ^* _8 k
三、总结
/ \; ~# P# Y4 k9 n* h到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。5 r, h# b7 P0 T' _8 D
" W* K+ G0 v5 W" }
6 C# W2 t: z- ]
|