日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32+BH1750光敏傳感器獲取光照強(qiáng)度

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-03-25 09:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?

一、環(huán)境介紹

MCU:STM32F103ZET6

光敏傳感器:BH1750數(shù)字傳感器(IIC接口)

開發(fā)軟件:Keil5

代碼說明:使用IIC模擬時(shí)序驅(qū)動,方便移植到其他平臺,采集的光照度比較靈敏. 合成的光照度返回值范圍是 0~255。 0表示全黑 255表示很亮。

實(shí)測: 手機(jī)閃光燈照著的狀態(tài)返回值是245左右,手捂著的狀態(tài)返回值是10左右.

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

二、BH1750介紹

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

三、核心代碼

BH1750說明: ADDR引腳接地,地址就是0x46

完整工程代碼下載:https://download.csdn.net/download/xiaolong1126626497/18500653

3.1 iic.c

#include "iic.h"

/*
函數(shù)功能:IIC接口初始化
硬件連接:
SDA:PB7
SCL:PB6
*/
void IIC_Init(void)
{
	RCC->APB2ENR|=1<<3;//PB
	GPIOB->CRL&=0x00FFFFFF;
	GPIOB->CRL|=0x33000000;
	GPIOB->ODR|=0x3<<6;
}

/*
函數(shù)功能:IIC總線起始信號
*/
void IIC_Start(void)
{
		IIC_SDA_OUTMODE(); //初始化SDA為輸出模式
		IIC_SDA_OUT=1; 		 //數(shù)據(jù)線拉高
		IIC_SCL=1;     		 //時(shí)鐘線拉高
		DelayUs(4);        //電平保持時(shí)間
		IIC_SDA_OUT=0; 		 //數(shù)據(jù)線拉低
		DelayUs(4);        //電平保持時(shí)間
		IIC_SCL=0;     		 //時(shí)鐘線拉低
}


/*
函數(shù)功能:IIC總線停止信號
*/
void IIC_Stop(void)
{
		IIC_SDA_OUTMODE(); //初始化SDA為輸出模式
		IIC_SDA_OUT=0; 		 //數(shù)據(jù)線拉低
		IIC_SCL=0;     		 //時(shí)鐘線拉低
		DelayUs(4);        //電平保持時(shí)間
		IIC_SCL=1;     		 //時(shí)鐘線拉高
		DelayUs(4);        //電平保持時(shí)間
		IIC_SDA_OUT=1; 		 //數(shù)據(jù)線拉高
}

/*
函數(shù)功能:獲取應(yīng)答信號
返 回 值:1表示失敗,0表示成功
*/
u8 IIC_GetACK(void)
{
		u8 cnt=0;
		IIC_SDA_INPUTMODE();//初始化SDA為輸入模式
		IIC_SDA_OUT=1; 		  //數(shù)據(jù)線上拉
	  DelayUs(2);         //電平保持時(shí)間
		IIC_SCL=0;     		  //時(shí)鐘線拉低,告訴從機(jī),主機(jī)需要數(shù)據(jù)
		DelayUs(2);         //電平保持時(shí)間,等待從機(jī)發(fā)送數(shù)據(jù)
	  IIC_SCL=1;     		  //時(shí)鐘線拉高,告訴從機(jī),主機(jī)現(xiàn)在開始讀取數(shù)據(jù)
		while(IIC_SDA_IN)   //等待從機(jī)應(yīng)答信號
		{
				cnt++;
				if(cnt>250)return 1;
		}
		IIC_SCL=0;     		  //時(shí)鐘線拉低,告訴從機(jī),主機(jī)需要數(shù)據(jù)
		return 0;
}

