一、光敏电阻模块简介
9 o$ l9 p3 f# ]3 C* C光敏电阻传感器模块是对光线敏感度的反应,一般用来检测探头周围光线的强度(亮度),可以通过DO输出数字信号1和0,也可以通过AO口输出模拟信号
) C8 p6 B. x4 i3 q( ^& }4 f! O* ^. k h0 l7 c
4 z( G( B! v$ w6 a7 R# c1 j9 p
: x* T7 U1 l$ \" |9 \$ j调节阈值:我们可以通过旋钮来改变它的阈值,如图
% f1 G* a; k2 E" n7 {+ F m0 n5 g8 z0 S, f. w- R; L
9 ]0 w" C; G D. V4 _$ B# J) S* h8 G& O) e+ ]% {
+ x, ], k( E' v当检测到周围光线较暗时(在阈值范围内),DO口输出高电平,电压大;当检测到周围光线较亮时(超过我们设定的阈值),DO口输出低电平,电压小。
\9 w/ T p9 M, ]( y" Q
* J6 b3 s; Z% E9 c, iAO口作为模拟信号输出,可以连接到单片机上拥有的AD转换模块或者外置AD转换模块,通过转换,就可以得到更为精准的光线亮度数值。$ N) V' r; f# `* Z* D4 i( P# u; m
, Q9 U* a* D+ O2 K& M- K这里我主要是用DO口做一个简单的实验,方便大家理解。
! \( e2 @6 M0 h4 `. }" O& Y9 c1 U: A+ P5 n
二、实验过程4 N! p+ `6 j, I' ], W' z
在这里我主要是采用PD11作为DO输入口7 Z6 Q3 Q. y+ f5 X; ?
9 z7 ^* o3 W2 C$ b
光敏模块初始化:0 Z* x' R- X9 c
+ f# J6 j4 x1 t" d3 k& D- #include "gm.h": b/ s( A; {, N7 Y/ e
+ B+ S! Q6 c1 k& F: U7 q
4 B. `: ?9 Y! p# k! `- void gm_Init(void)
3 d. q; B' b& p l - {
7 }8 ^7 n2 w+ n% s
! u! {+ t; F: w+ x( |- GPIO_InitTypeDef GPIO_InitStructure;
3 _ G# p3 L3 E3 g3 J0 P0 z - 1 x3 @+ K7 V! y. \+ C) H8 M( T
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); ; w6 X( C" z% k% B8 H( O3 _
- 9 v! A) I& x7 o6 C1 C
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; " M) C/ u3 g5 s3 K, b/ [$ ^. H
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; $ j% ]% x2 U9 h7 m' U, }4 x5 [
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
! g0 ?* c: O6 k4 K0 `8 a - GPIO_Init(GPIOD, &GPIO_InitStructure);
. x. D& }8 q) d9 A* e- r6 V$ u - GPIO_SetBits(GPIOD,GPIO_Pin_11); ! K6 I9 C6 i7 ]1 U- d
- c2 O' g, ]' B7 x$ Z& n0 [6 k- }
复制代码 : z" f7 t/ B+ t0 w" y- d+ J+ [0 c
头文件声明:' b! v2 B/ v6 c" n8 k
$ T/ n2 ]7 r& V9 [1 D- #ifndef __GM_H/ A6 _) _: [4 ?. q
- #define __GM_H* Y; g- d0 |, r/ a! c) r5 k
- #include "sys.h"
3 v) T X4 C3 O! f
2 o0 Q; J" g5 [9 N4 F/ e! `: X: z- #define gm PDin(11)3 U0 F; }( s2 H6 i! w# R/ {
- void gm_Init(void);# e" k& z7 a; ^6 j5 \$ A% V
3 a9 q% l/ k k! U+ b7 c- #endif
复制代码 " u" h8 X* Q8 z" i" y2 G( D5 n1 y
主函数:" ?6 U S# E5 `
, ~& O8 W* P4 y* w2 |
- #include "led.h"
5 T# ~. O8 K8 ]- s' Z - #include "gm.h"# B! _3 \* e0 k! P1 @
- 5 V' j- O8 R5 {* K
- " Q7 G v+ z# d: W
- int main(void)( f9 e5 g, n { `$ ^( A) K |
- { 3 B; t2 Z& r Y2 A+ H" I
- delay_init();
# T4 t' H; X3 i, |* ^5 X6 b, Y - LED_Init();
; m7 W' d( }, ^3 z* O - gm_Init();. T9 a* V3 F+ r3 d+ ^4 S/ m
- while(1)
; F* {" }% x2 C: M. I$ { - {! ^: s) C! W3 h
- if(gm==1)
; g, j4 z3 I3 i9 F- q- v6 Y - {4 l6 R; j7 \* M1 b& y- y' V
- LED0=1;
$ M! N6 Z9 ^1 I$ O5 C* @& l - LED1=1;
3 n# @% R0 r# L9 i, ]7 O - }
2 |: d/ P% d8 E - if(gm==0) % I' z$ Y2 \. }
- {; w/ _, d7 W- G. D
- delay_ms(50);
( V/ q$ ^ J, b4 y2 m" l" @ - if(gm==0)
5 B" H3 ]4 F" J - {
& p5 @2 o" i/ j' d: i4 Z - LED0=0;, v$ K4 W, T; i% Q; Z
- LED1=0;+ D- J7 f9 n! K- L5 H
- }
8 T( [2 @- m& e4 M/ q! E" N - }
2 u. L- R3 G2 F0 ] - }
9 H5 O. }8 Q' z" V, d. [0 c8 ^ - }
复制代码 6 P2 H# O" E7 e% J9 [ j8 q. _
实验截图:
" _7 d; e' r/ Z% ^) ], x& U$ I6 n7 O( Z0 o# x9 r+ F
' C9 v9 A8 d5 f
# _; G8 o* K# c. x6 I/ _: I
# H( w! d) ~) Q3 Q1 o) R4 U
8 Y6 J w, o9 }$ a1 V
三、总结6 p! o" t8 s: B: y* s% ?5 V
到这里就很清晰明了了,开始上手吧,关于光敏模块的用途,就是检测光线强度,我们添加光敏模块,很多地方都可以用到,比如像去年的无线充电小车,将光敏模块放置在LED灯前,小车充完电,灯亮起,光敏感应到后启动电机;又比如走廊里的灯亮灭设置等等,用途很广泛。
- R; w$ E. A/ r; J4 ?& W7 [ f9 c& U
4 B' R. u. R u/ D/ D% F- m' D |