/*
* Copyright (C) 2015-2020 Alibaba Group Holding Limited
*/
#include <aos/errno.h>
#include <aos/kernel.h>
#include <unistd.h>
#include <k_api.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <uservice/uservice.h>
#include <uservice/eventid.h>
#include "aos/init.h"
#include "board.h"
#include "aos/hal/gpio.h"
#include "aos/hal/pwm.h"
#include "sh1106.h"
#include "aos/hal/adc.h"
#include "aos/hal/i2c.h"
#include "drv_als_ps_ir_liteon_ap3216c.h"
#include "ulog/ulog.h"
#include "netmgr.h"
#include "hal_iomux_haas1000.h"
#include "../../../components/lwip/lwip2.0.0/include/lwip/sockets.h"
#define IIC_PORT 1
#define HAL_CHT8305_ADDR 0x40
#define HAL_CHT8305_REG 0x00
void CHT8305_GethumTemp(float *temp,float *humi){
i2c_dev_t IIc;
IIc.port = IIC_PORT;
IIc.config.address_width =I2C_HAL_ADDRESS_WIDTH_7BIT;
IIc.config.dev_addr =HAL_CHT8305_ADDR;
IIc.config.freq = I2C_BUS_BIT_RATES_100K;
IIc.config.mode = I2C_MODE_MASTER;
IIc.priv = NULL;
unsigned int CHT8305_Temp =0;
unsigned int CHT8305_Humi=0;
unsigned char buf[4] ={0};
hal_i2c_init(&IIc);
unsigned int reg =HAL_CHT8305_REG;
hal_i2c_master_send(&IIc,HAL_CHT8305_ADDR,®,1,1000);
aos_msleep(1000);
hal_i2c_master_recv(&IIc,HAL_CHT8305_ADDR,buf,4,100);
CHT8305_Temp = (buf[0]<< 8| buf[1]);
CHT8305_Humi = (buf[2]<< 8| buf[3]);
*temp =(175.72f * (float)CHT8305_Temp)/65536.0f -46.85f;
*humi =((125.0f*(float)CHT8305_Humi)/65535.0f)-6.0f;
}
int application_start(int argc, char *argv[])
{
float temp=0;
float humi=0;
// myled_init();
// mypwm_init();
while(1){
CHT8305_GethumTemp(&temp,&humi);
printf("temp:%.2f,humi:%.2f\n",temp,humi);
aos_msleep(1000);
}
}
烧录到haas上
/*
* Copyright (C) 2015-2020 Alibaba Group Holding Limited
*/
#include <aos/errno.h>
#include <aos/kernel.h>
#include <unistd.h>
#include <k_api.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <uservice/uservice.h>
#include <uservice/eventid.h>
#include "aos/init.h"
#include "board.h"
#include "aos/hal/gpio.h"
#include "aos/hal/pwm.h"
#include "sh1106.h"
#include "aos/hal/adc.h"
#include "aos/hal/i2c.h"
#include "drv_als_ps_ir_liteon_ap3216c.h"
#include "ulog/ulog.h"
#include "netmgr.h"
#include "hal_iomux_haas1000.h"
#include "../../../components/lwip/lwip2.0.0/include/lwip/sockets.h"
#define IIC_PORT 1
#define HAL_CHT8305_ADDR 0x40
#define HAL_CHT8305_REG 0x00
void CHT8305_GethumTemp(float *temp,float *humi){
i2c_dev_t IIc;
IIc.port = IIC_PORT;
IIc.config.address_width =I2C_HAL_ADDRESS_WIDTH_7BIT;
IIc.config.dev_addr =HAL_CHT8305_ADDR;
IIc.config.freq = I2C_BUS_BIT_RATES_100K;
IIc.config.mode = I2C_MODE_MASTER;
IIc.priv = NULL;
unsigned int CHT8305_Temp =0;
unsigned int CHT8305_Humi=0;
unsigned char buf[4] ={0};
hal_i2c_init(&IIc);
unsigned int reg =HAL_CHT8305_REG;
hal_i2c_master_send(&IIc,HAL_CHT8305_ADDR,®,1,1000);
aos_msleep(1000);
hal_i2c_master_recv(&IIc,HAL_CHT8305_ADDR,buf,4,100);
CHT8305_Temp = (buf[0]<< 8| buf[1]);
CHT8305_Humi = (buf[2]<< 8| buf[3]);
*temp =(175.72f * (float)CHT8305_Temp)/65536.0f -46.85f;
*humi =((125.0f*(float)CHT8305_Humi)/65535.0f)-6.0f;
}
int application_start(int argc, char *argv[])
{
float temp=0;
float humi=0;
// myled_init();
// mypwm_init();
unsigned char TEMP[50]={0};
unsigned char HUMI[50]={0};
sh1106_init();
while(1){
CHT8305_GethumTemp(&temp,&humi);
OLED_Clear();
sprintf(TEMP,"temp:%.2f",temp);
sprintf(HUMI,"humi:%.2f",humi);
OLED_Show_String(10,0,TEMP,16,1);
OLED_Show_String(10,40,HUMI,16,1);
OLED_Refresh_GRAM();
aos_msleep(1000);
}
}