查看: 2757|回复: 1

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

[复制链接]
  • TA的每日心情
    开心
    2018-11-28 10:20
  • 签到天数: 262 天

    [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-1-20 16:41
  • 签到天数: 56 天

    [LV.5]常住居民I

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

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    Blinker 模拟传感器+数字传感器例程(DHT11 温湿度+气体传感)
    Blinker 模拟传感器+数字
    才接触1星期,发现Blinker自带了很多例程,已经成功试验了DHT的例程序,并完善了体
    一文教你选择Arduino开发板,小白进
    一文教你选择Arduino开发
    笔者在2016年接触了Arduino,跳了万条坑,行了千里弯,到今天也算是Arduino的一
    [发布帖]RPG游戏 无人世界
    [发布帖]RPG游戏 无人世界
    视频攻略:https://www.bilibili.com/video/av43790997/ (b站正在审核) 剧情:主角是
    【人脸识别】ESP-EYE 最新的板子到货了
    【人脸识别】ESP-EYE 最新
    1.我不会编程,最多抄几个一步一步的网络教程。 2.不知道为啥就是超级喜欢电子元件。
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表