飞书文档https://x509p6c8to.feishu.cn/docx/N45Pd0tA1oaC4CxUWZjc8Ekyn0b

屏幕应用场景

课程使用的SSD1306是一款128*64像素可以使用IIC驱动的OLED屏幕。

SSD1306 Oled显示模块共有4个引脚,标记为GND, VCC, SCL和SDA。这种Oled显示模块可以使用3.3V到5V轻松上电。

u8g2是什么?

u8g2是一套图形库工具库,内部是提供了多种屏幕的驱动方案,如SSD1306_128X64、UC1638_192X96等,使用u8g2我们可以快速实现屏幕应用的开发。

u8g2开发流程

简单显示:

首先先安装对应的u8g2库,直接去PIO Home中搜导入就ok

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>#define SCL 22
#define SDA 23// IIC version 方向 时钟信号 数据信号 复位数据
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);void setup(void)
{u8g2.begin();
}void loop(void)
{u8g2.clearBuffer();u8g2.setFont(u8g2_font_ncenB14_tr);u8g2.drawStr(0, 24, "Hello World!");u8g2.sendBuffer();delay(1000);u8g2.clearBuffer();u8g2.setFont(u8g2_font_ncenB14_tr);u8g2.drawStr(0, 24, "embeded!");u8g2.sendBuffer();delay(1000);
}

