当前位置: 首页 > news >正文

网站logo怎么做动态图设计一个简单的网页

网站logo怎么做动态图,设计一个简单的网页,揭阳做网站哪个好,汽车网站大全在学习这个项目之前,我们先了解一下传感器,查阅资料可知,电路板上温湿度传感器型号是GXHTC3,是北京中科银河芯科技有限公司研发的一款芯片,采用I2C接口与ESP32-C3通信,I2C地址是0x70。 接下来我们要进行编写i2c驱动程序,首先我们复制esp-idf-v5.1.3\examples\get-started\samp…

在学习这个项目之前,我们先了解一下传感器,查阅资料可知,电路板上温湿度传感器型号是GXHTC3,是北京中科银河芯科技有限公司研发的一款芯片,采用I2C接口与ESP32-C3通信,I2C地址是0x70。

接下来我们要进行编写i2c驱动程序,首先我们复制esp-idf-v5.1.3\examples\get-started\sample_project这个工程到我们的之前所创的实验文件夹底下,然后把这个文件夹的名称修改为humi_temp,humi是湿度的前4个首字母,temp是温度的前4个首字母

接着在VScode中打开我们将要进行学习的项目,打开humi_temp文件夹

我们可以先打开humi_temp工程目录下的CMakeList.txt文件,修改工程的名称为humi_temp(也就是project后面括号里的,咱们第一节在例程学习中说到过),然后保存关闭此文件

(1)接下来要进行正式的操作了,右击main,选择新建文件,写入文件名称,分别命名为myi2c.c、myi2c.h、gxhtc3.c和gxhtc3.h

(2)接着打开main下的CMakeList.txt文件,可以看到gxhtc3.c和myi2c.c文件已经被添加到路径里面了,如果没有的话,咱们可以自己手动添加一下哈

(3)根据视频教程,我们需要给myi2c.h和gxhtc3.h文件的最开始处分别加入代码#pragma once,这是一条预处理指令,告诉编译器这个头文件只可以编译一次

(4)在myi2c.c文件的最开始,添加头文件myi2c.h;在gxhtc3.c文件的最开始,添加头文件gxhtc3.h;在main.c文件的最开始,添加头文件myi2c.h和gxhtc3.h

(5)我们复制i2c_simple工程下i2c_simple_main.c文件中的60~79行代码到humi_temp工程下myi2c.c文件


static esp_err_t i2c_master_init(void)
{int i2c_master_port = I2C_MASTER_NUM;i2c_config_t conf = {.mode = I2C_MODE_MASTER,.sda_io_num = I2C_MASTER_SDA_IO,.scl_io_num = I2C_MASTER_SCL_IO,.sda_pullup_en = GPIO_PULLUP_ENABLE,.scl_pullup_en = GPIO_PULLUP_ENABLE,.master.clk_speed = I2C_MASTER_FREQ_HZ,};i2c_param_config(i2c_master_port, &conf);return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}

上述代码是咱们复制的之前的代码,随后会进行修改,莫慌莫慌,通过资料与老师的讲解,我们可以知道这个函数用于初始化I2C接口为主机模式,ESP32为I2C主机,温湿度传感器为I2C从机。因为这个函数会被其它文件调用,所以需要把static关键字去掉

我们看课程视频了解,这里面用到了几个宏定义,复制i2c_simple_main.c文件中第25~31行代码,放到myi2c.h文件中,我把这几个宏定义放到下面(相当于没有修改的),接下来会说到修正的

#define I2C_MASTER_SCL_IO           CONFIG_I2C_MASTER_SCL  //定义SCL和SDA的引脚需要    
#define I2C_MASTER_SDA_IO           CONFIG_I2C_MASTER_SDA      
#define I2C_MASTER_NUM              0                     //定义I2C的序号,ESP32-C3芯片内部只有一个I2C外设,这里定义成0就可以了    
#define I2C_MASTER_FREQ_HZ          400000     //定义I2C通信速率               
#define I2C_MASTER_TX_BUF_DISABLE   0          //定义发送缓存和接收缓存大小,主机模式下,这两个值设置为0,从机模式下才需要用到这个值                
#define I2C_MASTER_RX_BUF_DISABLE   0                         
#define I2C_MASTER_TIMEOUT_MS       1000

修正过后的宏定义如下,

#define I2C_MASTER_SCL_IO           GPIO_NUM_1      
#define I2C_MASTER_SDA_IO           GPIO_NUM_0     
#define I2C_MASTER_NUM              0               
#define I2C_MASTER_FREQ_HZ          400000         
#define I2C_MASTER_TX_BUF_DISABLE   0               
#define I2C_MASTER_RX_BUF_DISABLE   0             
#define I2C_MASTER_TIMEOUT_MS       1000

