Giter Site home page Giter Site logo

rt-u8g2's Introduction

这个仓库是我以前移植 u8g2 到 RT-Thread 的版本,现在对应的移植已经 upstream 到 u8g2 的官方仓库了,所以可以直接用官方仓库了。 - 2021.09.30

rt-u8g2

0、介绍

u8g2 原先是 Arduino 平台上的一个单色屏驱动,现在移植到了 rt-thread,可以满足各种各种各样的需求。

游戏开发 (examples/games/space_trash)

用户界面 (examples/page_buffer/icon_menu)

绘图 (examples/page_buffer/graphic_test)

1、U8G2 特点

1.1 支持屏幕多,移植方便

使用 u8g2 的好处在于它支持近 200 种单色屏,同样的代码可以直接运行在不同的屏幕上,比如前面的游戏可以在各种屏幕上运行:

经典 128x64

OLED SSD1306 I2C

在这里可以看到所有支持的屏幕:

https://github.com/olikraus/u8g2/wiki/gallery

1.2 支持字体多

中文

韩文

日文

梵文

1.3 绘图函数多

支持各种绘图函数,而且自带各种 icon

总结一下 u8g2 的特点:

  • 支持近 200 种单色屏,移植方便
  • 支持各种绘图函数、图像与非操作,自带用户按键检测
  • 支持 unicode 和 utf8,自带 100 多种字体和 100 多个 icon

2、项目说明

2.1 目录结构

说明:目录结构

名称 说明
docs 文档目录
examples 例子目录
src 源代码目录
port 针对特定平台的移植代码目录

2.2 许可证

  • The U8g2lib code (http://code.google.com/p/u8g2/) is licensed under the terms of the new-bsd license (two-clause bsd license). See also:

      http://www.opensource.org/licenses/bsd-license.php  
    
  • The repository and optionally the releases contain icons, which are derived from the WPZOOM Developer Icon Set. WPZOOM Developer Icon Set by WPZOOM is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

      http://www.wpzoom.com/wpzoom/new-freebie-wpzoom-developer-icon-set-154-free-icons/ 
    
  • Fonts are licensed under different conditions.for detailed information on the licensing conditions for each font.

      https://github.com/olikraus/u8g2/wiki/fntgrp
    

Check full LICENCE here.

2.3 项目依赖

说明:如果使用 I2C 液晶屏需要开启 I2C,GPIO 模拟 I2C 。

  • Using I2C device drivers
  • Use GPIO to simulate I2C

说明:如果使用 SPI 液晶屏需要开启 SPI 。

  • Using SPI Bus/Device device drivers

3、如何使用 U8G2

使用 u8g2 package 需要在 RT-Thread 的包管理器中选择它,具体路径如下:

RT-Thread online packages
	peripheral libraries and drivers --->
    	[*] U8G2: a u8g2 package for rt-thread
            [*] Use hardware spi                                     
              (spi1)  spi bus name (NEW)              
              (spi10) spi device name (NEW)     
            [*] Use hardware i2c          
              (i2c2)  i2c device name
            U8G2 Examples  --->

然后让 RT-Thread 的包管理器自动更新,或者使用 pkgs --update 命令更新包到 BSP 中。

一共有50个例程,可以在源码 docs 目录下看到预览图。默认的例程都是用的软件I2C,如果觉得速度比较慢可以使用硬件I2C。

4、注意事项

  • 默测试认使用 STM32F103,如果要使用到其他平台,请参照 移植说明,不过只要用的 RT-Thread 应当不需要额外的移植。
  • 请使用 stm32 目录下的 bsp
  • 编译需要开启 -std=c99
  • 如果编译发现 flash 不够大,可以打开优化选项 -O3 或者参照 这里 去掉多余的字库
  • 完整的 API 手册可以访问这个 链接
  • 其他 常见问题 FAQ

5、感谢

6、联系方式

rt-u8g2's People

Contributors

seventh-yuan avatar wangchaohz avatar wuhanstudio avatar z14git avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

rt-u8g2's Issues

使用中文显示不全

使用中文显示历程 “你好世界”正常显示,测试其他无法全部显示,比如“音乐测试”使用u8g2_font_unifont_t_chinese2只能显示“音”,使用u8g2_font_unifont_t_chinese3显示“音乐”,测试显示不出来,请问是因为字库不全的原因么?

关于使用u8g2之后无法擦除flash问题

您好,我使用了硬件SPI的u8g2,功能正常,后来调试OTA时发现片内flash擦写失败,提示:[E/FAL] (fal_partition_erase:510) Partition erase error! Flash device(onchip_flash) erase error!
去掉u8g2线程初始化就正常擦写,后来新建工程只添加硬件SPI 和FAL,还是同样的状况,使用的是ST官方的L496ZG开发板,rtt4.0.2,最新软件包
论坛提问在这https://club.rt-thread.org/ask/question/424969.html
希望您有时间的话帮忙看一下,可能是哪里的问题,十分感谢

GDE029A1墨水屏 花屏

你好,我使用的佳显GDE029A1墨水屏,芯片是IL3820的,但是根据样例写了个Demo,显示屏却有花屏的现象,表现为屏幕下半部分有很多横线,斑状的黑块。不知道这个怎么传照片,只好这么形容了。
代码如下:

#include <rthw.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <u8g2_port.h>

#define OLED_SPI_PIN_CLK                   21  // PB16
#define OLED_SPI_PIN_MOSI                  22  // PB17
#define OLED_SPI_PIN_RES                   29  // PB9
#define OLED_SPI_PIN_DC                    28  // PB8
#define OLED_SPI_PIN_CS                    27  // PB7

static void u8g2_page_buffer_chinese(int argc, char *argv[])
{
	u8g2_t u8g2;
	// Initialization
	u8g2_Setup_il3820_v2_296x128_2( &u8g2, U8G2_R0, u8x8_byte_4wire_sw_spi, u8x8_rt_gpio_and_delay);
	u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_SPI_CLOCK, OLED_SPI_PIN_CLK);
	u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_SPI_DATA, OLED_SPI_PIN_MOSI);
	u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_CS, OLED_SPI_PIN_CS);
	u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_DC, OLED_SPI_PIN_DC);
	u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_RESET, OLED_SPI_PIN_RES);

	u8g2_InitDisplay(&u8g2);
	u8g2_SetPowerSave(&u8g2, 0);

	u8g2_SetFont(&u8g2, u8g2_font_baby_tf);
	rt_kprintf("u8g2_SetFont\n");
	u8g2_DrawStr(&u8g2, 0, 0, "U8g2 on RT-Thread-1");
	u8g2_DrawStr(&u8g2, 0, 5, "U8g2 on RT-Thread-2");
	u8g2_DrawStr(&u8g2, 0, 15, "U8g2 on RT-Thread-3");
	u8g2_SendBuffer(&u8g2);
}

