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

    文章

    16320

    浏览量

    177792
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186936
收藏 人收藏

    评论

    相关推荐

    stm32与Arduino的比较

    在微控制器的世界里,STM32和Arduino是两个经常被提及的名字。STM32是一系列由STMicroelectronics生产的高性能微控制器,而Arduino则是一个开源电子原型
    的头像 发表于 11-19 15:45 700次阅读

    如何选择合适的PID控制器

    在工业自动化领域,PID控制器因其简单、高效和广泛应用而备受青睐。PID代表比例(Proportional)、积分(Integral)和微分(Derivative)三个控制作用,它们共同作用于系统
    的头像 发表于 11-13 14:34 450次阅读

    游戏、AR和VR控制器中的位置检测

    电子发烧友网站提供《游戏、AR和VR控制器中的位置检测.pdf》资料免费下载
    发表于 09-05 11:05 0次下载
    <b class='flag-5'>游戏</b>、AR和VR<b class='flag-5'>控制器</b>中的位置检测

    国产控制器厂家 整车控制器 以太网控制器 CAN控制器 国产化替代

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2024年09月03日 09:15:51

    车载智能控制器 工程机械控制器 CAN总线控制器 硕博电子 #控制器 #can总线 #国产化替代

    控制器总线
    长沙硕博电子科技股份有限公司
    发布于 :2024年08月29日 10:43:57

    控制器的主要作用是指什么

    (Controller)是一种用于实现对被控对象的控制作用的设备或装置。它根据被控对象的输入信号和预定的控制规律,通过计算和处理,产生相应的输出信号,以实现对被控对象的控制控制器的主
    的头像 发表于 06-30 10:39 3635次阅读

    工业控制器制作与数学的关系

    数学在工业控制器设计中的应用 工业控制器的设计涉及到多个方面,包括硬件设计、软件设计、系统架构设计等。在这些设计过程中,数学发挥着关键作用。 1.1 硬件设计中的数学应用 工业控制器的硬件设计主要
    的头像 发表于 06-16 14:34 508次阅读

    移动机械控制器 车载智能控制器 CAN总线控制器

    控制器机械
    长沙硕博电子科技股份有限公司
    发布于 :2024年06月13日 17:02:51

    PID控制器与PWM控制器的区别

    在工业自动化和控制系统设计中,PID控制器(比例-积分-微分控制器)和PWM控制器(脉冲宽度调制控制器)是两种常用的
    的头像 发表于 06-05 18:25 3036次阅读

    仁宝发布新款平板,配备游戏控制器

    控制器被命名为 FlexiRear,平常隐藏在平板电脑后部,巧妙地融入到平坦背壳中。当需要使用时,用户可轻松拉起控制器,其人性化设计符合人体工学原理,内置多种传感和触摸交互区以便进行控制
    的头像 发表于 03-10 10:52 562次阅读

    如何制作自己的Arduino电容计

    在这个项目中,您将学习如何制作自己的Arduino电容计(测量电容器的值,范围从pF到1000的uF)。一般来说,电子爱好者喜欢设计自己的小工具而不是购买。在这个项目中,我们使用两种电容测量方法,即
    的头像 发表于 02-25 15:10 1533次阅读
    如何<b class='flag-5'>制作</b>自己的<b class='flag-5'>Arduino</b>电容计

    如何使用Arduino UNO板和电位控制伺服电机

    在本Arduino伺服电机教程中,您将学习如何使用Arduino UNO板和电位控制伺服电机。
    的头像 发表于 02-11 10:11 2773次阅读
    如何使用<b class='flag-5'>Arduino</b> UNO板和电位<b class='flag-5'>器</b><b class='flag-5'>控制</b>伺服电机

    对话:探讨电机驱动控制器市场的需求空间

    随着各应用领域对电机驱动控制器的需求越来越大,电机驱动控制器市场竞争激烈,对半导体器件的产品质量、供应服务等都提出了不同要求。当前,控制算法硬件化持续发展,但其有着怎样的市场优势?又有
    的头像 发表于 01-19 11:38 394次阅读
    对话:探讨电机驱动<b class='flag-5'>控制器</b>市场的需求空间

    Arduino制作循迹小车教程

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

    家用游戏机的控制器接口类型

    家用游戏机的控制器接口类型是游戏机和手柄之间进行连接和通信的关键部分。它决定了用户如何与游戏机进行交互,并直接影响到游戏体验的质量和多样性。
    的头像 发表于 01-04 11:23 1427次阅读