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. ArcGIS 网络分析[2.2] 服务区分析

    什么是服务区? 我们先提一个很常见的社会现象:一个医院,如果要发起抢救,那么10分钟内能去多远? 时间就是生命,当结合道路网的阻力进行最短路径分析时,得到的可达的覆盖区域,这个区域就是服务区. 服务区 ...

  2. 解决 mysql 中文乱码

    mysql版本:5.6.38 虽然创建实例时选择的是utf-8的utf8_general_ci,但是用其他程序保存中文时依旧出现乱码的情况. 记录一种可行的解决方案,即修改数据库的字符集. 由于该环境 ...

  3. 顶点/片元 shader 总结

    Cg顶点程序必须在结构中传递顶点数据.几种常用的顶点结构定义在文件UnityCG.cginc中,有如下三种结构体: 1.appdata_base: 包含顶点位置,法线和一个纹理坐标.2.appdata ...

  4. ADB 安卓开发配置环境

    下载完后将名称中含有adb的文件,和fastboot.exe复制到 c:/windows/system32目录 或c:/windows/system64目录(看自己电脑系统配置 如电脑64操作系统就写 ...

  5. K:枚举的线程安全性及其序列化问题

      枚举是如何保证线程安全的且其在序列化和反序列化的操作中是单例的?   要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关 ...

  6. Git详解之四:服务器上的Git

    服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日常工作.然而,如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取修改内容,但我们不鼓励这样做 ...

  7. 理解JavaScript原型

    Javascript原型总会给人产生一些困惑,无论是经验丰富的专家,还是作者自己也时常表现出对这个概念某些有限的理解,我认为这样的困惑在我们一开始接触原型时就已经产生了,它们常常和new.constr ...

  8. 如何把kotlin+spring boot开发的项目部署在tomcat上

    本文只讲部署过程,你首先要保证你的程序能在IDE里跑起来: 先看看你的application.properties中设置的端口号与你服务器上tomcat的端口号是否一致 server.port=80 ...

  9. 动手搭建第一个小程序音视频Demo

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:小程序音视频产品经理 腾讯云提供了全套技术文档和源码来帮助您快速构建一个音视频小程序,但是再好的源码和文档也有学习成本,为了尽快的能调试起 ...

  10. Windows服务器安装Memcache缓存服务及PHP扩展

    一.Windows服务器安装Memcache缓存服务,需要下载windows稳定版Memcache程序memcached.zip,下载后解压到自定义服务目录,如D:\phpStudy\tools\me ...