希望能得到你的帮助:

1、如何分析下这个初始化后,为何会有乱码显示,定位下问题点

2、我在使用的时候发现, 这个长和宽好像不准确,上面程序在实际屏幕上,第一行U8g2 on RT-Thread-1没有打印出来,如何确认屏幕的长和宽,在什么位置定义和修改。

再次表示感谢!

中文字体显示不全,有时候会漏掉

如题,用的软件i2c,在ssd1306_12864_sw_i2c_example里面改的,大概这样

    u8g2_SetFont(&u8g2, u8g2_font_wqy12_t_chinese1);

    // u8g2_DrawUTF8(&u8g2, 1, 18, "你是一只猪");
    u8g2_DrawUTF8(&u8g2, 1, 18, "我的40米大砍刀");

换了字体,不知道除了wenquanyi,还有什么i字体比较合适?还是说,得自己撸字库?

第一个,显示“你是一只”
第二个,显示“我的40大”

关于调用u8G2库的问题

你好,我用你的库已经在F429上跑通了demo。但是我还是有几个问题不明白要问一下。我看了下这个源代码用了还是c的源码,然后你封装成了Cpp。我也看了你给其他人回复的,给的例程也都是cpp。因为大部分咱们用到的都是C比较多,用C的话,是不是直接调用里边的C函数就行了?如果调用C++的话,应该怎么写比较合适?

关于菜单历程按键问题

您好,我尝试使用按键历程,修改为硬件SPI 方式驱动,屏幕正常显示,可是按键无响应,按键引脚已经自定义,请问可能是什么原因呢???

硬件 SPI 图像变形

如果使用硬件SPI不知道为什么,图像会出现一些变形

正常的图像:

IMG_20190504_201739

变形的图像 :

IMG_20190504_201449

软件 I2C / 硬件I2C,软件 SPI 都是正常的

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.