• Arduino 各种模块篇 光敏感应器 简易光敏


    这一款是非常简单的光敏感应器

    简单到,只对一定光强度有信号感应,输出TTL电平。

    此款也是用电位器来调节的。

    都是这么简单。

    过段时间我为大家奉上数字版的光敏传感器。

    ————————————————————————分割线——————————————————————————

    这里面是商家提供的资料:

    用途:
    光线亮度检测,光线亮度传感器,具有方向性,只感应传感器正前方的光源,用于寻光效果更佳

    模块特色:
    1 可以检测周围环境的亮度和光强度(与光敏电阻比较,方向性比较好,可以感知固定方向的光源)
    2 灵敏度可调(图中蓝色数字电位器调节)
    3 工作电压3.3V-5V
    4 数字开关量输出(0和1)
    5 设有固定螺栓孔,方便安装
    6 小板PCB尺寸:3.2cm * 1.4cm

    使用说明
    1 光敏二极管模块对环境光强最敏感,一般用来检测周围环境的亮度和光强,在大多数场合可以与光敏电阻传感器模块通用,二者区别在于,光敏二极管模块方向性较好,可以感知固定方向的光源。
    2 模块在无光条件或者光强达不到设定阈值时,DO口输出高电平,当外界环境光强超过设定阈值时,模块D0输出低电平;
    3 小板数字量输出D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的光强改变;
    4 小板数字量输出DO可以直接驱动本店继电器模块,由此可以组成一个光电开关

    本系列模块的产品正反面外观图

    产品结构及接线图

    单片机测试程序

    /******************************************
    传感器触发测试
    单片机:STC89C52
    波特率:9600
    产品用途:光线检测。
    *****************************************/
    #include <reg52.h>
    unsigned char date;
    #define uchar unsigned char
    #define uint unsigned int
    sbit key1=P0^1;


    /* 函数申明 -----------------------------------------------*/
    void delay(uint z);
    void Initial_com(void);

    //***********************************************************

    /*
    ********************************************************************************
    ** 函数名称 : delay(uint z)
    ** 函数功能 : 延时函数
    ********************************************************************************
    */
    void delay(uint z)
    {
    uint i,j;
    for(i=z;i>0;i--)
    for(j=110;j>0;j--);
    }


    //******************************

    //*****串口初始化函数***********

    //******************************
    void Initial_com(void)
    {
    EA=1; //开总中断
    ES=1; //允许串口中断
    ET1=1; //允许定时器T1的中断
    TMOD=0x20; //定时器T1,在方式2中断产生波特率
    PCON=0x00; //SMOD=0
    SCON=0x50; // 方式1 由定时器控制
    TH1=0xfd; //波特率设置为9600
    TL1=0xfd;
    TR1=1; //开定时器T1运行控制位

    }


    //*************************
    //**********主函数*********
    //*************************
    main()
    {
    Initial_com();
    while(1)
    {

    if(key1==0)
    {
    delay(); //消抖动
    if(key1==0) //确认触发
    {
    SBUF=0X01;
    delay(200);


    }

    }

    if(RI)
    {
    date=SBUF; //单片机接受
    SBUF=date; //单片机发送
    RI=0;
    }


    }
    }

    ————————————————————————分割线——————————————————————————

    调试方法,前几篇关于模块的博客一样,都是用的相同的方法调试的。

    模块的D口接入arduino Pin2上。

    打开串口监视器看效果:

    void setup()
    {
      pinMode(2, INPUT);
      Serial.begin(9600);
    }
    
    void loop()
    {
      
      int temp = digitalRead(2);
      Serial.println(temp);
      delay(200);
      
    }

    放在光源下,和不放在光源下

    默认为输出1,高电平,

    有光的时候输出低电平 0V

    无光的时候输出高电平 5V

    这里的光强度指的是通过电位器调节的一个阈值。临界值而已。

    给大家看看实际效果:

    接近光源:

    大拇指处的指示灯亮了

    离开光源:

    离开等就灭了,很简单的一个小程序。显示屏上是显示的串口01数据

    靠近就出0

    离开就出1

    ——————使用结论:灵敏度很差。。

    ------下次弄个数字的。这个仅仅是个简单的二极管传感器罢了。

  • 相关阅读:
    【C#】3.算法温故而知新
    【C#】2.算法温故而知新
    【C#】1.算法温故而知新
    【C#】SQL数据库助手类2.0(自用)
    【Javascript Demo】JS获取当前对象大小以及屏幕分辨率等
    【Android 基础】Android中全屏或者取消标题栏
    【ASP.NET 问题】System.InvalidOperationException: 对象的当前状态使该操作无效 【大量表单数据提交】错误解决
    【CSS】颜色码对照表
    【Ext.Net学习笔记】07:后续
    【Ext.Net学习笔记】06:Ext.Net GridPanel的用法(GridPanel 折叠/展开行、GridPanel Selection、 可编辑的GridPanel)
  • 原文地址:https://www.cnblogs.com/spaceship9/p/3002028.html
Copyright © 2020-2023  润新知