Arduino 开源库 u8glib2 研究之 图标显示
               -----------------关于drawXBM drawXBMP函数使用的研究

因为心血来潮,近来想做一个贪食蛇的游戏,手上有Arduino和我们自己开发的Newbit OLED Shield,硬件完全满足,所以在网上搜了下,发现好多人在用u8glib, 现在已经出了第二版 u8glib2, 第一版已经停止维护了, 不过两版的源码可以在 github.com下载,具体网址是

这个库很强大,显示文字(多种字体可选),划几何图形,绘图都没有问题。

在Arduino 1.6.12的环境里,可以直接下载库(非源码),下载了可以用,下载的方法是
1. 在Arduino中选择菜单 “项目”
2. 点击“加载库"->”管理库“
3. 在搜索框里输入 u8g2 ,
4. 安装最新的版本,比如  2.8.5
不过这个库的文档似乎不太完善,还是要看看源码才知道库的使用方法。所幸还有一份勉强可以用的参考文档
http://www.docin.com/p-1011581730.html
为了制作贪食蛇的游戏,要显示蛇身的单元格,因此首先要了解利用 u8glib2如何显示图标。

库中有多个函数用来显示位图(也即是我们所说的图标),这种位图是不规则的,通常不是几何图形,比如代表蛇身的块,一颗国际象棋等等。
以下两个是比较好用的。两个函数功能相仿,只是前者输入为ram中的数据,后者输入为rom中的数据,用的时候自行选择
void drawXBM(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)
void drawXBMP(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)

举例来说明一下这个函数如何使用

数据是
const uint8_t ele3x3[] PROGMEM = {
0X07,
0X06,
0X04,
};
这代表一个缺少左下角的正方形,其实是一个直角三角形。  ele3x3[0] = 7 = 0b0000 0111, 取低3位, 而D2则对应屏上最右边。
它表示的3个点是
.  .  .
同理第ele3x3[1] = 6, 表示
x .  .
ele3x3[2] = 4,表示
x  x  .
(x)表示在屏上不显示任何内容

整个数组的显示内容为
. . .
  . .
    .
当左右上下间距相同时,就是一个直角三角形了。

假定我们要显示在 (30,30) (33,33)这个矩形区域中。

了解要显示的对象之后,再看如何调用函数 drawXBMP()
drawXBMP(30,30, 3, 3, ele3x3);

好了,来看看显示的效果

---------------------------------------------------
代码下载

https://pan.baidu.com/s/1c1Vru3Q

【Newbit Studio】 尊重原创,转载请注明来自www.newbitstudio.com

Arduino 开源库 u8glib2 之 图标显示【原创】的更多相关文章

  1. Tornadofx学习笔记(4)——IconTextFx开源库,整合5000+个字体图标

    JavaFx中其实也可以直接使用字体图标iconfont的,只需要加载ttf字体文件,之后设置unicode即可,具体可以看我给出的代码 既然JavaFx可以,那么以JavaFx为基础的Tornado ...

  2. Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果

    大家好!过完年回来到现在差不多一个月没写文章了,一是觉得不知道写哪些方面的文章,没有好的题材来写,二是因为自己的一些私事给耽误了,所以过完年的第一篇文章到现在才发表出来,2014年我还是会继续在CSD ...

  3. 真香警告!JitPack 开源库集成平台

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 简介 官方介绍: JitPack 是一个用于 JVM 和 Android 项目的新颖的包存储库.它按需构建 Git 项目并为您提供即用 ...

  4. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  5. Android主流UI开源库整理(转载)

    http://www.jianshu.com/p/47a4a7b99364 标题隐含了两个层面的意思,一个是主流,另一个是UI.主流既通用,一些常规的按钮.Switch.进度条等控件都是通用控件,因此 ...

  6. iOS项目中常用的第三方开源库

    1.项目使用的第三方开源库 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的 ...

  7. Android 第三方开源库收集整理(转)

    原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样,  ...

  8. 45.Android 第三方开源库收集整理(转)

    原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样,  ...

  9. Android开源库

    http://blog.csdn.net/xiaanming/article/details/9470223 一.兼容类库 ActionBarSherlock : Action Bar是Android ...

随机推荐

  1. SVO环境搭建

    我是装了双系统,实验OS:Ubuntu14.04 Installation: Plain CMake (No ROS) 首先,建立一个工作目录比如:workspace,然后把下面的需要的都在该目录下进 ...

  2. 第三节 - centos 内核启动、救援模式、 ls 、目录结构

    Linux 第三节一.CentOS 启动: 1.内核引导: 1.win/linux 通电,2.BISO自检(CPU,内存,硬盘等 | U盘.光驱.网卡.硬盘启动 通过MBR知道内核内存硬件驱动位置并加 ...

  3. ArcGIS API for Javascript 加载天地图(经纬度投影)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 【Tomcat】重新打war包

    Extract war in tomcat/webapps #!/bin/bash #----------------------------------------------- # FileNam ...

  5. [编织消息框架][传输协议]sctp

    OSI(Open System Interconnect),即开放式系统互联. 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型. 该体系结构标准定义了网络互连的七 ...

  6. S2 深入.NET和C#编程 一: 深入C#.NET框架

    深入C#.NET框架 1..NET框架 之一   推荐一个代码管理平台,博客发布平台 git   之前的复习:   学习的网站: git   github.com 2.类和对象的关系  Dept de ...

  7. Sp_Lock

    SP_LOCK 其显示信息为: Spid:进程ID号(要发现哪些用户和该spid相连,你就要执行存储过程sp_who) Dbid:数据库ID号(可以在主数据库中的sysdatabases表格中找到它) ...

  8. [js高手之路]面向对象版本匀速运动框架

    这篇文章的效果,需要看过以下3篇文章: [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件 [js高手之路]匀速运动与实例实战(侧边栏,淡入淡出) [js高手之路]打造通用的匀速运动框架 ...

  9. 浏览器根对象window之screen

    1. screen 1.1 availHeight/Width screen.availWidth返回浏览器窗口可占用的水平宽度(单位:像素). screen.availHeight返回浏览器窗口在屏 ...

  10. 可视化编程开发板TurnipBit支持LED亮度可调功能

    微软的makecode编辑器更新至版本v0.12.64.新增LED的可调亮度功能.而作为中文版可视化编程的口袋计算机TurnipBit完全兼容micro:bit,同样支持LED的亮度可调功能. 该项功 ...