一个初学者的指南,以覆盆子皮与西蒙的游戏垫板

学习电路建设和Python编码的基础知识与这个初学者树莓Pi游戏教程。...

一个试验板允许你创建电路,而不必焊接任何东西。这是一个伟大的工具,以电子实验,但它可以恐吓。有一个项目可以帮助你在学习的同时保持动力。

Simon

有几个简单的游戏,使伟大的树莓皮初学者项目。一个很容易让你开始的游戏是西蒙。西蒙是一个记忆游戏,其中一系列的灯光闪烁随机顺序,玩家必须记住顺序。随着玩家的进步,序列的长度也会增加。

所需组件

要开始,您需要以下内容:

  1. 树莓派
  2. 一张闪着Raspbian OS的microSD卡
  3. 4个不同颜色的LED
  4. 4个电阻器(220欧姆到1千欧姆)
  5. 4个按钮
  6. 1 x试验板
  7. 连接所有东西的跨接电缆

你可以在这个项目中使用任何树莓圆周率,但圆周率零模型不连接到面包板没有一些焊接容易。无论您使用哪种型号,您都需要电源、显示器、键盘和鼠标。

如果您以前从未设置过Raspberry Pi,您可以在Raspberry Pi初学者指南中学习如何为本教程做好准备。

在本教程中,您将编写Python代码,并且可以使用任何文本编辑器来编写它,但是您可能会发现代码编辑器更容易。Raspberry Pi操作系统上已经安装了几个,Thonny是为初学者设计的。无论您使用哪一个,您都需要能够保存并运行您的代码才能遵循本教程。

试板入门

如果您以前从未使用过试验板,您可能需要从阅读试验板教程开始。了解试验板的工作原理将有助于您了解如何创建电路。

Raspberry Pi有两行通用输入/输出(GPIO)引脚。这些引脚允许您连接组件到您的树莓圆周率。一些引脚发送信息,其他提供电源,一些接地你的电子设备。

GPIO Raspberry Pi

我们将开始添加一个LED灯到我们的实验板。如果你以前从未在实验板上使用过LED灯,你可能想读一本教程,更深入地解释它是如何工作的。

首先将GPIO引脚连接到主板。哪一个管脚无关紧要,只要它是GPIO管脚而不是电源或接地管脚。上面是GPIO引脚的图表,它将帮助您确定要使用哪个引脚。本教程使用管脚编号18,也标记为GPIO 24。

该引脚将提供一些电源的实验板,并允许覆盆子Pi与电路板上的组件进行通信。然后将Pi上的针脚6连接到试验板的接地导轨上。这将使电路板接地,并允许我们创建电路。

one led connected to raspberry pi

来自树莓的功率太高,无法直接连接LED。使用电阻器可以降低功率水平并防止LED烧坏。将电阻器的一侧连接到GPIO引脚**的同一条线路上,另一端连接到试验板的另一侧。然后将LED的正极放在电阻器后面。LED的负极端可以直接连接到负极导轨上。最终结果应该如上图所示。彻底检查你的线路并打开Pi。LED应该亮起。

现在,你已经用你的树莓Pi做了一个电路,你可以用代码控制它。

使用python代码控制led

本教程将逐步介绍代码,但如果您想随时引用已完成的代码,可以在Pastebin上找到它。

现在,电源是到LED的,但我们要控制它何时打开和关闭。下面的Python代码将允许我们与董事会对话。

import RPi.GPIO as GPIOGPIO.setmode(GPIO.BOARD)GPIO.setwarnings(False)red = 18GPIO.setup(red, GPIO.OUT)GPIO.output(red, GPIO.LOW)

前几行就把事情安排好了。将导入Raspberry Pi GPIO库。as GPIO只是让我们参考RPi.GPIO文件作为GPIO来节省一点输入。GPIO引脚模式设置为BOARD。您不必使用此设置,但在GPIO行中按管脚顺序引用管脚会更容易。

最后,我们将警告设置为false。这将停止不必要的警告。

接下来的三条线控制LED。红色LED连接到GPIO引脚18。不用记住,变量red将存储位置。接下来,GPIO.setup设置告诉我们的程序它正在发送信息到红色的pin。最后,我们设定了GPIO.输出把红色的针打到低点。运行此程序时,指示灯将熄灭。要重新打开它,请切换GPIO.低至GPIO.高,然后再次运行程序。

保存代码,然后单击run查看它的运行情况。如果代码编辑器中没有run按钮,请保存它并运行python我的文件名.py在终端窗口。您需要首先导航到与新Python文件相同的目录。如果你不确定怎么做,请查看树莓皮备忘单。

添加多个led

为了创建游戏西蒙,我们需要四个不同颜色的灯光。设置红色LED的步骤与设置其他三个LED的步骤相同。您的接线应如下图所示:

four leds connected to raspberry pi

您的代码应该如下所示:

