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

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

3天内不再提示

怎样制作基于SNES控制器的Arduino游戏

454398 来源:wv 2019-10-12 08:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:所需的材料

所需的材料如下:

-1 Arduino

-1小面包板

- 1个您不介意拆除的旧SNES控制器

-10-15跳线(我使用11个)

-5个LEDs

-胶带

第2步:连接Arduino的所有电线

将跳线插入arduino的2-9针中。参见下文,了解每个引脚的功能以及我推荐的配色方案。

引脚2:频闪引脚。从控制器连接到橙色导线,所以我将跳线设置为粉红色或橙色。

引脚3:时钟引脚。从控制器连接到黄色电线,所以我建议使用黄色跳线。

引脚4:数据引脚。控制器上有红色导线,所以最好使用红色跳线。

引脚5:顶部LED的电源。引脚6:右侧LED的电源。引脚7:底部LED的电源。

Pin 8:左侧LED的电源。引脚5-8的跳线颜色应相同。我选择“深绿色”。

Pin 9:指示灯电源。我使用了浅绿色。

5V:电源引脚,连接到控制器的白线,所以我用了白色的跳线。

GND:控制器的棕线,我用了黑色的跳线。

GND:用于将面包板的所有接地线重新连接到arduino,所有接地线都使用蓝色。

步骤3:设置LED和面包板

将您的LED以菱形放置在面包板上。确保没有2个LED引脚共享相同编号的行。将所有阴极(LED上的短引脚)连接到面包板上的接地线,然后将接地线连接到arduino的GND之一。将针脚5-8上的跳线连接到LED的阳极,与它们的位置相对应,如上一步中所述。

对于游戏指示器LED,只需将其与其他LED放开,将其阳极连接到Pin 9,其阴极连接到接地轨。

步骤4:连接控制器

到现在为止,您完全不必弄乱控制器。现在,您必须从电线末端切下塑料外壳,以便可以进入电线内部。它们上应该有一些金属小端(请参阅图片),因此,将跨接导线钩起来应该相当简单,对吗?

错。

首先将控制器线由arduino绑在桌子上。如果任其发展,就很难建立良好的联系。我的跳线直接从小金属物品中滑出,所以我拿了一把小刀,将两端撬开(见图),这样我就可以将跳线垂直地插入插座中。将5根线连接到控制器时,请确保它们彼此之间不接触,并且确保正确匹配颜色。

步骤5:

在这一点上,您应该已正确连接好一切并准备就绪。下载链接的Arduino草图,对其进行编译,然后将其上传到您的arduino。要播放,请等待游戏指示灯LED停止闪烁,然后将AXBY用作4个基本方向。在接下来的两个步骤中,我将尝试解释代码,但是如果您想要的只是一个运行中的游戏,则可以在此处停止。

Simon_Says_snes.ino

步骤6:代码,第1部分

首先介绍了控制器如何发送数据的一些背景知识。为了从控制器接收数据,您将选通引脚设置为高电平,然后读取数据的第一位(最低有效位)。要获得第二位,请切换时钟引脚,然后从数据引脚读取。您将继续执行16次。控制器的状态是一个2字节数字,其中12个最低有效字节包含当前被按下的按钮,而4个最高有效字节则无用。

所以前7行非常简单,因为它们只是分配名称

第8-20行声明用于检测按下控制器上哪个按钮的十六进制数据。每个十六进制值都会在数据流中打开一个单独的位,因此您可以使用移位来确定是否按下了某个按钮,或者仅使用按位和。

变量“数组”只是一个数组长度为30 ints的整数。这将存储游戏的按顺序。‘pos’是位置变量。

timeForPress’是必须按下按钮的时间。

接下来的是setup()方法。我们从播种随机数生成器开始,然后为每个引脚2-9设置引脚模式。接下来,我们出于调试目的打开串行通信,并将按钮顺序设置为全“ 4”。我这样做是因为b/c的LED编号系统最多只能增加3个,因此4个基本上只是一个占位符。现在我们将timeForPress设置为1000,并调用genSequence()方法,该方法将数组填充为0到3(含3)之间的随机整数。接下来,将我们的位置设置为0,以表明它尚未开始游戏,然后闪烁游戏指示器以表明游戏即将开始。

