跳转到内容

维基少年:树莓派/树莓派尖叫果冻宝贝教程

来自维基教科书,开放世界中的开放书籍

在本教程中,您将制作一个尖叫的果冻宝贝!或者,如果您住在英国或澳大利亚以外的地方,可以使用软糖熊。

您的导师应该已经为您准备了树莓派的 SD 卡。如果没有,请阅读最后一节“给导师”。

Things that appear on the screen or need to be typed in are written like this.

在每行的末尾,您通常需要按 ↵ Enter 键。

登录并启动 IDLE

[编辑 | 编辑源代码]

当您打开树莓派时,几秒钟后它会要求您登录。您需要键入用户名 (pi),然后按 ↵ Enter 键,然后输入密码 (raspberry),然后按 ↵ Enter 键。

raspberrypi login: pi
password: raspberry

请注意,输入密码时,密码不会显示在屏幕上。

从现在开始,您应该假设您始终需要在每行的末尾按 ↵ Enter 键。

登录后,屏幕会变黑几秒钟,然后桌面应该会显示出来,您可以用鼠标移动指针。如果不行,输入

startx

找到“IDLE”图标并双击它。如果您难以双击,您可以右键单击它并选择“打开”。

您需要的是 IDLE,而不是 IDLE3。

IDLE 是一个用于编写程序的程序,使用 Python 版本 2 编程语言。您对 Python 越加精通,您将使用的功能就越有用。但是,可以使用文本编辑器(如 nano)来编写程序,而无需 IDLE。还有其他版本的本教程使用 nano 代替 IDLE。

IDLE3 用于 Python 的版本 3。本教程是为版本 2 编写的。

你的第一个程序 - Hello World

[编辑 | 编辑源代码]

输入以下程序

print "Hello World"

使用“文件”菜单、“保存”保存它,然后双击进入 python 文件夹,然后进入 jellybaby 文件夹。将程序保存为

jellybaby.py

在桌面上,双击 LX Terminal 图标。将出现一个新的黑色窗口。

通过输入以下内容进入 python/jellybaby 文件夹

cd python/jellybaby

通过输入以下内容查看此文件夹中的文件

ls

您应该看到您的 jellybaby.py 程序,一些 .wav 声音文件(这些是我们稍后将使用的尖叫声)和一个 examples 目录(如果您想作弊,您将在那里找到一个完全工作的尖叫果冻宝贝程序!)。

现在运行您的程序

sudo python jellybaby.py

计算机应该响应

Hello World

让我们快速了解一下我们在那做了什么

什么是 sudo

[编辑 | 编辑源代码]

sudo 表示“超级用户执行”。对于许多程序来说,这并不重要,但我们很快就会使用连接到树莓派 GPIO 端口(通用输入输出)的电子设备,您需要成为超级用户才能这样做。

不利的一面是,以超级用户身份运行程序允许您执行可能会破坏计算机的操作 - 超级用户就像一个无所不能的超级英雄。由于树莓派是一款非常便宜的计算机,因此这并不重要,但在其他昂贵的计算机上,您可能需要对 sudo 更小心。

什么是 python

[编辑 | 编辑源代码]

python 指示计算机运行用 Python 编程语言编写的程序。jellybaby.py 是您的程序的名称。

关闭树莓派

[编辑 | 编辑源代码]

在连接电线到树莓派之前,你应该先关闭树莓派。请确保你在拔掉电源之前,安全地关闭树莓派。

你可以使用桌面右下角的红色电源图标,或者在 LXTerminal 窗口(黑色窗口)中输入

sudo shutdown –h now
  • sudo 是超级用户命令,再次确认。
  • shutdown 表示关机。
  • –h 表示停止(与 –r 表示重启相反)
  • now 表示现在!(如果还有其他人通过网络使用你的树莓派,你可以说 +5 而不是 now,这样可以发出五分钟的警告)。

将跳线连接到 GPIO 引脚

[编辑 | 编辑源代码]