import RPi.GPIO as GPIOGPIO.setmode(GPIO.BOARD)GPIO.setwarnings(False)red = 18yellow = 22green = 24blue = 26GPIO.setup(red, GPIO.OUT)GPIO.setup(yellow, GPIO.OUT)GPIO.setup(green, GPIO.OUT)GPIO.setup(blue, GPIO.OUT)GPIO.output(red, GPIO.HIGH)GPIO.output(yellow, GPIO.HIGH)GPIO.output(green, GPIO.HIGH)GPIO.output(blue, GPIO.HIGH)

测试完LED后,设置GPIO.输出至GPIO.低把每一个都关掉。

尽管您使用的导线颜色无关紧要,但请尝试使用对您有意义的颜色,以帮助您更轻松地阅读电路板。例如,黑线常被用作地线。在这个电路中,您可能需要将导线的颜色与LED灯的颜色相匹配。

控制带按钮的LED

首先在你的电路板上添加一个按钮。该按钮将需要连接到地面和GPIO引脚。电路应该是这样的:

one button on board

要使按钮控制LED,我们需要添加到我们的代码。设置按钮与设置LED类似,只是GPIO引脚设置为输入,而不是输出。此代码还设置了Pi上的内部上拉电阻器,这是使按钮正常工作所必需的。

GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP)

现在我们需要检查按钮是否被按下的代码。

game = Truewhile game: redButtonState = GPIO.input(32) if redButtonState == 0: GPIO.output(red, GPIO.HIGH) time.sleep(1) GPIO.output(red, GPIO.LOW)

我们希望我们的程序不断检查按钮是否被按下,所以我们使用while循环。因为循环永远不会出错,所以它会一直运行并检查按钮,直到我们通过按停止按钮或使用键盘快捷键Ctrl+c手动结束程序。

接下来,为了更容易地引用按钮GPIO pin发送给我们的输入,我们将该信息保存在变量redButtonState中。如果我们的按钮输入变为0,我们就知道按钮被按下了。

如果按下按钮,红色LED将亮起。然后,一秒钟后,LED将熄灭。为了计时,我们使用时间。睡眠(1) 功能。要使其工作,您需要导入脚本顶部的时间库。

一个按钮工作后,您可以再添加三个,每个LED一个。您的代码应该如下所示:

import random import timeimport RPi.GPIO as GPIOGPIO.setmode (GPIO.BOARD)GPIO.setwarnings(False)red = 18yellow = 22green = 24blue = 26GPIO.setup(red, GPIO.OUT)GPIO.setup(yellow, GPIO.OUT)GPIO.setup(green, GPIO.OUT)GPIO.setup(blue, GPIO.OUT)GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) game = True while game: redButtonState = GPIO.input(32) if redButtonState == 0: GPIO.output(red, GPIO.HIGH) time.sleep(1) GPIO.output(red, GPIO.LOW) yellowButtonState = GPIO.input(36) if yellowButtonState == 0: GPIO.output(yellow, GPIO.HIGH) time.sleep(1) GPIO.output(yellow, GPIO.LOW) greenButtonState = GPIO.input(38) if greenButtonState == 0: GPIO.output(green, GPIO.HIGH) time.sleep(1) GPIO.output(green, GPIO.LOW) blueButtonState = GPIO.input(40) if blueButtonState == 0: GPIO.output(blue, GPIO.HIGH) time.sleep(1) GPIO.output(blue, GPIO.LOW)

你的董事会应该是这样的:

simon board complete

所有的电子设备现在都就位了。如果您有任何问题,请检查代码是否有任何错误。记住,如果你卡住了,你可以从Pastebin下载完整的代码!

创建游戏

这个项目已经涵盖了所有的基础知识,你需要知道开始使用一个实验板。但将这些技能转化为游戏将真正展示你的能力!

在西蒙,玩家看到一系列的灯光闪烁,必须记住模式。只需一盏灯就可以轻松启动。每一个关卡都会在图案中添加一个随机光,使游戏更加困难。

创建模式

这一步相当简单。一个阵列将保存我们的光模式。第二个阵列将存储我们的灯光的GPIO引脚。每一个游戏循环,一个新的随机光会被添加到阵列的末端。我们使用随机.randint()函数选择0到3之间的数字,表示4个LED。

pattern = []lights = [red, yellow, green, blue]while game: pattern.append(random.randint(0,3))

接下来,我们要点亮灯光来显示图案。

while game: pattern.append(random.randint(0,3)) for x in pattern: GPIO.output(lights[x], GPIO.HIGH) time.sleep(1) GPIO.output(lights[x], GPIO.LOW) time.sleep(0.5)

在两个灯光之间暂停是很重要的。这样可以更容易地看到相同的灯光是否在图案中连续使用。

获取播放器输入

接下来,游戏必须等待玩家猜测灯光的顺序。程序必须检查模式中的每个灯光,并等待播放器按下按钮。这需要嵌套循环:

