0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使用Arduino重新创建经典的Pong游戏

454398 来源:网络整理 作者:网络整理 2019-12-05 08:56 次阅读

Pong是有史以来第一个进入大众市场的视频游戏。 Atari 2600首次将“视频游戏”的概念带入了家庭,这是我们向这一历史瑰宝致敬的唯一权利。现在,您可以使用Arduino和一些常用组件重新体验(游戏邦注:有些无聊)。

我不会撒谎–您的女儿不太可能会放弃她的Nintendo DS,这不会给整个家庭带来数小时的乐趣–但这是一个很棒且容易的项目,可以改善Arduino编码。而且,如果您只是入门,请不要忘记查看我们的初学者Arduino指南。

我们将制作两个基本控制器,视频将通过标准的复合视频电缆输出到电视上

要将这个项目提高到一个新水平,您可以3D打印外壳。 YouTube用户PotentPrintables就是这么做的!

Arduino Pong的要求

470 欧姆电阻 x1

1k 欧姆电阻 x1

10k欧姆电位计(双可变电阻) x2

Arduino x1 (任何版本)

RCA 插入 x1 (如果您有一个以上的声音,也可以连接声音。对于视频来说,一个声音是最低限度的要求)

按钮开关 x1

10k 欧姆电阻 x1

怎样使用Arduino重新创建经典的Pong游戏

您还可以从此处下载TV Out Arduino库-获取最新版本的 TVoutBeta1.zip 。将所有生成的文件夹全部放入您的/arduino/libraries 目录,如果已打开Arduino IDE,请重新启动它。

测试电视输出

获取RCA塞住并剥去外层。收集屏蔽层,扭转并放在一侧。这是你的理由。中间应该是另一根带有塑料屏蔽的电缆–再次将其剥开,以便获得信号线。

同时焊接470欧姆和1k连接到RCA插头中心信号线的欧姆电阻–提供同步信号和实际视频信号,将其组合在一起以产生模拟视频输入。 470欧姆电阻应插入数字IO引脚D07,而1k欧姆电阻应接入D09引脚。

这些引脚由我们导入的库设置,因此您无法更改它们。

现在,您可以继续进行示例加载;您可以从Arduino GND引脚之一到RCA的屏蔽层(外部)。尽管同时提供了PAL和NTSC,但它与现代数字电视并没有真正的关系-尽管在英国,NTSC演示对我来说还是不错的。插入电视,即可获得漂亮的复古3D立方体。哦-是吗?我是。

测试模拟电位计输入

好,我们已经完成了电视输出,现在让我们开始吧与控制器。 “电位器”的接线不是那么关键–每个电位器应具有3个引脚,而中央的引脚几乎总是产生输出信号。将其连接到A0和A1(每个锅一个)。在其中一个侧面引脚上,不管哪个都可以,连接+ 5V电压。

在这里,我将它们都面对面放在单个面包板上,因为我只有短线。对于抛光产品,您需要使用一些旧的网络电缆来给您一些距离(以便您实际上可以坐在沙发上玩耍)。

接下来,加载Arduino随附的基本示例草图之一-模拟输入之一。此演示将根据A0上的输入来更快或更慢地闪烁车载LED

它不会测试其他A1电位器,但是如果您正确连接了A0,那么我将无法了解您如何在A1上犯错,所以我们假设一切都很好,继续前进。

添加启动开关

最后,我们将在D02上添加启动开关。有关如何执行此操作,请参考此处的接线图。在菜单中时,此开关将用于启动游戏。

傍代码

我们正在使用一些代码最初由 Lamonica 编写,由 duboisvb 修改为两个播放器,并由我自己更新为使用TV输出库的最新beta版本。您可以从此pastebin查看和下载代码。

这是一个很长但很简单的代码,不需要我做任何解释。像大多数游戏一样,它依赖于游戏状态(菜单,游戏内,游戏结束),并在循环的每次迭代中读取两个控制器和切换器的输入值。除此之外,还有绘制屏幕,球,球拍和游戏逻辑的方法。

请注意,代码包括音频也是输出:我找不到更多的RCA插头来测试这一点,但是如果有,请直接将信号引脚连接到D11,这样您就会得到一些令人愉悦的复古色调。

老实说,我不知道Arduino甚至不需要一些非常复杂的编码就可以制作电视节目。电视输出库非常容易。即使您不喜欢复古游戏,使用此基本电视输出也是将现有设备用作廉价显示器的一种好方法。您当然也可以输出颜色。

责任编辑:wv

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

    关注

    187

    文章

    6463

    浏览量

    186621
