Haas day 3 温度检测

/*
 * 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,&reg,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,&reg,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);
    }

    


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值