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循环。如果您弄错了,它就会跳出循环并执行闪烁的操作,然后结束。

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

    关注

    112

    文章

    15214

    浏览量

    171150
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184826
收藏 人收藏

    评论

    相关推荐

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 2次下载

    Arduino制作雕刻机时用哪个pin来控制激光开关?

    Arduino制作雕刻机是用哪个pin来控制激光的开关? Limit Z_Axis 还是 SPINDLE_ENABLE 好像要交换一下.
    发表于 10-27 07:52

    使用Arduino和PAJ7620手势传感制作手势控制机器人

    使用Arduino和PAJ7620手势传感制作手势控制机器人,简单程序即可实现。小小的传感可以识别各种手势。它采用内置的空间传感
    发表于 09-27 06:17

    利用Arduino制作智能空调

    宿舍总是太热,我们决定用Arduino来建造我们自己的空调。每个房间都有自己的温度传感、通风井和风扇控制器Arduino的工作是监控室温并控制
    发表于 09-22 06:32

    Arduino记忆游戏

    电子发烧友网站提供《Arduino记忆游戏.zip》资料免费下载
    发表于 07-10 16:49 1次下载
    <b class='flag-5'>Arduino</b>记忆<b class='flag-5'>游戏</b>

    制作Arduino控制的机器人

    电子发烧友网站提供《制作Arduino控制的机器人.zip》资料免费下载
    发表于 07-06 14:21 0次下载
    <b class='flag-5'>制作</b><b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>的机器人

    DIY安卓+Arduino控制迷宫游戏

    电子发烧友网站提供《DIY安卓+Arduino控制迷宫游戏.zip》资料免费下载
    发表于 06-29 14:53 0次下载
    DIY安卓+<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>迷宫<b class='flag-5'>游戏</b>

    Arduino科技井字游戏

    电子发烧友网站提供《Arduino科技井字游戏.zip》资料免费下载
    发表于 06-29 10:52 0次下载
    <b class='flag-5'>Arduino</b>科技井字<b class='flag-5'>游戏</b>

    如何使用Arduino控制继电器模块制作智能家居

    电子发烧友网站提供《如何使用Arduino控制继电器模块制作智能家居.zip》资料免费下载
    发表于 06-29 10:22 0次下载
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>继电器模块<b class='flag-5'>制作</b>智能家居

    Arduino:连续MIDI控制器/键盘

    电子发烧友网站提供《Arduino:连续MIDI控制器/键盘.zip》资料免费下载
    发表于 06-27 10:31 0次下载
    <b class='flag-5'>Arduino</b>:连续MIDI<b class='flag-5'>控制器</b>/键盘

    Arduino游戏

    电子发烧友网站提供《Arduino游戏机.zip》资料免费下载
    发表于 06-27 10:30 0次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>游戏</b>机

    如何制作Arduino蓝牙控制的汽车

    电子发烧友网站提供《如何制作Arduino蓝牙控制的汽车.zip》资料免费下载
    发表于 06-26 10:21 0次下载
    如何<b class='flag-5'>制作</b><b class='flag-5'>Arduino</b>蓝牙<b class='flag-5'>控制</b>的汽车

    使用Arduino和其他常见组件制作热风枪控制器

    电子发烧友网站提供《使用Arduino和其他常见组件制作热风枪控制器.zip》资料免费下载
    发表于 06-26 09:19 1次下载
    使用<b class='flag-5'>Arduino</b>和其他常见组件<b class='flag-5'>制作</b>热风枪<b class='flag-5'>控制器</b>

    基于Arduino的2人游戏

    电子发烧友网站提供《基于Arduino的2人游戏.zip》资料免费下载
    发表于 06-19 15:05 0次下载
    基于<b class='flag-5'>Arduino</b>的2人<b class='flag-5'>游戏</b>

    使用Arduino和L293d shield制作语音控制机器人

    电子发烧友网站提供《使用Arduino和L293d shield制作语音控制机器人.zip》资料免费下载
    发表于 06-12 10:49 0次下载
    使用<b class='flag-5'>Arduino</b>和L293d shield<b class='flag-5'>制作</b>语音<b class='flag-5'>控制</b>机器人