×

使用Wio终端扩展Arduboy

消耗积分:0 | 格式:zip | 大小:0.12 MB | 2022-11-03

南风一号

分享资料个

描述

概述

Arduboy 是一个微型信用卡大小的游戏系统,带有开源软件,基于 Arduino 硬件平台。我没有 Arduboy,但我很怀念,喜欢复古的游戏文化,所以我决定做一个类似于 Arduboy 的掌上游戏机,屏幕尺寸更大。

硬件选择

一开始我想我应该开始使用带有 OLED 屏幕和按钮的面包板,然后将设计转移到原型板上,但由于时间有限,我决定使用 Seeedstudio Wio 终端,它具有 SAMD51 微控制器、ILI9341 彩色 TFT 显示屏、5-方式开关和3个按钮。它拥有我开始快速原型制作所需的一切。虽然,Wio Terminal 有彩色显示屏,但我想保持复古的黑白外观。

pYYBAGNiSbaAOxeFAAJe5kL9mC443.jpeg
 

软件库开发

我已经分叉了Modmatic Github 存储库,它是众所周知的MLXXXp/Arduboy2 Github 存储库的一个分支。此存储库具有 SAMD51 实现,但具有不同的显示控制器。我使用Bodmer/TFT_eSPI库(默认情况下与 Wio 终端板安装一起安装)实现了 ILI9341 显示控制器。此外,我必须重新映射所有按钮引脚和扬声器。

修改

Wio 终端有一个板载蜂鸣器,但我使用的库支持 SAMD51 DAC 引脚上的音调,使用具有更好响度的中断。我已将带放大器的外部扬声器连接到 Wio 终端背面的接头。这是可选的,没有它也可以玩游戏。

Grove Speaker    Wio Terminal
VCC              3.3V
GND              GND
SIG              DAC1

图形缩放

最初的 Arduboy 使用 128x64 像素的显示分辨率,这对于 8 位图形和 sprite 的清晰渲染来说非常好。由于 Wio 终端 (ILI9341) 具有 320x240 像素的显示分辨率,因此尽可能多地使用它会很好。大多数游戏都是为 128x64 分辨率编写的,因此通过按比例重新缩放,我们可以在 Wio 终端上达到 256x128 分辨率。图形缩放是使用具有整数插值的最近邻实现的。最近邻算法是图像缩放技术的最简单和最快的实现。它以一组参考像素(图像)为基础来构建一个新的缩放图像。根据缩放比例,构建的图像可以更小、更大或大小相等。放大图像时,我们实际上是在原始基础图片中引入空格。从下图中,将尺寸为 (w1 = 4, h1 = 4) 的图像放大为 (w2 = 8, h2 = 8)。黑色像素代表需要插值的空白空间,完整的图像是最近邻插值的结果。

poYBAGNiScCAK00nAAAvbQqoTm4820.png
图片来源:tech-algorithm.com
 

实现是如此之小,以至于我已经包含了下面的代码。

void Arduboy2Core::scale(const uint8_t *image, uint16_t w1, 
     uint16_t h1, uint8_t *scaledImage, uint16_t w2, uint16_t h2)
{
    uint16_t x_ratio = (uint16_t)((w1<<16)/w2) + 1;
    uint16_t y_ratio = (uint16_t)((h1<<16)/h2) + 1;
    uint16_t x2, y2;

    for (uint16_t i=0; i2; i++) {
        for (uint16_t j=0; j2; j++) {
            x2 = ((j * x_ratio) >> 16) ;
            y2 = ((i * y_ratio) >> 16) ;
            scaledImage[(i * w2) + j] = image[(y2 * w1) + x2] ;
        }
    }
}

我们可以比较下图中的分辨率。

pYYBAGNiScOAA4LnAADzf4JAYTA901.jpg
 

安装

请下载最新的 Arduino IDE 要安装 Wio 终端板库,请打开 Arduino IDE,单击File > Preferences ,然后将以下 URL 复制到 Additional Boards Manager 

poYBAGNiScWAbsdDAAFaq2aN3qo884.png
 

单击工具 > 板 > 板管理器并搜索Wio 终端并单击安装。

pYYBAGNiSceAc5CKAADTCt0A0C4600.png
 

您需要使用Tools > Board菜单选择板和端口。

poYBAGNiScuAYSciAAGoOOs5NXU588.png
 

Wio 终端没有 EEPROM,因此我们需要安装 FlashStorage 库,该库具有使用闪存模拟 EEPROM 的 API。点击Tools > Manage Libraries...打开 Library Manager 并搜索FlashStorage (by Arduino) 并点击 install。

poYBAGNiSc2ASvb3AADxE_EuI8E312.png
 

现在我们需要从下面列出的 Github 存储库中为 Wio Terminal 安装 Arduboy 库:

单击代码 > 下载 ZIP以下载库包。

pYYBAGNiSdCAZuaFAAFXzqDzE2Q971.png
 

要安装库,请单击Sketch > Include Library > Add.ZIP Library。

poYBAGNiSdOACt4aAAC6whgExTI279.png
 

我们可以使用 HelloWorld 草图测试这个库。通过 USB 将 Wio 终端连接到计算机并通过单击文件 > 示例 > Arduboy2 > HelloWorld打开草图,然后单击草图 > 上传以编译/上传固件。

poYBAGNiSdWAdAvRAAC45ZALkeo519.png
 

你好世界演示

 

用声音播放 Sirène 演示

从 Github 存储库https://github.com/Team-ARG-Museum/ID-42-Sirene 下载 ZIP 文件。在 Arduino IDE 中解压并打开文件 SRN_AB.ino。

pYYBAGNiSdiAMuOOAACwrBr7WRE151.png
 

单击草图>上传并享受游戏!

 

同样,我们可以玩许多其他游戏。虽然大多数游戏应该可以开箱即用,但很少有游戏草图需要外部库,可以使用 Arduino IDE 库管理器安装这些库。请在编译草图并安装缺少的库时检查错误消息。

玩该死的地下墓穴!3D游戏演示

 

玩公路旅行演示

 

结论

在 Wio 终端上移植 Arduboy 真的是一次很棒的经历和学习。我喜欢在上面玩游戏。在不久的将来,我计划为它开发一款游戏。我要感谢 Kevin Bates 和 Seeedstudio 对开源软件和开放硬件平台的支持。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !