본문 바로가기
STMicro STM32

[LUX센서] BH1750 사용하기.

by 소나무기운 2020. 11. 1.
반응형

BH1750 모듈

조도를 읽을 수 있는 센서네요.

I2C통신으로 제어

구매는 인터넷에 다수

 

센서 주변의 밝기를 16bit 값을 읽을 수 있어요.

 

저는 STM32F767ZI micom에서 사용하였습니다.

HAL 드라이버 사용.

 

 

BH1750.h 내용입니다.

초기화와 읽기 뿐이네요.

//--------------------------------------------------------------
// File     : BH1750.h
//--------------------------------------------------------------
#ifndef __BH1750_H
#define __BH1750_H

#include "stm32f7xx_hal_msp.h"
//--------------------------------------------------------------
// Variables
//--------------------------------------------------------------
#define BH1750Address 0x23

//--------------------------------------------------------------
// Global Function
//--------------------------------------------------------------
void BH1750_Init();
uint16_t BH1750_Read(void);
//--------------------------------------------------------------
#endif // __BH1750_H

 

BH1750.c 내용입니다.

#include "BH1750.h"

//------------------------------------------------------------------------------
extern I2C_HandleTypeDef hi2c2;

void BH1750_Init()
{
	uint8_t Cmd = 0x10;

	HAL_I2C_Master_Transmit(&hi2c2, BH1750Address << 1, &Cmd, 1, 500);
}
//------------------------------------------------------------------------------

uint16_t BH1750_Read()
{
	uint8_t buff[3];
	uint16_t val = 0;
	HAL_I2C_Master_Receive(&hi2c2, (BH1750Address << 1) | 0x01, buff, 2, 500);
	val = (uint16_t)(((buff[0] << 8) | buff[1]) / 1.2);

	return val;
}
//------------------------------------------------------------------------------

LUX값으로 변환은 16bit 값 / 1.2 네요.

 

간단한 수식입니다.

 

즐거운밤 되세요.

반응형

댓글