查看: 3998|回复: 1

老潘工作坊 让点阵显示BMP彩图【转自美科官网】

[复制链接]
  • TA的每日心情
    开心
    2019-7-17 13:13
  • 签到天数: 264 天

    [LV.8]以坛为家I

    发表于 2017-3-4 23:27 | 显示全部楼层 |阅读模式
    本帖最后由 沧海笑1122 于 2017-3-4 23:37 编辑

    【转自】https://www.microduino.cn/articles/SihQhZNhkZiKuY2DT
    作者:wasdpkj


    景是啥:
    • 我们的全彩点阵屏幕(wiki)有好用的库支持(Github
    • 你可以用这个库使点阵显示文字,画点画线画圈
    • 你也可以用这个库使点阵显示位图:(函数:drawBMP(x,y,w,h,data)
    • 不过之前位图功能仅限单色图,还要通过取摸软件取摸,稍显不便
    • 当我们想显示彩色图片时候就不够方便了,有没有一种图片格式是好获取的,Microduino能解码的呢?
    • 有,这个图片格式就是BMP(全称Bitmap),是Windows操作系统中的标准图像文件格式




    科普一下:
    • 典型的BMP图像文件由四部分组成:
      • 位图头文件数据结构,它包含BMP图像文件的类型、显示内容等信息;
      • 位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息
      • 调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板
      • 位图数据,这部分内容根据BMP位图位数而变化,在24位中直接使用RGB,而其他的小于24位的使用调色板中颜色索引

    • 想了解更具体,可以看看吴嘉乐同学的研究成果:wiki




    我做了啥:
    • 因为我们的点阵屏也是24位的,理所当然我就按24位BMP图片加上了位图显示功能(函数:drawBMP(x,y,data))
    • 这个函数是基于Adafruit的spitftbitmap例程移植的,将BMP图像储存在Flash储存中,不多占用内存空间



    展示一下:
    • 下面就来看看使用过程吧



    wouHiCoKnH7JdJcMq-01.jpg
    Step.2:

      • 随便选一个存起来
      • 用画图打开
      • 另存为24位的BMP格式

    • FzFKkdKFz9M57qDmK-02.jpg gf6a4FgTzB8PLynSs-05.jpg
      • Step.3:
        • 下载并且打开工具: DataToHex
        • 打开你存好的BMP文件
        • 框内两项勾选确定无误后点击生成数组
        • pdQYucJMcR9LaFCZG-04.jpg MAi2NSG6NDvNSJ3m4-06.jpg
        • Step.4:
          • 接下来在这个BMP目录内打开生成好的同名TXT文件
          • 复制数组内的内容
          • 替换示例程序中的BinCode数组中内容
          • 下载你的程序到点阵中(2x2阵列)
          • tnE4q5asZ7b3kgSm6-08.jpg 8zQGrTv5hpmC8AXsq-07.jpg

      • 看看效果:
    • 3FsHQ4oFrs6knfChi-09.JPG

    • 示例程序:

    • [kenrobot_code]#include "Microduino_Matrix.h"

      uint8_t Addr[MatrixPix_X][MatrixPix_Y] = {
        { 64, 63},
        { 62, 61}
      };

      Matrix display = Matrix(Addr);

      static const uint8_t BinCode[] PROGMEM = {

      };

      void setup(void) {
        delay(6000);
        Serial.begin(115200);

        Wire.begin();
        display.clearDisplay();
        display.drawBMP(0, 0, BinCode);
      }

      void loop() {
      } [/kenrobot_code]



    打赏作者鼓励一下!

    2人打赏

  • TA的每日心情
    开心
    2019-8-24 21:42
  • 签到天数: 101 天

    [LV.6]常住居民II

    发表于 2017-3-16 23:15 | 显示全部楼层
    老潘出品必是精品。
    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    ArduinoJason6教程由ArduinoJson作者Benoit亲自出马一对一教学
    ArduinoJason6教程由Ardui
    这几天我觉得社区教学好像缺了点什么,呃呃~我想一想好像是缺少了ArduinoJson6的教学
    Arduino+L298N小车实例教程
    Arduino+L298N小车实例教
    (第一次写教程,如有错漏,敬请拍砖)Arduino+L298N小车实例教程Arduino小车是一个非
    零知开源分享-蓝牙模块与手机APP通信
    零知开源分享-蓝牙模块与
    本篇文章中将讲解蓝牙模块与安卓手机APP进行通信。1、说明MCU:零知开发板-标准板模
    DHT库无法被找到
    DHT库无法被找到
    今天在安装了DHT库之后在编译时却显示无法找到库,请问我是在哪里安装出错了,谢谢大
    (可远程)ESP8266读DHT11温湿度,APP inventor制作app实时显示
    (可远程)ESP8266读DHT11
    原理讲解 原理简述:利用发布订阅模式。第一步,先读取DHT11温湿度数值,第二步,新
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表