步骤7:代码,第2部分

在这一步中,我将快速介绍用于从控制器获取数据的方法。我在上一步中告诉了您理论知识,但是现在我将列出实际的函数调用。

我认为我从这个可指导的代码中获得了一些代码。但是,还不能完全确定。

有三种方法可用于检查控制器输入:

buttons()

频闪()

shiftin()

buttons()方法首先设置了返回值变量和一个位置计数器。然后,它选通(使用strobe()),并进入for()循环。在for循环中,它使用shiftin()方法和按位运算符一次读取并存储一位数据。

strobe()方法非常简单。基本上只是将选通引脚设置为高电平,然后立即返回至低电平。很简单的东西。这告诉控制器开始传输数据。

shiftin()方法实际上读取数据。它从数据引脚获取数据,然后切换时钟引脚,告诉控制器发送下一位。

仅使用这三种方法,您就可以读取控制器的状态。您永远不必直接调用strobe()或shiftin()。最后一点,当检查按钮是否被按下时,必须使用2个按位运算符。 〜(波浪号)不是按位的,而是反转数据,然后&检查状态与您要按下的按钮的关系。

步骤8:代码,第3部分

这是关于代码的最后一步。我只是要快速了解游戏循环的操作,因为对于新手程序员来说,这应该很容易理解。

loop()方法通过串行打印控制器的状态开始。然后,它播放存储在数组中的序列,然后使用readAndCheckInput方法检查用户输入,该方法本质上只是一个带有一些if语句的for循环。如果您弄错了,它就会跳出循环并执行闪烁的操作,然后结束。

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

    关注

    114

    文章

    17665

    浏览量

    190512
  • Arduino
    +关注

    关注

    190

    文章

    6516

    浏览量

    196065
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问CW32微控制器的封装类型和尺寸是怎样的?

    CW32微控制器的封装类型和尺寸是怎样的?
    发表于 12-16 07:22

    codesys 3.5版本控制器联机指导:如何进行RS232联机?#codesys编程控制器 #控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年08月29日 09:07:25

    Codesys 3.5 版本控制器联机指导:如何进行CAN联机?#can总线 #codesys控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年08月21日 09:45:29

    基于stm32和mpu9250的usb hid键盘、鼠标、游戏控制器实例打包下载

    基于stm32和mpu9250的usb hid键盘、鼠标、游戏控制器实例打包,推荐下载!
    发表于 05-29 21:44

    车载整机控制器 工程机械主机控制器#硕博电子#国产控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年05月26日 09:09:02

    基于stm32和mpu9250的usb hid键盘、鼠标、游戏控制器

    基于stm32和mpu9250的usb hid键盘、鼠标、游戏控制器 项目实例下载! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
    发表于 05-23 20:53

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    的发展,在Arduino出现以前,虽然也有很多公司在推广一些简单易用的可编程控制器,但是由于开发平台种类繁多,而且使用这些控制器基本上都需要对电子技术、数字逻辑、寄存等内容进行多方面
    发表于 05-13 09:28

    工程机械控制器厂家 控制器国产替代 #国产控制器#控制器厂家#控制器品牌

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年04月29日 14:15:05

    物联网单灯控制器 灯联网单灯控制器

    物联网单灯控制器 灯联网单灯控制器
    的头像 发表于 04-03 10:53 665次阅读
    物联网单灯<b class='flag-5'>控制器</b> 灯联网单灯<b class='flag-5'>控制器</b>

    工程机械控制器如何选型?控制器选型指南 #控制器 #车载控制器 #整车控制器 #控制器选型

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年03月14日 10:54:24

    Y1620工程机械主机控制器 车载智能控制器 CAN总线 #工程机械控制器 #整车控制器 #车载控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年02月10日 15:32:21

    如何使用Arduino实现CAN总线通信呢

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 2855次阅读