/*
函數(shù)功能:主機(jī)向從機(jī)發(fā)送應(yīng)答信號
函數(shù)形參:0表示應(yīng)答,1表示非應(yīng)答
*/
void IIC_SendACK(u8 stat)
{
		IIC_SDA_OUTMODE(); //初始化SDA為輸出模式
		IIC_SCL=0;     		 //時(shí)鐘線拉低,告訴從機(jī),主機(jī)需要發(fā)送數(shù)據(jù)
		if(stat)IIC_SDA_OUT=1; //數(shù)據(jù)線拉高,發(fā)送非應(yīng)答信號
		else IIC_SDA_OUT=0; 	 //數(shù)據(jù)線拉低,發(fā)送應(yīng)答信號
		DelayUs(2);            //電平保持時(shí)間,等待時(shí)鐘線穩(wěn)定
		IIC_SCL=1;     		     //時(shí)鐘線拉高,告訴從機(jī),主機(jī)數(shù)據(jù)發(fā)送完畢
		DelayUs(2);            //電平保持時(shí)間,等待從機(jī)接收數(shù)據(jù)
		IIC_SCL=0;     		  	 //時(shí)鐘線拉低,告訴從機(jī),主機(jī)需要數(shù)據(jù)
}


/*
函數(shù)功能:IIC發(fā)送1個字節(jié)數(shù)據(jù)
函數(shù)形參:將要發(fā)送的數(shù)據(jù)
*/
void IIC_WriteOneByteData(u8 data)
{
		u8 i;
		IIC_SDA_OUTMODE(); //初始化SDA為輸出模式
		IIC_SCL=0;     		 //時(shí)鐘線拉低,告訴從機(jī),主機(jī)需要發(fā)送數(shù)據(jù)
		for(i=0;i<8;i++)
		{
				if(data&0x80)IIC_SDA_OUT=1; //數(shù)據(jù)線拉高,發(fā)送1
				else IIC_SDA_OUT=0; 	 //數(shù)據(jù)線拉低,發(fā)送0
				IIC_SCL=1;     		     //時(shí)鐘線拉高,告訴從機(jī),主機(jī)數(shù)據(jù)發(fā)送完畢
				DelayUs(2);            //電平保持時(shí)間,等待從機(jī)接收數(shù)據(jù)
				IIC_SCL=0;     		 		 //時(shí)鐘線拉低,告訴從機(jī),主機(jī)需要發(fā)送數(shù)據(jù)
				DelayUs(2);            //電平保持時(shí)間,等待時(shí)鐘線穩(wěn)定
				data<<=1;              //先發(fā)高位
		}
}


/*
函數(shù)功能:IIC接收1個字節(jié)數(shù)據(jù)
返 回 值:收到的數(shù)據(jù)
*/
u8 IIC_ReadOneByteData(void)
{
		u8 i,data;
		IIC_SDA_INPUTMODE();//初始化SDA為輸入模式
	  for(i=0;i<8;i++)
	  {
			 	IIC_SCL=0;     		  //時(shí)鐘線拉低,告訴從機(jī),主機(jī)需要數(shù)據(jù)
				DelayUs(2);         //電平保持時(shí)間,等待從機(jī)發(fā)送數(shù)據(jù)
				IIC_SCL=1;     		  //時(shí)鐘線拉高,告訴從機(jī),主機(jī)現(xiàn)在正在讀取數(shù)據(jù)
				data<<=1;           
				if(IIC_SDA_IN)data|=0x01;
				DelayUs(2);         //電平保持時(shí)間,等待時(shí)鐘線穩(wěn)定
	  }
		IIC_SCL=0;     		  		//時(shí)鐘線拉低,告訴從機(jī),主機(jī)需要數(shù)據(jù) (必須拉低,否則將會識別為停止信號)
		return data;
}


poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.2 iic.h

#ifndef _IIC_H
#define _IIC_H
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#define IIC_SDA_OUTMODE() {GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=0x30000000;}
#define IIC_SDA_INPUTMODE() {GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=0x80000000;}
#define IIC_SDA_OUT PBout(7)  //數(shù)據(jù)線輸出
#define IIC_SDA_IN PBin(7)  //數(shù)據(jù)線輸入
#define IIC_SCL PBout(6)  //時(shí)鐘線

