一、光敏电阻模块简介 M* Y* _- _- r8 F: D
光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号
+ e- |3 x! a- X- o
5 O. k! x4 @7 a5 p9 a# v2 U5 n
$ j; q* G* v8 y9 P
9 P) {' q7 e3 [3 [7 y7 Z调节阈值:我们可以通过旋钮来改变它的阈值,如图! F Y& q- T3 y- j$ k; U
4 v! e2 U* f, H4 e* v! e: ~
1 O4 a! ?( o" i. S
- \" b) ]! |5 v( ]1 ]: N' D: F+ _
& C6 {4 h+ v, p& {" X当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。0 m- {1 c4 C/ \: P% h
3 I- @* u4 z, O8 O+ Z* T1 H$ YAO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。; C9 r9 u; F- e) l" E% m! w5 C3 z7 i
4 ^1 b: C2 m1 m4 J: p
这里我主要是用DO口做一个简单的实验,方便大家理解。
( {& _5 j& {# S" D) p( F5 {1 P- i" J! @
二、实验过程5 e* E7 q1 v. b! r
在这里我主要是采用PD11作为DO输入口4 _. E: j# v* Q/ c/ n
+ C1 {/ j" M' d+ v
光敏模块初始化:, ]: d% L7 c, S& p
+ F" ~5 a/ `# T. `, q% Q9 w- #include "gm.h"6 t8 b1 l8 J9 e2 Z* A
! ?' E4 E1 X- ?
5 i1 L) q E. J- void gm_Init(void)
6 T6 ?# R" r0 I) _ - {
# _3 ^. W; A' A0 r! X/ }% ` ~# o
$ o- l3 D, X/ X) E l1 O- GPIO_InitTypeDef GPIO_InitStructure;
( n$ X( v) s, r -
7 d* c/ d ?# a$ H7 [ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); & j; e+ X# n s
-
9 t* Q# C. B4 S7 d' t" y - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
' |. c2 K! `% \) G, [7 u' P" x - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
/ Q+ e6 }/ i7 L' \3 | - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
$ s2 X3 x9 @: N! E# b$ {% m9 y - GPIO_Init(GPIOD, &GPIO_InitStructure); - [& W3 E* q( d% l6 n- j" K S6 H, e
- GPIO_SetBits(GPIOD,GPIO_Pin_11);
: H0 a. A0 U- `% W. V, h/ D, t
, R d- p( Z+ v2 m( d- }
复制代码
' t) A+ y5 _' s; l1 @1 c, ]头文件声明:
' b7 E0 O6 V$ V$ [( \, `/ U) M1 y0 |* l8 O8 w
- #ifndef __GM_H
: t. ^0 s1 y# R% c" e: ~ - #define __GM_H
: ~ y8 D/ x1 N- | - #include "sys.h"
2 z+ D( y1 D0 w" \- o
& a) P$ f' m+ z- #define gm PDin(11)8 E0 E. K3 F: y M* P, C+ t
- void gm_Init(void);
8 C# X5 b c6 Z
- x% I3 t. ~: v5 B, b- #endif
复制代码
( H: n. F; j- k9 [+ {4 `2 t主函数:
6 O9 W; Q7 _; G! k2 {+ D5 }
- }: `5 w3 m- j6 X+ Z0 e' g- #include "led.h"
7 h* C7 }* j: ]# M. P - #include "gm.h"
: y; m; h$ J8 |. b9 a# g
0 Q* M1 {, U4 o C9 B- 3 n$ |, [% Z8 _5 Y& h$ L+ R
- int main(void)0 W& k) e" b+ U8 f
- {
! y; ?1 G1 u1 m/ T - delay_init(); & t. R: S. Z S/ n/ ]' z
- LED_Init();
) j F" @! ]' W# v. w+ m$ y - gm_Init();6 Q! K0 r1 T9 W, b$ Y
- while(1)0 ]* D _. Z) Y' c1 S7 g
- {
' V! j& H; q" l! M" m - if(gm==1)
q6 a6 y0 i; H7 r$ y - {9 n; q6 L( ~! V# u
- LED0=1;
& I. i; Y$ f, J$ T' Z# t& { - LED1=1;( o8 W z9 L- n. a& h# `0 l6 Z( J
- }. a# |$ e" C* F( L2 a; g( @+ W X
- if(gm==0) 2 T2 R# I `6 c. d8 V9 B
- {$ [/ P" o& G* {0 y
- delay_ms(50);7 G, K! @% n+ l) v
- if(gm==0)
5 {( K% ` L, ]2 G# {8 A - {3 B. x- T, t! C! L- x/ ~ j! V3 a. F7 i
- LED0=0;
) E% L9 B! k' G* ?& Q - LED1=0;
9 x) X: g6 f/ Z) G - }5 @6 e: M# H2 ?$ L: P
- }
7 j: a( {1 W: i% M, Q2 A) }$ q( u3 P - }
. |, g" j7 {3 w- N. { - }
复制代码 6 y! s7 U: Z6 z
实验截图:
( B6 i, Q- |/ t" h( [1 K+ ]: A( R5 v, x
5 Q* U, O& i( z# x. ]( l
+ m! p R* J5 Y4 H
: G# h: S8 X1 G, P' p; Z% O
) F# u3 W; [' s: _3 M ?* O
三、总结1 r" O8 D$ h. k7 Y/ v. }
到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。
/ _5 K% {. @1 n7 k/ r+ H3 A" `7 P2 L0 E6 b% H# b5 Z% T
3 w) c& j/ x& _& T, u
|