用STM32实现GY-MCU90615 非接触式体温传感器实现源码
时间: 2024-02-15 07:01:35 浏览: 224
以下是使用GY-MCU90615非接触式体温传感器测量物体表面温度的示例源代码(使用STM32开发板,以HAL库为例):
```
#include "main.h"
#include "i2c.h"
#include "stdio.h"
#define MLX90615_ADDR 0x5B // GY-MCU90615的I2C地址
float readTemperature(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
while (1)
{
float temperature = readTemperature();
char buffer[50];
sprintf(buffer, "Object Temperature: %.2f\r\n", temperature);
HAL_UART_Transmit(&huart1, (uint8_t*)buffer, strlen(buffer), 1000);
HAL_Delay(1000);
}
}
float readTemperature(void)
{
uint8_t data[3];
HAL_I2C_Master_Transmit(&hi2c1, MLX90615_ADDR << 1, (uint8_t*)0x07, 1, 1000);
HAL_I2C_Master_Receive(&hi2c1, MLX90615_ADDR << 1, data, 3, 1000);
uint8_t crc = data[2] >> 8;
if (crc == ((uint8_t)(data[0] + data[1]) & 0xFF))
{
float temp = (float)((data[1] << 8) | data[0]);
temp = (-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000273.15 + (0.02 * temp));
return temp;
}
else
{
return -1;
}
}
```
注意,该代码使用了STM32的HAL库对I2C接口进行控制,因此需要在代码中包含相应的头文件,并调用相应的HAL库函数。此外,需要注意GY-MCU90615的I2C地址和读取温度的方法,以及数据的解析和校验方式与前面的示例代码略有不同。在实际使用时,需要根据具体的应用场景进行修改和优化。
阅读全文