void IIC_Init(void);
void IIC_Start(void);
void IIC_Stop(void);
u8 IIC_GetACK(void);
void IIC_SendACK(u8 stat);
void IIC_WriteOneByteData(u8 data);
u8 IIC_ReadOneByteData(void);
#endif

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.3 BH1750.h

#ifndef _BH1750_H
#define _BH1750_H
#include "delay.h"
#include "iic.h"
#include "usart.h"
u8 Read_BH1750_Data(void);
#endif
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.4 BH1750.c

#include "bh1750.h"
u8 Read_BH1750_Data()
{
    unsigned char t0;
    unsigned char t1;
    unsigned char t;
    u8 r_s=0;
    IIC_Start(); //發(fā)送起始信號
    IIC_WriteOneByteData(0x46);
    r_s=IIC_GetACK();//獲取應(yīng)答
    if(r_s)printf("error:1\r\n");
    IIC_WriteOneByteData(0x01);
    r_s=IIC_GetACK();//獲取應(yīng)答
     if(r_s)printf("error:2\r\n");
    IIC_Stop(); //停止信號 
    
    IIC_Start(); //發(fā)送起始信號
    IIC_WriteOneByteData(0x46);
    r_s=IIC_GetACK();//獲取應(yīng)答
    if(r_s)printf("error:3\r\n");
    IIC_WriteOneByteData(0x01);
    r_s=IIC_GetACK();//獲取應(yīng)答
    if(r_s)printf("error:4\r\n");
    IIC_Stop(); //停止信號 
    
    IIC_Start(); //發(fā)送起始信號
    IIC_WriteOneByteData(0x46);
    r_s=IIC_GetACK();//獲取應(yīng)答
    if(r_s)printf("error:5\r\n");
    IIC_WriteOneByteData(0x10);
    r_s=IIC_GetACK();//獲取應(yīng)答
    if(r_s)printf("error:6\r\n");
    IIC_Stop(); //停止信號 
    
    DelayMs(300); //等待
    
    IIC_Start(); //發(fā)送起始信號
    IIC_WriteOneByteData(0x47);
    r_s=IIC_GetACK();//獲取應(yīng)答
    if(r_s)printf("error:7\r\n");
    
    t0=IIC_ReadOneByteData(); //接收數(shù)據(jù)
    IIC_SendACK(0); //發(fā)送應(yīng)答信號
    t1=IIC_ReadOneByteData(); //接收數(shù)據(jù)
    IIC_SendACK(1); //發(fā)送非應(yīng)答信號
    IIC_Stop(); //停止信號
    
     t=(((t0<<8)|t1)/1.2);
     return t;  
}

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.5 main.c

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include "at24c02.h"
#include "bh1750.h"

