一、光敏电阻模块简介8 s) R8 n* k% |2 z1 s+ [6 o% [
光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号( C% C7 v0 K# i7 ~ d
/ C8 I6 g, C6 x
2 E( d9 b( p6 I+ [; ?8 t1 o" v$ j: Y7 D/ f+ \% D
调节阈值:我们可以通过旋钮来改变它的阈值,如图
* H/ f1 C: }/ O0 P. O! O% S% e: q5 X
* x$ F- d, S! {/ x
- `: d) z2 W3 E
& A+ ^6 W: M, ], R: [7 v4 e2 E7 W9 M A+ v# _
当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。
5 r& y- Z& o: y$ h+ i: v( p$ U5 R; X1 D
AO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。4 O0 j% z, `2 I0 Z, q, Z
! g" f7 a; D* J; D) S0 T3 D6 P$ j
这里我主要是用DO口做一个简单的实验,方便大家理解。# |# s, p- u( R8 j1 a
5 a) Y2 L, G/ V3 j5 I3 Q
二、实验过程4 p2 K) [1 A, C7 e* M1 g
在这里我主要是采用PD11作为DO输入口; |: D2 W/ Z0 f& z
3 K9 W I1 r4 o& H: ]0 v' q光敏模块初始化:
# K; Z1 y+ ]4 K( o" _6 T4 q9 T( r9 j8 \
- #include "gm.h"% K& C+ C# m3 ~
- H6 V( A% \9 J5 j; P- % M7 [' }/ `0 I5 ~2 Z+ m- F6 @1 d
- void gm_Init(void)+ U8 U3 N G4 U$ {
- {
3 y8 T. v. ^ U+ \+ F! D
. K! W+ b. a! @: X- GPIO_InitTypeDef GPIO_InitStructure;
6 }: l# Y: v$ ]. h- t/ G* ` -
Y: \, j# h8 ^. T - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
# ]: {, c, l1 g4 S. {" e -
8 n3 g) L$ H) L% \& O F- @ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
) P' I D0 \" u7 G+ E2 [ - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
' c+ C1 [3 q8 t7 A - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
3 s5 G. ]6 t E. S+ W5 h0 m* d- ?2 q+ n - GPIO_Init(GPIOD, &GPIO_InitStructure); " Y' H% n* ~$ U$ X* P) K; U/ O8 Y- E
- GPIO_SetBits(GPIOD,GPIO_Pin_11); / j: H- U5 K2 E
3 \9 A/ x" D$ c% q- }
复制代码 ; r' o. u7 T8 s6 i
头文件声明:: _! ^- M! P/ h! L% h) \
7 N b0 D& b# {$ o
- #ifndef __GM_H7 v' ]$ g8 X/ Q1 {& F9 f* ~
- #define __GM_H4 R5 @' [- \; z4 s
- #include "sys.h"& D+ z: {/ `) u( S0 f$ j
- 9 g+ r8 J8 X3 w& q) T
- #define gm PDin(11)
% R5 o% A" v6 B+ P* @3 l - void gm_Init(void);% |/ |5 Y) v" H( @
2 k; Q- \9 x6 c6 _# h1 |; c- #endif
复制代码
$ u2 J0 r- r* n. V, C3 E' H4 L主函数:
; V4 A& A$ R: o) F: j: i7 M
, K, y; l3 ]. w u4 t: _- #include "led.h"
4 W2 T7 k6 ?3 S. f- Q5 _2 k! p# { - #include "gm.h": G* g9 F- K* i$ U3 u
7 V9 @1 m0 j! [
, c/ r- F* a# H- int main(void)5 `, A6 Q6 ?0 C8 f
- {
+ `" S" u' T* P1 M- C! X8 R - delay_init(); + Q1 J, N# s" G6 h
- LED_Init(); 1 b8 Y" C" \, F) M
- gm_Init();2 Y. D$ b# o/ q& e. G; j* G9 K- q
- while(1)' N- ]+ Z: `+ u: i. M# K5 W
- {2 G! t$ W: o B
- if(gm==1)0 I6 c: ]# x' n7 F" @4 U# A. H
- {' F, c$ t1 J5 l
- LED0=1;
: Q6 O+ ^; t9 S+ e - LED1=1;6 e2 Z& m* e# h7 S- q) n% _( H
- }5 N S6 i# C; }0 o; \& r* j& f: q
- if(gm==0) / i& R y9 t1 M, a/ p- Q$ x: N
- {& C9 I3 Z5 I" c8 N
- delay_ms(50);# N. W m& G0 n0 N
- if(gm==0)
/ K9 c2 G2 `; T - {+ g) ?" c% s( K) {3 D1 R
- LED0=0;
# `" }& F Y2 l# F - LED1=0;
; F, p4 N- q, g- q ]+ o5 Q/ @. W' ^ - }
' j: u0 r/ ~* z* U& D9 [ - }7 z3 ~+ Q) H3 M+ b
- }3 `$ E; h& ~7 ]& C2 a( a
- }
复制代码
5 C4 u# o4 v# |# V6 l) _实验截图:$ |. R3 y1 O9 W3 P; `; P
% m3 s% ]) o1 f' w# W5 c$ u7 q/ j4 I
+ h$ ~0 K1 X( }" O( k/ O4 q$ \( k
$ D0 U7 h. g1 G# G% K
2 q+ l" o7 |0 K8 S
! @/ F, R1 i5 Q 三、总结
- k5 i8 v8 Z' T, f0 D- b# n到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。
' q$ q: D2 @% V- r$ b5 L8 {/ G. g; |8 R
. g& W) w+ Y% @: ?! b |