显示时间:

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#include <WiFi.h>
#include <Ticker.h> //调用Ticker.h库#define NTP1 "ntp1.aliyun.com"
#define NTP2 "ntp2.aliyun.com"
#define NTP3 "ntp3.aliyun.com"#define STASSID "leo"
#define STAPSK "123456789"const char *ssid = STASSID;
const char *password = STAPSK;#define SCL 22
#define SDA 23Ticker timer1;// IIC version 方向 时钟信号 数据信号 复位数据
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);const String WDAY_NAMES[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; // 星期void printLocalTime()
{struct tm timeInfo; // 声明一个结构体char buff[16];if (!getLocalTime(&timeInfo)){Serial.println("Failed to obtain time");u8g2.setCursor(0, 9);u8g2.print("NTP time failure");return;}Serial.println(&timeInfo, "%F %T %a"); // 格式化输出,串口显示String date = WDAY_NAMES[timeInfo.tm_wday];u8g2.clearBuffer();sprintf_P(buff, PSTR("%04d-%02d-%02d %s"), timeInfo.tm_year + 1900, timeInfo.tm_mon + 1, timeInfo.tm_mday, WDAY_NAMES[timeInfo.tm_wday].c_str());u8g2.setFont(u8g2_font_wqy14_t_gb2312a);u8g2.setCursor(9, 20); // 年份居中显示u8g2.println(buff);    // 显示出年份// Serial.println(buff);sprintf_P(buff, PSTR("%02d:%02d:%02d"), timeInfo.tm_hour, timeInfo.tm_min, timeInfo.tm_sec); // 时间u8g2.setFont(u8g2_font_fur17_tn);u8g2.drawStr(19, 45, buff);u8g2.sendBuffer();
}void setup(void)
{Serial.begin(9600);u8g2.begin();WiFi.mode(WIFI_STA); // 设置ESP32工作模式为无线终端模式WiFi.begin(ssid, password);// Wait for connectionwhile (WiFi.status() != WL_CONNECTED){delay(1000);Serial.print("wait connect to wifi...\n");}Serial.println(ssid);Serial.print("IP address: ");Serial.println(WiFi.localIP());configTime(8 * 3600, 0, NTP1, NTP2, NTP3);u8g2.setPowerSave(0); // 关省电模式timer1.attach_ms(1000,printLocalTime);
}void loop(void)
{}

中文字符显示:

下载库,解压后放到本地电脑路径:

C:\Users\kemp\.platformio\packages\framework-arduinoespressif32\libraries

在VSCode的工程配置文件中,添加该库

"C:/Users/kemp/.platformio/packages/framework-arduinoespressif32/libraries/u8g2_wqy/src",
#include <Arduino.h>
#include <U8g2lib.h>
#include <u8g2_wqy.h>#define SCL 22
#define SDA 23U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/SCL, /* data=*/SDA, /* reset=*/U8X8_PIN_NONE);void setup(void)
{u8g2.begin();u8g2.enableUTF8Print();
}
void loop(void)
{u8g2.setFont(u8g2_font_wqy12_t_gb2312); // 此处建议用gb2312字库,完整支持所有中文编码u8g2.firstPage();do{u8g2.setCursor(0, 20);u8g2.print("小智学长");u8g2.setCursor(0, 40);u8g2.print("你好啊");} while (u8g2.nextPage());delay(1000);
}

注意:如果使用vscode写代码,要把main.cpp文件用记事本打开另存为utf8格式,否则会显示乱码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85229.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85229.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85229.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建自己dify钉钉群聊机器人

华为云FlexusDeepSeek征文&#xff5c;体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建自己dify钉钉群聊机器人 什么是华为云ModelArts 华为云ModelArts ModelArts是华为云提供的全流程AI开发平台&#xff0c;覆盖从数据准备到模型部署的全生命周期管理&#xff0c;帮…

【Pytorch】(1)Pytorch环境安装-①创建虚拟环境

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、创建Pytorch的虚拟环境 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、Anaconda环境基础操作 1.1 启动Anaconda Prompt …

如何自定义WordPress登录页面,提升用户体验和安全性

WordPress是目前最受欢迎的网站搭建平台之一&#xff0c;无论是个人博客、企业网站&#xff0c;还是电商平台&#xff0c;很多人都选择用它来搭建自己的网站。不过&#xff0c;很多WordPress用户会发现默认的登录页面相对普通&#xff0c;无法体现自己网站的特色。其实&#xf…

Coze扣子 - AI生成数字人口播视频

一、数字人介绍 数字人&#xff08;Digital Human&#xff09;是指利⽤先进的数字技术和⼈⼯智能创建的虚拟人 类形象&#xff0c;能够模拟⼈类的外貌、⾏为和情感。数字⼈不仅可以在视觉上表 现出真实的⼈类特征&#xff0c;还可以通过⾃然语⾔处理与⽤户进⾏互动。 Coze通过全…

【请关注】真实案例pg及kong安装部署

# 前提需要安装好nfs KONG_NAMESPACE="kong-api" PG_NAMESPACE="pg-ha" HARBOR_IP="harbor.rancher.com" 一、安装pg高可用####################################################################################### kubectl creat…

SSRF7 SSRF漏洞的检测方式

我们可以进入bp利用bp模块collaborator&#xff0c;进行检测&#xff1a; 我们点击复制到剪切板&#xff1a; 然后再到目标网站进行构造URL&#xff1a; http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?urlmvluewtgs390alohzqjakhu2qtwkkc81.oastify.com 然…

C++ 函数的使用

C中的函数是实现代码复用和模块化的基本单元。下面从定义、调用、参数传递、常见样式、声明和分文件编写等方面进行介绍。 1. 函数定义 函数定义包括返回类型、函数名、参数列表和函数体&#xff1a; 返回类型 函数名(参数列表) {// 函数体return 返回值; // 如果返回类型不是…

一文讲清辐射传输模型

一、为什么需要进行辐射传输反演&#xff1f; 遥感影像中&#xff0c;我们看到的是从地表和大气混合后到达传感器的总辐射信号。这个信号既包含了地物反射&#xff0c;也包含了大气分子和气溶胶的散射吸收、以及地表自身或大气的热发射。若要从中定量获得植被生理参数、水体理…

视频编码怎么选?H.264、H.265、VP9、AV1全解析

你有没有遇到过这样的情况&#xff1a;下载了一个高清电影&#xff0c;却发现播放器打不开&#xff1b;或者上传视频到网站时提示“格式不支持”&#xff1f;其实&#xff0c;这背后和视频编码格式密切相关。 那么问题来了&#xff1a;视频编码格式哪个好&#xff1f; 今天简鹿…

单例模式:全局唯一实例的设计艺术

引言&#xff1a;为什么需要单例模式 在软件开发中&#xff0c;某些对象只需要一个全局实例&#xff1a; 数据库连接池配置管理器日志记录器线程池缓存系统 使用new关键字多次创建这些对象会导致&#xff1a; #mermaid-svg-TyfdXbNvcmqwnA6C {font-family:"trebuchet m…

性能优化 - 案例篇:11种优化接口性能的通用方案

文章目录 Pre1. 加索引&#xff1a;最低成本&#xff0c;最大收益常见问题&#xff1a;工具命令&#xff1a;建议&#xff1a; 2. SQL 优化&#xff1a;比加索引再进阶一步常见 5 类问题&#xff1a;实用建议&#xff1a; 3. 远程调用&#xff1a;从串行改并行&#xff0c;性能…

Kafka - 并发消费拉取数据过少故障分析

文章目录 背景与问题描述原理与原因分析参数优化思路示例配置验证与监控实践注意事项与风险总结 背景与问题描述 场景描述 使用 Spring Boot Spring Kafka&#xff0c;注解 KafkaListener(topics..., id..., ...)&#xff0c;批量监听&#xff08;方法签名为 public void doHa…

开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用

文章的目的为了记录使用Arkts 进行Harmony app 开发学习的经历。本职为嵌入式软件开发&#xff0c;公司安排开发app&#xff0c;临时学习&#xff0c;完成app的开发。开发流程和要点有些记忆模糊&#xff0c;赶紧记录&#xff0c;防止忘记。 相关链接&#xff1a; 开源 Arkts …

Qt基础相关

模态对话框和非模态对话框 在一个页面进行交互时弹出的一个新页面&#xff0c;新页面不堵塞旧页面的交互&#xff0c;这就是非模态对话框。 模态对话框 模态对话框就是当该对话框弹出后会阻塞其他窗口的响应事件&#xff0c;必须先关闭该对话框&#xff0c;其他窗口才会继续…

《汇编语言:基于X86处理器》第2章 x86处理器架构

本章重点是与 x86 汇编语言相关的底层硬件。有说法认为&#xff0c;汇编语言是直接与机器交流的理想软件工具。如果是真的&#xff0c;那么汇编程序员就必须非常熟悉处理器的内部结构与功能。本章将讨论指令执行时处理器内部发生的一些基本操作&#xff0c;以及操作系统如何加载…

最小生成树算法的解题思路与 C++ 算法应用

一、最小生成树算法针对问题类型及概述 先来简要陈述一下树的概念&#xff1a;一个由 N N N 个点和 N − 1 N-1 N−1 条边组成的无向连通图。由此&#xff0c;我们可以得知生成树算法的概念&#xff1a;在一个 N N N 个点的图中找出一个由 N − 1 N-1 N−1 条边组成的树。…

feign.FeignException$NotFound: [404 ] during [POST] to [http://ti/ti/v1/i/se

feign.FeignException$NotFound: [404 ] during [POST] to [http://ti/ti/v1/i/send 原因&#xff1a;多个地方注册 FeignClient(name “ti”, path “/ti/v1/i/send/repeat”) 解决&#xff1a;删除一个即可

Mac m1 通过docker镜像安装kafka

kafka依赖zookeeper&#xff0c;因此需要使用docker同时安装zookeeper和kafka。 macOS的docker在容器和宿主之间无法通过ip直接通信&#xff0c;因此在安装的时候需要特殊注意与ip相关的设置。当容器需要访问宿主ip时&#xff0c;需要使用docker.for.mac.host.internal或者host…

01初始uni-app+tabBar+首页

初始uni-apptabBar首页 1. uni-app1.1 新建uni-app项目1.2 目录结构1.3 把项目配置运行到微信开发者工具 2. tabBar3.1 首页3.1 配置网络请求3.2 轮播图区域3.3 分类导航区域3.4 楼层区域 1. uni-app ​ uni-app 是使用 Vue.js 开发前端应用的框架。开发者编写一套代码&#x…

微信小程序,微信授权手机号码

uniapp中index.vue: <template><view class"content"><button open-type"getPhoneNumber" getphonenumber"getPhoneNumber"type"primary">授权手机号登录 </button></view></template><scrip…