int main()
{
	u8 val;
	LED_Init();
	BEEP_Init();
	KeyInit();
  USARTx_Init(USART1,72,115200);
  IIC_Init();
  
	while(1)
	{
		val=KeyScan();
		if(val)
		{
            val=Read_BH1750_Data();
            printf("光照強(qiáng)度=%d\r\n",val);
//			 BEEP=!BEEP;
			 LED0=!LED0;
			 LED1=!LED1;
		}
	}
}

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3.6 運(yùn)行效果圖

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2578

    文章

    55567

    瀏覽量

    794281
  • STM32
    +關(guān)注

    關(guān)注

    2313

    文章

    11195

    瀏覽量

    374758
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    【RA-Eco-RA4M2開發(fā)板評測】+ 光照強(qiáng)度檢測

    BH1750是用于I2C總線接口的數(shù)字環(huán)境光傳感器IC。該集成電路適合于獲取環(huán)境光數(shù)據(jù),用于調(diào)整手機(jī)液晶屏和鍵盤背光功率,在高分辨率下,其檢測范圍可達(dá)1-655351x。 其之所以具有如此的精度
    發(fā)表于 04-22 00:18

    【飛凌嵌入式RV1126B開發(fā)板】+雙通道傳感器檢測及數(shù)據(jù)曲線繪制

    有10K上拉電阻,使電位上拉至1.8V。 圖1接口P17 對通道SARADC0_IN0進(jìn)行檢測的指令為: 為進(jìn)行溫度和光照強(qiáng)度的檢測,可使用相應(yīng)的模塊來簡化電路連接,該模塊的電路如圖2所示。 在使用時(shí)
    發(fā)表于 03-24 10:54

    昉·星光開發(fā)板方案:昉·星光開發(fā)板光敏傳感器之光強(qiáng)度數(shù)據(jù)讀取

    ,用于幫助開發(fā)板讀取光敏傳感器的模擬輸出信息,從而火照光照強(qiáng)度數(shù)值。 在這個光敏傳感器頂部,有一個光敏
    發(fā)表于 03-18 06:19

    昉·星光開發(fā)板火焰傳感器探測火光

    類似,在這個火焰傳感器頂部,有一個光敏電阻,由于光電效應(yīng),光照愈強(qiáng),阻值就愈低,隨著光照強(qiáng)度的升高,電阻值迅速降低。反之,輸出低電平信號。隨著電阻值的變化,其模擬輸出口AO的電壓信號也
    發(fā)表于 03-16 06:48

    在 VisionFive 2 上使用光敏傳感器讀取光強(qiáng)度數(shù)據(jù)

    sensor: 4. 總結(jié) 在這個演示中,我們學(xué)習(xí)了如何讀取光敏傳感器的AO信號。 通過光敏傳感器獲取當(dāng)前環(huán)境光
    發(fā)表于 03-11 07:03

    在 VisionFive 2 上使用光敏傳感器

    SBC 本身沒有 ADC 模塊,因此本演示主要解釋 DO 輸出的使用。未來,我們將與外部ADC模塊合作,通過AO輸出獲得光的強(qiáng)度值。 在感光傳感器的頂部,有一個光敏電阻。由于光電效應(yīng),光越強(qiáng),電阻值越低
    發(fā)表于 03-11 06:23

    OPT4003-Q1:高性能數(shù)字環(huán)境光傳感器的深度解析

    OPT4003-Q1:高性能數(shù)字環(huán)境光傳感器的深度解析 在電子設(shè)備的設(shè)計(jì)中,環(huán)境光傳感器扮演著至關(guān)重要的角色,它能感知周圍環(huán)境的光照強(qiáng)度,為設(shè)備提供智能化的光照調(diào)節(jié)功能。今天我們要深入
    的頭像 發(fā)表于 02-11 10:35 ?284次閱讀

    海綿拉伸撕裂強(qiáng)度試驗(yàn)機(jī)中傳感器的電子信號處理技術(shù)

    在海綿拉伸撕裂強(qiáng)度試驗(yàn)機(jī)中,傳感器電子信號處理技術(shù)至關(guān)重要。 在海綿拉伸撕裂強(qiáng)度試驗(yàn)機(jī)的檢測系統(tǒng)中,傳感器是捕捉力學(xué)信號的“前端感知”,電
    的頭像 發(fā)表于 09-05 09:40 ?718次閱讀

    超強(qiáng)感光,即時(shí)檢測!高精度光照傳感器賦能納祥科技迷你照度計(jì)方案

    覆蓋,采樣率達(dá)2次/秒,無需復(fù)雜調(diào)試即可瞬時(shí)檢測,很好地平衡性能與能耗。方案概述本方案通過高精度光電傳感器捕捉環(huán)境光照強(qiáng)度,經(jīng)單片機(jī)實(shí)時(shí)校準(zhǔn)處理,驅(qū)動LED屏直觀
    的頭像 發(fā)表于 09-02 15:41 ?655次閱讀
    超強(qiáng)感光,即時(shí)檢測!高精度<b class='flag-5'>光照</b><b class='flag-5'>傳感器</b>賦能納祥科技迷你照度計(jì)方案

    【RA-Eco-RA6M4開發(fā)板評測】用I2C實(shí)現(xiàn)光照強(qiáng)度的檢測和顯示

    這個項(xiàng)目我們利用瑞薩的RA6M4的I2C控制功能實(shí)現(xiàn)光照傳感器BH1750光照測試,并進(jìn)行屏幕顯示。 為了方便進(jìn)行光照強(qiáng)度的檢測,所有的引
    發(fā)表于 08-26 22:05

    領(lǐng)麥微紅外測溫傳感器:重塑3D光敏打印的溫控革命

    需求。領(lǐng)麥微紅外測溫傳感器憑借其快速響應(yīng)、高精度、非接觸式測溫及算法定制能力,正成為新一代光敏3D打印機(jī)的“溫控中樞”,推動行業(yè)向智能化、高效化方向邁進(jìn)。一、毫秒
    的頭像 發(fā)表于 08-13 15:03 ?1033次閱讀
    領(lǐng)麥微紅外測溫<b class='flag-5'>傳感器</b>:重塑3D<b class='flag-5'>光敏</b>打印的溫控革命

    凱米斯溫濕度照度一體傳感器:環(huán)境監(jiān)測的智能哨兵

    在氣象觀測、農(nóng)業(yè)種植、工業(yè)自動化及環(huán)境監(jiān)控領(lǐng)域,精準(zhǔn)的環(huán)境參數(shù)采集是保障安全與效率的關(guān)鍵。凱米斯科技推出的溫濕度照度一體傳感器,以全數(shù)字化檢測技術(shù)為核心,集成了溫度、濕度和光照強(qiáng)度的高精度測量功能
    的頭像 發(fā)表于 08-11 09:02 ?786次閱讀
    凱米斯溫濕度照度一體<b class='flag-5'>傳感器</b>:環(huán)境監(jiān)測的智能哨兵

    數(shù)字16位串行輸出型環(huán)境光傳感器IC BH1750FVI數(shù)據(jù)手冊

    BH1750FVI數(shù)據(jù)手冊
    發(fā)表于 08-09 16:04 ?0次下載

    二氧化碳溫濕度光照傳感器:四合一,在線監(jiān)測氣體

    二氧化碳溫濕度光照傳感器是一種多功能環(huán)境監(jiān)測設(shè)備,集成了測量二氧化碳濃度(CO?)、空氣溫度及光照強(qiáng)度(照度)四種關(guān)鍵環(huán)境參數(shù)的功能于一體。通過內(nèi)置的多類型傳感器元件,實(shí)現(xiàn)對環(huán)境條件
    的頭像 發(fā)表于 07-15 17:21 ?938次閱讀

    【沁恒CH585開發(fā)板免費(fèi)試用體驗(yàn)】+光照傳感器及其檢測

    光照傳感器在對環(huán)境的光線情況的檢測中起著重要的作用,這里所采用的是數(shù)字式光照傳感器BH1750,它具有集成度高和檢測精度高的特點(diǎn)。 該
    發(fā)表于 07-06 00:08
    清流县| 衡阳市| 资溪县| 曲沃县| 唐河县| 通许县| 洪湖市| 盱眙县| 神池县| 新余市| 宜春市| 三亚市| 岳池县| 郧西县| 平罗县| 宁河县| 杂多县| 崇仁县| 鄯善县| 郧西县| 泸西县| 黄平县| 砀山县| 顺义区| 成都市| 长岭县| 香格里拉县| 龙口市| 乌鲁木齐市| 天全县| 洪雅县| 常山县| 温州市| 河北区| 玉树县| 西吉县| 新泰市| 三原县| 肥东县| 肇庆市| 和田县|