收藏 人收藏

    评论

    相关推荐

    如何处理机智云移动应用的删除问题

    ,删除操作可能会导致系统出现不稳定或不一致的状态。因此,如果用户觉得当前的应用不再适用,或者想要重新开始,可以采取其他措施。首先,用户可以选择重新创建一个新的应用
    的头像 发表于 10-23 08:04 145次阅读
    如何处理机智云移动应用的删除问题

    【xG24 Matter开发套件试用体验】power specification电源规格参数配置

    在线检测到有新的软件版本需要升级更新, 按着提示,点击:“update all\", 等待升级完成后,打开project 菜单选项,新创建一个工程,导入例程。 进入Power Specification界面, 查看源代码和头文件,可以按照自己的需求修改配置和填写代码, 实现实时监控和检测。
    发表于 08-20 09:30

    Arduino放回了一个空的schetch,重新打开了程序不断重启的原因?

    . 我用arduino重新加载,就像照片2一样,但它总是以相同的方式重新启动。 我将代码切成两半,重新加载,它有效。 我恢复原始代码,加载它,它有效。 我将相同的程序与加载器放回原处
    发表于 07-10 07:22

    通过menuconfig对潘多拉这块板子打开板载wifi之后,就无法重新创建项目了,怎么解决?

    当我通过menuconfig对潘多拉这块板子打开板载wifi之后,就无法重新创建项目了(pkgs更新过了,用的是GitHub上下载的5.0的版本)
    发表于 07-09 07:34

    rtt studio终端无法打印字符串是怎么回事?

    求助:rtt studio新创建的项目使用自带终端可以打印字符串,但是将字符串输出语句注释掉再改回来终端就无法打印了,并且msh也未显示也无法使用输入,使用其他的串口调试助手看到了rtt的界面以及打印的字符串
    发表于 07-05 07:29

    STM32H7-LwIP-Examples-mainSTM32H743_Nucleo_ETH配置完系统后,无法ping通怎么解决?

    无法ping通。 重新创建任务,tcp-c连接多次才能成功,成功后只能发送一包数据到s端,之后程序卡死。 int sock = -1;struct sockaddr_in client_addr
    发表于 07-04 06:54

    ESP32使用Arduino启用蓝牙后编译固件过大,怎样缩减大小呢?

    ESP32使用Arduino启用蓝牙后编译固件过大,怎样缩减大小,日志级别已经最低了,分区不能动,已经是1.9M的OTA分区配置了,怎样还能缩减大小,蓝牙功能能否裁剪
    发表于 06-28 11:27

    使用idf.py命令方式编译,怎样才能编译arduino的库,并且在项目中可调用?

    ESP-IDF添加arduino作为component的方式创建工程,sketch.cpp中的arduino代码经测试可以正确执行。 工程中需要使用arduno的simpleFOC库,并且
    发表于 06-13 06:56

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用
    发表于 06-12 07:21

    鸿蒙ArkTS声明式开发:跨平台支持列表【显隐控制】 通用属性

    控制当前组件显示或隐藏。注意,即使组件处于隐藏状态,在页面刷新时仍存在重新创建过程,因此当对性能有严格要求时建议使用[条件渲染]代替。 默认值:Visibility.Visible 从API version 9开始,该接口支持在ArkTS卡片中使用。
    的头像 发表于 06-03 14:46 549次阅读
    鸿蒙ArkTS声明式开发:跨平台支持列表【显隐控制】 通用属性

    如何使用Arduino设置热敏电阻来创建温度计

    在本教程中,我们将指导您如何使用Arduino设置热敏电阻以创建基本温度计。提供的原理图、试验板图和示例代码将使热敏电阻工作变得简单明了。
    的头像 发表于 02-11 10:37 2250次阅读
    如何使用<b class='flag-5'>Arduino</b>设置热敏电阻来<b class='flag-5'>创建</b>温度计

    如何使用Arduino控制RGB LED

    在本指南中,您将学习如何使用Arduino控制RGB LED。RGB(红-绿-蓝)LED可以通过混合不同强度的红、绿、蓝光来产生多种颜色。您将学习创建一个基本Arduino RGB LED电路,并以一些基本颜色为例循环。
    的头像 发表于 02-11 10:28 4543次阅读
    如何使用<b class='flag-5'>Arduino</b>控制RGB LED

    使用自定义BSP的空项目出现Modus工具箱编译错误的原因?

    Mac OS 发行版下的 ModuStool 盒子里。 正如我在论坛上读到的那样,在Modus Toolbox中重新创建包含所有3个项目的OTA应用程序是另一个挑战,但到目前为止,我想让一个简单
    发表于 01-23 06:32

    西门子博途示例:设置优化块访问

    默认情况下,为 S7 - 1200/1500 的所有新创建的块启用优化块访问。可为 OB、FB 和全局DB设置块访问。对于背景DB,设置来自各自的 FB。 如果将块从 S7- 300/400 控制器移植到 S7- 1200/1500 ,块访问不会自动复位设置。
    的头像 发表于 01-15 10:41 5199次阅读
    西门子博途示例:设置优化块访问

    3D扫描+游戏,带你还原“真实”的虚拟赛车体验!

    近年来,赛车类游戏都致力于为玩家带来更加沉浸式的游戏体验:通过创建高精细度的3D模型,结合先进的物理引擎和逼真的动态天气系统,模拟最真实的驾驶动态。 随着游戏市场竞争加剧,如何在最短时
    的头像 发表于 01-10 11:02 413次阅读
    3D扫描+<b class='flag-5'>游戏</b>,带你还原“真实”的虚拟赛车体验!