引脚分为两排。偶数引脚位于板的边缘,奇数引脚位于另一排。你需要从左侧的 1 开始以 2 为单位计数,所以计数为 1、3、5、7 等等。

识别 引脚 25(GND)很容易出错,尤其是在有 40 个引脚的 Raspberry Pi “Plus” 型号上!在旧的 Model B 和 Model A 型号上,只有 26 个引脚,识别起来就容易多了 – 引脚 25(GND)是位于右侧末端的引脚。

步骤 1:等待树莓派自动关机,然后拔掉电源线。

步骤 2:将一个金属回形针展开,使其变成一根长而直的导线。

步骤 3:取一根母对母跳线,将展开的回形针插入一端。

步骤 4:重复此操作两次,这样你就有两根导线,两端都插入了展开的回形针。较大的回形针可能难以插入。你的导师可能已经帮你插入了,或者你可以请你的导师用钳子帮忙插入。

步骤 5:现在将跳线的另一端分别连接到 Raspberry PI 的 GPIO 引脚的 引脚 3(I2C1 SDA)引脚 25(GND) 上。

GPIO 程序 – 版本 1

[编辑 | 编辑源代码]

将电源线插回,等待树莓派开机,然后登录(pi / raspberry;如果你的桌面没有自动启动,别忘了 startx)。

从桌面启动 IDLE(双击),然后通过转到“文件”菜单、“最近打开的文件”并选择 jellybaby.py 来加载你的旧程序。

更改程序,使其读取

import time
import RPi.GPIO as GPIO
import os
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(3,GPIO.IN)

print "Hello World"

while True:
    if GPIO.input(3) == False:
    print "Ouch!"
    time.sleep(1)

所有大写字母都非常重要。你需要确保所有大写字母都确实是大写字母,所有小写字母都确实是小写字母。这被称为区分大小写。

whileif 行下的空格也很重要。你需要按下 空格键 来确保它们对齐。这些缩进被称为代码块。代码块可以重复,程序也可以决定运行或跳过代码块。我们使用四个空格来缩进每个代码块;一些程序员更喜欢使用两个空格或其他数字。

import 行允许我们在我们的程序中使用其他人的小程序。这些小程序被称为库。time 库允许我们告诉计算机等待(sleep)。GPIO 库允许我们使用 GPIO 引脚。os 库允许我们调用其他程序,例如音乐播放器,但我们目前没有使用它。

while 告诉我们重复一个代码块。True 告诉计算机始终执行某些操作。

if 提问。要问的问题是两根导线是否接触;引脚 3(I2C1 SDA) 是否连接到电气接地?将输入引脚连接到接地会导致值 False

注意使用两个等号 ==。一个等号用于设置值,例如 a=3,这意味着每次计算机看到 a 时,它都知道它的值为 3。两个等号用于比较两个事物。

time.sleep(1) 表示等待 1 秒。

保存程序,然后从桌面启动 LXTerminal(双击),然后输入

cd python/jellybaby
sudo python jellybaby

程序将打印 Hello World!然后它将等待。

将回形针导线连接在一起。你应该会看到它显示

Ouch!

松开导线,等待几秒钟,然后再次将导线连接在一起。每次都应该会显示 Ouch!

如果它不起作用,请检查你的程序是否正确输入,检查你是否保存了它,并检查你的导线是否被任何东西覆盖,可能阻止了电流流动。

当你玩够了的时候,按住 CTRL 键,然后按 C 来停止程序。这被称为“中断”或“键盘中断” – 你是在要求计算机暂停,并使用键盘中断程序。有时你会看到 Ctrl 和 C 写成 CTRL-C 甚至 ^C。你不需要使用 Shift 键 – C 实际上是小写 c。

GPIO 程序 – 版本 2

[span>编辑 | 编辑源代码]

让我们更改程序,使其发出声音,而不是仅仅在屏幕上打印“Ouch!”。更改

print "Ouch!"

…为

os.system('omxplayer scream-c.wav')

