STMicro STM32
[LUX센서] BH1750 사용하기.
소나무기운
2020. 11. 1. 01:18
반응형
조도를 읽을 수 있는 센서네요.
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 네요.
간단한 수식입니다.
즐거운밤 되세요.
반응형