for x in pattern: waitingForInput = True while waitingForInput: redButtonState = GPIO.input(32) yellowButtonState = GPIO.input(36) greenButtonState = GPIO.input(38) blueButtonState = GPIO.input(40) if redButtonState == 0: GPIO.output(red, GPIO.HIGH) waitingForInput = False time.sleep(1) GPIO.output(red, GPIO.LOW) if yellowButtonState == 0: GPIO.output(yellow, GPIO.HIGH) waitingForInput = False time.sleep(1) GPIO.output(yellow, GPIO.LOW) if greenButtonState == 0: GPIO.output(green, GPIO.HIGH) waitingForInput = False time.sleep(1) GPIO.output(green, GPIO.LOW) if blueButtonState == 0: GPIO.output(blue, GPIO.HIGH) waitingForInput = False time.sleep(1) GPIO.output(blue, GPIO.LOW)

上面的大部分代码都是重用我们编写的测试按钮的代码。

相关:Python成为未来编程语言的6个原因

检查播放器的输入

从这里,很容易检查玩家是否进入了正确的模式。每次他们按下一个按钮,游戏就可以检查这个按钮是否正确。为此,请为每个按钮输入添加另一个if语句:

if redButtonState == 0: GPIO.output(red, GPIO.HIGH) waitingForInput = False if x != 0: game = False time.sleep(1) GPIO.output(red, GPIO.LOW)

for循环中的变量x具有下一个灯光的编号。红色LED灯位于第一个位置,或数字0。如果玩家按下红色LED按钮时,我们有一个0在我们的模式,他们是对的!否则,他们就输了。将变量game设置为false将停止游戏循环并结束程序。

祝贺 你!你白手起家的创造了一个游戏!

创建一个游戏为这个项目添加了比添加LED和按钮更多的代码。向你的朋友和家人展示一个最终的项目,可以帮助你保持动力。

这个游戏相当简单。挑战自我,改进基本设计。如果玩家输了,灯可能会闪烁。也许你想挑战自己,为游戏添加声音。你的想象力是唯一的极限!

好吧,还有你要拿的硬件。

  • 发表于 2021-03-29 18:59
  • 阅读 ( 275 )
  • 分类:编程

你可能感兴趣的文章

9个很棒的树莓皮星球大战项目创意

...本文中,我们将介绍各种树莓皮星球大战建设。从简单的初学者项目到荒谬复杂的项目,这里肯定会有激发你创造力的东西! ...

  • 发布于 2021-03-12 02:42
  • 阅读 ( 374 )

9个最好的pi编程资源,把你的树莓pi使用

... Chin的refcard深入研究了Java编程。尽管如此,它仍然是初学者友好的。这个refcard涵盖了从设置到Java编程以及测试I/O库的所有内容。因此,带有Java和Raspberry Pi refcard的DZone IoT应用程序提供了全面的软件和硬件概述。DZone的IoT部...

  • 发布于 2021-03-14 03:57
  • 阅读 ( 235 )

安装recalbox在你的树莓皮复古游戏风格

... 如果你已经享受复古游戏乐趣的覆盆子皮与RetroPie,你可能想知道你为什么要切换到RecalBox。其实你不必这么做,但RecalBox提供了一种不同的做事方式。例如,它的启动速度更快,所以如果你急于开始玩,...

  • 发布于 2021-03-14 21:13
  • 阅读 ( 314 )

适合初学者的11个最佳树莓圆周率项目

... 这些Raspberry Pi初学者项目是对Pi的硬件和软件功能的一个很好的介绍。从其中一个开始,你马上就可以开始跑步了! ...

  • 发布于 2021-03-19 13:42
  • 阅读 ( 271 )

如何在树莓皮上玩点按式人渣冒险游戏

...及π0。相反,使用树莓皮2,3和4。在本文中,我们已经在覆盆子pi4上测试了ScummVM。 ...

  • 发布于 2021-03-19 21:48
  • 阅读 ( 229 )

树莓皮复古游戏:了解ROM,retropie,recalbox等

... 您也可以选择初学者工具包,其中包括您需要的大部分内容(保存键盘和鼠标)。 ...

  • 发布于 2021-03-20 04:30
  • 阅读 ( 585 )

6款最佳覆盆子皮智能魔镜项目

...。你可以买一个新的,但这是一个伟大的方式,以更新与覆盆子皮旧技术之一。如果你没有旧的显示器,你可以通过购买二手设备来节省一大笔钱。 ...

  • 发布于 2021-03-23 10:34
  • 阅读 ( 235 )

如何在树莓皮上玩几乎所有的电子游戏

... 你可能已经知道复古游戏与覆盆子皮的可能性。这是小电脑最流行的用途之一!虽然可以在每个平台上安装单个模拟器,但最好使用其中一个复古游戏套件,其中包括对所有模拟器的支持,包括MAME f...

  • 发布于 2021-03-24 06:46
  • 阅读 ( 267 )

如何在kodi上启用家长控制

...,如果所有这些听起来太复杂,请查看我们的完整的Kodi初学者指南,以及我们收集的最基本的Kodi技巧。 ...

  • 发布于 2021-03-24 09:06
  • 阅读 ( 412 )

如何编程树莓pi控制led灯

从树莓皮开始是一个令人兴奋的经历。对于初学者来说,开始编写代码和DIY电子产品从来都不是一件容易的事。 ...

  • 发布于 2021-03-24 09:16
  • 阅读 ( 281 )
wow25221
wow25221

0 篇文章