首页 > 其他分享 >树莓派pico rp2040 使用rust 在ssd1306上显示中文信息

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

时间:2024-09-28 20:35:54浏览次数:1  
标签:u8g2 树莓 embedded 中文信息 fonts pico font display ssd1306

在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 loop
        let _ = 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 sec
        timer.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

标签:u8g2,树莓,embedded,中文信息,fonts,pico,font,display,ssd1306
From: https://www.cnblogs.com/sn-dnv-aps/p/18438357

相关文章

  • 树莓派网络问题
    树莓派网络问题最开始怀疑是不是因为被墙了所以访问不了那些下载源,试图在linux系统上使用clashFQ下载包得了,结果clash也安装不上去。然后试图ping了一下几个网站,也ping不了pingwww.bilibili.com没有反应但是ping117.23.60.12也就是ping了一下B站的ip地址却有返回值。说明......
  • 树莓派5B -零基础应用开发系列(第七期)
    树莓派5B-零基础应用开发(第七期)基础知识点(适用于零基础想学习Linux操作系统的的小白新手)线程概述线程是参与系统调度的最小单位。它被包含在进程之中,是进程中的实际运行单位。一个线程指的是进程中一个单一顺序的控制流(或者说是执行路线、执行流),一个进程中可以创建多......
  • 树莓派5上部署文本转语音TTS(使用Coqui TTS模型)
    前言本文主要针对2023年发布的树莓派新产品树莓派5的开发使用,为了实现离线的文本(中文)转语音功能,本文使用了TTS技术,本文模型使用的是Coqui的中文模型。一、环境需要树莓派5(最好8GB内存)RspberryPI系统Conda环境(可自行搜索,也可以查看我专栏下的其他文章)在本文下使用的......
  • 树莓派5B -零基础应用开发系列(第二期)
    树莓派5B-零基础应用开发(第二期)基础知识篇(适用于零基础想学习Linux操作系统的的小白新手)核心思想Linux系统下,一切皆文件,也包括各种硬件设备(一定要有这个概念)。系统调用系统调用(systemcall)其实是Linux内核提供给应用层的应用编程接口(API),是Linux应用层进入内核......
  • 树莓派5B -零基础应用开发系列
    树莓派5B-零基础应用开发(第一期)一、树莓派的开始1.准备工作①建议在树莓派官网下载相对应的镜像文件,树莓派镜像下载,网站如下所示:https://www.raspberrypi.org/downloads/raspberry-pi-os/②把SD卡格式化,使用SDFormatter进行开始格式化操作。③把在官网下载......
  • 通过jlink连接树莓派4b搭建gdb调试环境
    参考资料jlink使用的是博光微的jlinkv9树莓派使用的是4bjlink与树莓派链接按照表中的内容进行链接,注意链接过程要小心仔细,否则后续排查起来十分麻烦下载openocd由于我是在linux环境下,所以省去了jlink的驱动安装,直接先下载openocdsudoaptinstallopenocd注意不要去......
  • VR开发日志-如何用VR头盔看到自己开发的VR内容?如何用Pico头盔直连UE开发的内容预览?
    大家好,我是JK,今天和大家分享关于如何用VR头盔看到自己开发的VR内容?本次使用的方法是用Pico头盔直连UE开发的内容预览。大家可以跟着步骤来做,具体操作步骤如下:第一步:到pico官网下载PicoDeveloperCerter,链接:PICO开发者平台(picoxr.com)第二步:安装好PicoDeveloper......
  • 以腾讯云为公网跳板实现树莓派内网穿透
    关键词:内网穿透,frp,ssh,腾讯云,树莓派情况说明不是所有的情况你的ip都可以固定,之前在室外搭的服务器,买的4G卡配路由,但是公网ip无法固定,一般情况下访问只能通过teamviewer或者向日葵等远程登录软件。部署流程确保自己需要内网穿透的设备网络通畅找到一个稳定具有固定公网ip的服务器(VPS......
  • 基于MicroPython的Raspberry Pi Pico控制LED灯闪烁的设计方案
       以下是一个基于MicroPython的RaspberryPiPico控制LED灯闪烁的设计方案:一、硬件准备:1. RaspberryPiPico开发板2. 一个LED灯3. 一个220Ω4. 杜邦线若干。5.3.3V直流电源二、硬件连接:1.将Pico开发板的VSYS连接到3.3V直流电源的正极,开发板的GND引脚连......
  • 树莓派智能语音助手实现音乐播放
    树莓派语音助手从诞生的第一天开始,我就想着让它能像小爱音箱一样,可以语音控制播放音乐。经过这些日子的倒腾,今天终于实现了。接下里,和大家分享下我的实现方法:首先音乐播放模块用的是我在上一篇博文写的《用sounddevice实现连续的音乐曲库播放》,然后语义解析部分依旧用的是RAS......