当前位置:   article > 正文

江科大stm32学习笔记8——光敏传感器控制蜂鸣器

江科大stm32学习笔记8——光敏传感器控制蜂鸣器

接线:

 光敏传感器上的AO不接。

接好线后上电,可以看到光敏传感器上亮了两个灯,如果只亮一个,可以尝试加大环境光照或者拿螺丝刀拧上面的蓝色方块。用手遮住前面的电阻只亮一个灯。

代码:

复制粘贴3-4的工程文件,改名为“3-5 光敏传感器控制蜂鸣器”,打开keil,在“Hardware”文件夹里新建“Buzzer.c”、“Buzzer.h”、“LightSensor.c”、“LightSensor.h”四个文件,并输入如下代码:

Buzzer.c:

  1. #include "stm32f10x.h" // Device header
  2. void Buzzer_Init(void)
  3. {
  4. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  5. GPIO_InitTypeDef GPIO_InitStructure;
  6. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  7. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  8. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  9. GPIO_Init(GPIOB,&GPIO_InitStructure);
  10. GPIO_ResetBits(GPIOB,GPIO_Pin_12);
  11. }
  12. void Buzzer_ON(void)
  13. {
  14. GPIO_ResetBits(GPIOB,GPIO_Pin_12);
  15. }
  16. void Buzzer_OFF(void)
  17. {
  18. GPIO_SetBits(GPIOB,GPIO_Pin_12);
  19. }
  20. void Buzzer_Turn(void)
  21. {
  22. if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12) == 0)
  23. {
  24. GPIO_SetBits(GPIOB,GPIO_Pin_12);
  25. }
  26. else
  27. {
  28. GPIO_ResetBits(GPIOB,GPIO_Pin_12);
  29. }
  30. }

Buzzer.h:

  1. #ifndef __BUZZER_H
  2. #define __BUZZER_H
  3. void Buzzer_Init(void);
  4. void Buzzer_ON(void);
  5. void Buzzer_OFF(void);
  6. void Buzzer_Turn(void);
  7. #endif

 LightSensor.c:

  1. #include "stm32f10x.h" // Device header
  2. void LightSensor_Init(void)
  3. {
  4. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  5. GPIO_InitTypeDef GPIO_InitStructure;
  6. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  7. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  8. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  9. GPIO_Init(GPIOB,&GPIO_InitStructure);
  10. }
  11. uint8_t LightSensor_Get(void)
  12. {
  13. return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13);
  14. }

LightSensor.h:

  1. #ifndef __LIGHTSENSOR_H
  2. #define __LIGHTSENSOR_H
  3. void LightSensor_Init(void);
  4. uint8_t LightSensor_Get(void);
  5. #endif

 main.c:

  1. #include "stm32f10x.h" // Device header
  2. #include "Delay.h"
  3. #include "Buzzer.h"
  4. #include "LightSensor.h"
  5. int main(void)
  6. {
  7. Buzzer_Init();
  8. LightSensor_Init();
  9. while(1)
  10. {
  11. if (LightSensor_Get() == 1)
  12. {
  13. Buzzer_ON();
  14. }
  15. else
  16. {
  17. Buzzer_OFF();
  18. }
  19. }
  20. }

编译运行成功后,即可通过遮住光敏电阻来控制蜂鸣器

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/50311?site
推荐阅读
相关标签
  

闽ICP备14008679号