上面的代码使我们修正过后的宏定义,依据条件是,第1、2行代码定义SCL和SDA的引脚需要,我们需要按照开发板原理图修改;第3行定义I2C的序号,ESP32-C3芯片内部只有一个I2C外设,这里定义成0就可以了;第4行定义I2C通信速率,一般情况下,I2C器件的通信速率有3种,100k、400k、1M,速度越大,通信越快,I2C传感器芯片手册上会提到支持的最大速率,温湿度传感器GXHTC3的I2C通信速率可以达到1M,这里写的是400k,不需要修改;第5、6行定义发送缓存和接收缓存大小,主机模式下,这两个值设置为0,从机模式下才需要用到这个值

接着,我们在myi2c.h文件中,声明一下刚才在myi2c.c文件中定义的函数,放到define宏定义的下面

extern esp_err_t i2c_master_init(void);

由于这里用到了esp_err_t,所以需要在前面包含esp_err.h文件

#include "esp_err.h"

接着,我们打开myi2c.c文件,这个文件中用到了i2c函数,需要在文件中添加头文件i2c.h,不然无法正常运行,(我的理解为调用这个头文件里的函数)

#include "driver/i2c.h"

到这一步,我们的基本代码就已经全部修改完了,这是完整的代码,

#include "myi2c.h"
#include "driver/i2c.h"esp_err_t i2c_master_init(void)
{int i2c_master_port = I2C_MASTER_NUM;i2c_config_t conf = {.mode = I2C_MODE_MASTER,.sda_io_num = I2C_MASTER_SDA_IO,.scl_io_num = I2C_MASTER_SCL_IO,.sda_pullup_en = GPIO_PULLUP_ENABLE,.scl_pullup_en = GPIO_PULLUP_ENABLE,.master.clk_speed = I2C_MASTER_FREQ_HZ,};i2c_param_config(i2c_master_port, &conf);return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}

跟随老师的步伐,我们接下来在app_main函数中,调用i2c_master_init初始化函数,复制i2c_simple_main.c文件中第85~86行代码,放到main.c文件中的app_main函数中,如下代码所示

void app_main(void)
{ESP_ERROR_CHECK(i2c_master_init()); //调用初始化函数,并且检测是否初始化成功ESP_LOGI(TAG, "I2C initialized successfully"); //相当于是一个printf函数,第1个参数TAG是一个字符串指针变量,到时候会输出到串口,这个TAG需要在前面定义
}

紧接着,复制i2c_simple_main.c文件中第23行代码,放到include代码下面

static const char *TAG = "i2c-simple-example";

然后我们把TAG的内容改成main,以后在终端窗口看到main,就表示这个输出来自于main.c文件,改完后如下所示

static const char *TAG = "main";

接下来我们给main.c添加头文件,文件中用到了ESP_ERROR_CHECK和ESP_LOGI,需要添加esp_log.h头文件

#include "esp_log.h"

到这步,main的主要函数就是如下

#include <stdio.h>
#include "myi2c.h"
#include "gxhtc3.h"
#include "esp_log.h"static const char *TAG = "main";void app_main(void)
{ESP_ERROR_CHECK(i2c_master_init());ESP_LOGI(TAG, "I2C initialized successfully");
}

到这里呢,我们的温湿传感器上半部分结束,下半部分我将继续学习,主播学的有点头大!

http://www.yayakq.cn/news/952853/

相关文章:

  • 怎样看一个网站是哪个公司做的网站开发项目风险
  • 邢台企业网站建设公司前山网站建设
  • 沈阳沈阳建设工程信息网站网站ftp根目录
  • 茂名建设公司网站网站后台管理怎么做
  • 西安网站开发公司浙江新手网络推广
  • 网站源码安装安装wordpress的目录改变了
  • wordpress老站开启多站点asp.net mvc 企业网站
  • 网站的建设费用预算哪个网站做新中式
  • 快速搭建网站的工具有哪些哈尔滨市工程建设招投标网
  • 汽车制造行业网站模板镇江网页设计培训
  • 网站logo做黑页影楼网站建设
  • 作网站流程wordpress mu 安装
  • 佛山营销网站建设联系方式天美大象果冻星空的制作方法
  • 关于网站建设需要了解什么东西济南新风向网站建设
  • 网站软件开发百度推广二级代理商
  • 网站设计如何做动漫设计专业属于什么大类
  • 唐山哪个公司可以制作网站个人开发小程序多少钱
  • 网站域名服务器查询怎么做网站首页关键词
  • asp 网站运行wordpress footer设置
  • 泾川县住房和城乡建设局网站英语作文网站
  • 国外做多媒体展览的网站松江网站设计
  • 站牛网建设一个网站首先需要什么
  • 集团网站品牌建设特点广州网站建设商家
  • 水印网站和县网站定制
  • 那些外贸网站个人可以做比较好的平面设计网站
  • 做豆腐交流经验的网站晋城做网站公司
  • 南昌专门做网站的人淘宝客网站程序购米
  • 北京网站建设著名公司手机如何做api网站
  • 制作网站的花多少钱星空无限传媒在线观看电视剧赘婿
  • 辽宁建设工程信息网官网新网站如何进入wordpress文章内容宽度