确保扬声器已连接,已打开,并且音量至少开到一半(一些扬声器没有开/关按钮或音量控制)。

转到 LXTerminal 窗口,再次运行程序。

将导线连接在一起,你应该会听到尖叫声!

连接果冻宝贝

[编辑 | 编辑源代码]

取一个果冻宝贝,将导线插入其中。

你需要让它们在果冻宝贝内部交叉,但不要完全接触。

现在,当你用力按下果冻宝贝时,它就会尖叫!

你可能需要用力按下 – 足够用力地穿过果冻宝贝的粘稠中间部分。

用力按下意味着果冻宝贝可能在三到四次按下后就变得毫无用处。如果你不是糖尿病患者,也不对果冻宝贝过敏,你可以在果冻宝贝被压扁后吃掉它们!

更多乐趣

[编辑 | 编辑源代码]

你的程序为音符 C 播放尖叫声。还有音符 D 和 E 的尖叫声文件。尝试更改你的程序以使用不同的音符。看看你和你的同学是否能演奏一首曲子,例如“小羊羔” (EDCDEEE,DDD,EEE,EDCDEEE,EDDEDC)。

找到 GPIO 引脚列表 (http://raspi.tv/download/RPi.GPIO-Cheat-Sheet.pdf)。你能连接更多电线,让一台树莓派同时连接到两三个果冻宝贝,演奏不同的音符吗?

面向导师

[编辑 | 编辑源代码]

设备 – 每个工作站

[编辑 | 编辑源代码]
  • ×1 树莓派,任何型号,带显示器、鼠标和键盘
  • ×1 SD 或 Micro SD 卡,装有最新版本的 Raspbian 操作系统
  • ×1 扬声器或一对扬声器,有源(可充电移动 MP3 扬声器可以,PC 扬声器也可以)
  • ×2 母对母 跳线 – 建议最小长度 20 厘米(约 8 英寸)
  • ×2 小金属回形针(不含塑料涂层)(如果你使用大回形针,你可能需要使用钳子将它们插入跳线)

多个果冻宝贝 – 每个工作站至少允许 6 个,但最好一次只发一个或两个!

了解你的学生中哪些是糖尿病患者或对果冻宝贝过敏。

先决条件

[编辑 | 编辑源代码]

下载并解压缩文件夹结构、尖叫声样本和示例程序。为此,从连接互联网的 Raspberry Pi 上登录(pi / raspberry)并执行

cd
wget http://www.cotswoldjam.org/downloads/2014-11/jellybaby.zip
unzip jellybaby.zip

这将创建

~/python/
~/python/jellybaby/
~/python/jellybaby/scream-c.wav
~/python/jellybaby/scream-d.wav
~/python/jellybaby/scream-e.wav
~/python/jellybaby/example/
~/python/jellybaby/example/jellybaby.py

请注意,有一个关于 GPIO 引脚的优秀图表,可在此处获得:http://raspi.tv/download/RPi.GPIO-Cheat-Sheet.pdf

作者:Cotswold Raspberry Jam 的 Andrew Oakley,www.cotswoldjam.org,CC-BY-SA

最新版本始终位于:http://www.cotswoldjam.org/tutorials/

基于“让果冻宝宝尖叫!”,由树莓派基金会提供,CC-BY-SA http://www.raspberrypi.org/learning/screaming-jellybaby/ https://creativecommons.org/licenses/by-sa/4.0/

本教程的原始 PDF 可在维基共享资源上获得:Jellybaby-tutorial.pdf

jellybaby.py

[编辑 | 编辑源代码]
import time
import RPi.GPIO as GPIO
import os
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(3,GPIO.IN)
print "Hello World"
while True:
    if GPIO.input(3) == False:
        os.system('omxplayer scream-c.wav')
        time.sleep(1)

scream-c.wav

[编辑 | 编辑源代码]





scream-d.wav

[编辑 | 编辑源代码]





scream-e.wav

[编辑 | 编辑源代码]





华夏公益教科书