Skip to content

APX103/Pixel-Matrix-Generator

Repository files navigation

Pixel Matrix Generator 🎨

一个专为单片机与嵌入式开发(如 Arduino UNO R4 WiFi LED 矩阵)设计的像素画取模与位矩阵打包工具

该项目采用 React + Vite + Tailwind CSS v4 构建,运行极其流畅,界面美观现代。

🚀 核心功能

  1. 自定义画布尺寸:支持任意高宽(推荐 1x1 至 64x64),并提供常用单片机预设尺寸(如 8x8, 12x8 Uno R4, 8x13 等)。
  2. 交互式像素画布:支持点击切换、按住鼠标拖拽连续绘制与擦除,提供“反转颜色”、“全选”、“清空”等辅助功能。
  3. 自适应位打包算法
    • 支持多种变量类型:uint8_t, uint16_t, uint32_t, uint64_t
    • 支持扁平连续打包(首尾相连,不浪费任何位)与每行独立打包(换行时自动对齐到下一个数组元素)。
    • 支持高位在前 (MSB-first)低位在前 (LSB-first) 位顺序。
    • 支持开头填充 (Pad at Start)末尾填充 (Pad at End) 对齐填充规则。
  4. 实时多格式代码生成
    • 十六进制 C/C++ 数组:直接复制到 Arduino/C/C++ 代码中。
    • 01 矩阵:直观的二进制文本矩阵。
    • 字符画 (*#):使用 *# 渲染的文本艺术,便于在代码注释中预览。

🛠️ 快速开始

运行开发服务器

在项目根目录下运行以下命令启动本地开发服务器:

npm install
npm run dev

构建生产版本

构建高度优化的静态网页:

npm run build

构建产物将输出至 dist/ 目录,可直接部署于 GitHub Pages、Vercel 或任何静态文件服务器。


📐 算法细节

扁平连续打包 (Flat Packing)

$H \times W$ 的二维网格按行优先(Row-major)顺序展平为一维布尔数组。若总位数不是变量类型位宽 $B$ 的整数倍,则根据配置在开头或末尾填充 0。

8行 13列 的网格为例(共 104 像素),打包为 uint32_t(32位)时:

  • 需要 $\lceil 104 / 32 \rceil = 4$uint32_t 元素(共 128 位)。
  • 剩余 24 位作为填充位。
  • 末尾填充 (Pad at End):前 104 位为像素数据,最后 24 位补 0。
  • 高位在前 (MSB-first):每个 32 位元素中,最先读到的像素对应最高有效位 (Bit 31)。

这与 Arduino UNO R4 WiFi 的官方 LED 矩阵打包格式完全一致!


📄 许可证

MIT License

About

DIY tool for arduino uno led matrix

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors