树莓派pico rp2040 使用rust 在ssd1306上显示中文信息

news/2024/9/28 20:33:42

在rp2040上用DHT22 + ssd1306显示温度信息,

 用 embedded-graphics库和ssd1306库来实现。但实现的效果不是很理想,无法在ssd1306屏幕上显示中文。

 为了解决这个问题,在github和crates.io上面找了几天。解决方法还是找到了,利用  u8g2-font这个库实现。。。

 

实现的办法如下:

Cargo.toml的[dependencies]节点下添加如下内容

embedded-hal = { version = "1.0.0" } 
embedded-graphics = "0.8.1"
dht-sensor = "0.2.1"
ssd1306 = "0.8.1"
u8g2-fonts = { version = "0.4.0", features = ["embedded_graphics_textstyle"] }

 

src/main.rs文件头中添加引用

use embedded_graphics::{pixelcolor::BinaryColor,prelude::*,primitives::{Line, PrimitiveStyle},text::{Baseline, Text},
};
use u8g2_fonts::U8g2TextStyle;

src/main.rs:: fn main()  里面添加定义

  ...此处省略了很多代码// Create a text style for drawing the font:
此处的u8g2_font_wqy12_t_gb2312是输出中文的重点let character_style =U8g2TextStyle::new(u8g2_fonts::fonts::u8g2_font_wqy12_t_gb2312, BinaryColor::On);fn main()  -> {.... 此处省略了很多代码
loop {// Empty the display:// Draw 3 lines of text://reset before looplet _ = display.clear(BinaryColor::Off);write!(&mut line2, "湿度: {}%", humi).unwrap();Text::with_baseline(line2.as_str(),Point::new(32, 38),character_style.clone(),Baseline::Top,).draw(&mut display).unwrap();... 此处省略了很多代码display.flush().unwrap();// delay for 1 sec//per loop is 1 sectimer.delay_ms(1000);}
}

 

最终实现效果如图

 

本项目开源地址: https://github.com/sndnvaps/rp2040-display

u8g2-font库开源地址,主用提供中文字库:https://github.com/Finomnis/u8g2-fonts

目前支持的中文字库 https://github.com/olikraus/u8g2/wiki/fntgrpwqy ,https://github.com/olikraus/u8g2/wiki/fntgrpbb

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

typeScript 的第一步---安装

Node.js/浏览器,只认识JS代码,不认识TS代码,需要将TS代码转化为JS代码,然后才能运行。 安装命令:npm i -g typescript 或者 yarn global add typescript 注意:Mac电脑安装全局包时,需要通知添加sudo获取权限。sudo npm i -g typescript 验证安装是否成功:tsc -v 查…

为什么用 AWS CLI?因为我懒得点鼠标!

在这篇博客中,我们一起深入探索 AWS CLI 的世界,从零开始,逐步构建在云端的家园。将介绍 AWS CLI 的基本功能和使用场景,如何创建 IAM 用户、VPC、子网、安全组、EC2 实例等,甚至还会搭建一个应用负载均衡器(ALB)。无论你是初学者还是有一定基础的用户,都能通过本指南掌…

妙用编辑器:使用Notepad--正则表达式从命令结果报文快速生成新命令

应用场景 日常生活中有些维护场景,比如检查设备状态,执行查询命令后,得到精简结果报文,如果要更深入的检查状态,可能还要执行其他命令,逐个对象进行查询,这里涉及到快速从报文生成查询指令的功能。 比如有如下一个从LST 命令查询出来的报文,需要快速的生成DSP命令,逐个…

JavaScript深拷贝与浅拷贝

由于对象采用的是引用赋值。所以直接用“=”,修改属性的时候也会将原来的变量改变掉。 因此,就有了浅拷贝与深拷贝 用{...obj}和object.assign表示浅拷贝,其只拷贝外围对象的一层,而不会拷贝多层。 方法二:使用Object.assign 深拷贝的实现 其一是通过递归实现拷贝。其二lo…

bs4解析并提取人民网新闻标题数据

1. 目标url:http://www.people.com.cn/ 2. 查找标题信息所在标签:标题的文本信息在<a>标签中,且<a>标签有target属性,属性值为"_blank"。<a>标签有父辈标签<div>和<h3>。 当需要根据元素的层级关系、属性组合等复杂条件定位时;文…

volatile关键字最全原理剖析

介绍 volatile是轻量级的同步机制,volatile可以用来解决可见性和有序性问题,但不保证原子性。 volatile的作用:保证了不同线程对共享变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 禁止进行指令重排序。底层原理 内存屏障 vol…

2024.9.28 代码源模拟赛

省流:45+20+5+0=70省流:\(45+20+5+0=70\) 简称:唐诗在此膜拜 \(klz\) \(Heldivis\) \(Sorato\) \(czl\) \(Ech0\_7\) yxans lihe_qwq 大佬 T1 先看的 T1 ,想了一个拓排(其实是看错题了),然后过了第一个样例,然后咋调都过不去,就去码暴力了。 过了大概 10min 发现看错题…

关于虚树

关于譃漱关于虚树 瞎扯 某些树上问题,给了巨多节点,而实际上它们之中只有小部分能做出贡献,其余都是些水军,为杀尽 OIers的脑细胞 做出努力 考虑重新种一棵树,浓缩信息,简化节点个数,于是产生了 虚树。 大概是长这个样子: 红色结点是我们选择的关键点,即能够做出贡献的…