开发板型号:ESP32 WROOM 32
配置流程引入必要的库:
#include <WiFi.h>: 用于管理 ESP32 的 WiFi 连接。
#include <HTTPClient.h>: 用于发起 HTTP 请求。
#include <ArduinoJson.h>: 用于处理 JSON 数据。
定义常量:
ssid 和 password: WiFi 网络的 SSID 和密码。
apiKey: API 密钥,用来验证身份。
inputText: 发送给 API 的初始文本。
apiUrl: API 的 URL 地址。
函数定义:getGPTAnswer(String inputText): 这个函数负责与 API 通信。它创建了一个HTTPClient对象,设置了超时时间,并开始与 API URL 建立连接。然后,它构造了一个 JSON 格式的数据作为请求体,包含了模型信息和用户输入的文本。接着,它发送 POST 请求,并根据返回的状态码判断是否成功。如果成功(状态码为 200),则解析 JSON 响应,并提取出回答文本;如果不成功,则打 ...
本文参考 Echarts 官方使用手册快速上手 - 使用手册 - Apache ECharts
第一步:下载必要的 JS 文件在 Echarts 下载界面下载 - Apache ECharts可以找到多种下载方式,这里推荐两种下方式:
从 github 仓库直接 clone,仓库地址echarts/dist at 5.5.1 · apache/echarts (github.com)
从 npm 安装,在控制台输入指令npm install echarts
注意:下载完成后打开 dist 文件夹,将 echarts.js 文件保存到网页目录下
第二步:在网页目录下创建初始页面在网页目录下创建初始页面index.html,此时网页目录下应该存在两个文件,分别是index.html和echarts.js在 index.html 文件中输入配置代码即可,这里提供官网的配置代码
123456789101112131415161718192021222324252627282930313233343536373839404142<!DOCTYPE html>& ...
说明:使用开发板为Nexys4 DDR,仅供交流学习使用,由于时间仓促,可能存在结构不清晰、逻辑不严密等问题,欢迎邮件联系交流。
主体结构代码1000Hz 时钟分频模块介绍:
该模块将原本的 100MHz 的时钟频率分频为 1000Hz,并传出给状态转换模块使用。
源码:
123456789101112131415module cp_1000hz( input CP, output reg CLK = 0); reg [15:0] state; always @(posedge CP) begin if (state < 49999) state <= state + 1'b1; else begin CLK <= ~CLK; state <= 0; end endendmodule
1Hz 时钟分频模块介绍:
该模块将原本的 100MHz 的时钟频率分频为 1Hz,并传出给状态转换模块使用。
源码:
123456789101112131415module cp_1hz(input CP,ou ...
感觉 exr 文件不能很直观地看到各个通道的数据,多有不便,于是借助 python 可以对 exr 文件进行通道检测与数据直方图统计
通道检测123456789101112131415import OpenEXRimport Imathimport numpy as np# 定义文件路径file_path = 'D:\work path'# 读取.exr文件exr_file = OpenEXR.InputFile(file_path)# 获取图像的通道和数据类型信息header = exr_file.header()channel_info = header['channels']print("可用通道:", list(channel_info.keys()))
数据统计123456789101112131415161718192021222324252627import OpenEXRimport Imathimport numpy as npimport matplotlib.pyplot as plt# 定义文件路径f ...
环境安装本地环境方法 1:VS code + LaTex Workshop提前安装好 TeX Live 环境,在 VS code 中安装 LaTex Workshop 插件,并在 VS code 设置界面打开 settings.json,加入代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113"latex-workshop.latex.recipes": [ { "name": "XeLaTeX", "tools": ["xelatex"] } ...
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748Markdown 目录:[TOC]Markdown 标题:# 这是 H1## 这是 H2### 这是 H3Markdown 列表:- 列表项目1. 列表项目*斜体*或*斜体***粗体****_加粗斜体_**~~删除线~~Markdown 插入链接:[链接文字](链接网址 "标题")Markdown 插入图片:![alt text](/path/to/img.jpg "Title")Markdown 插入代码块:`python #!/usr/bin/python3 print("Hello, World!"); `Markdown 引用:> 引用内容## Markdown 分割线:Markdown 换行:<br>Markdown 段首缩进:  or   表示一个半角的空格&em ...
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import osimport cv2# 视频文件夹路径folder_path = 'D:/Users/video'# 获取文件夹中的所有视频文件video_files = [os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.lower().endswith(('.mp4', '.avi', '.mkv'))]# 创建一个视频播放窗口cv2.namedWindow('Video Player', cv2.WINDOW_NORMAL)# 初始化视频索引current_index = 0total_videos = len(video_files)while True: # ...
1234567891011121314151617181920212223242526272829303132333435363738import osimport cv2# 图片文件夹路径folder_path = 'D:/Users/image'# 获取文件夹中的所有图片文件image_files = [os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.lower().endswith(('.png', '.jpg', '.jpeg'))]# 创建一个图片显示窗口cv2.namedWindow('Image Viewer', cv2.WINDOW_NORMAL)# 初始化图片索引current_index = 0total_images = len(image_files)while True: # 读取当前索引处的图片 image_path ...
这里会贴一些我很喜欢的诗歌:D睡前读一首小诗,然后做个好梦.
万一顾城我害怕 期待也害怕 巨大的幸福我喜欢每天收一粒稻谷在万字中走一的道路
镜中张枣只要想起一生中后悔的事梅花便落了下来比如看她游泳到河的另一岸比如登上一株松木梯子危险的事固然美丽不如看她骑马归来面颊温暖羞惭。低下头,回答着皇帝一面镜子永远等候她让她坐到镜中常坐的地方望着窗外,只要想起一生中后悔的事梅花便落满了南山
你还在我身旁戴畅瀑布的水逆流而上,蒲公英的种子从远处飘回,聚成伞的模样,太阳从西方升起,落向东方。
子弹退回枪膛,运动员回到起跑线上,我交回录取通知书,忘了十年寒窗。
厨房里飘来饭菜的香,你把我的卷子签好名字,关掉电视,帮我把书包背上。
你还在我身旁。
As you see,this is my first passage.