Raspberry Pi 系统
介绍
Edit this on GitHub
Raspberry Pi OS是基于Debian的免费操作系统,针对Raspberry Pi硬件进行了优化,是Raspberry Pi上正常使用的推荐操作系统。该操作系统附带超过 35,000 个软件包:预编译的软件与系统捆绑在一起,便于安装在 Raspberry Pi 上。 Raspberry Pi OS 正在积极开发中,重点是提高 Raspberry Pi 上尽可能多的 Debian 软件包的稳定性和性能。
更新和升级Raspberry Pi操作系统
Edit this on GitHub
保持你的Raspberry Pi版本最新是很重要的。第一个也可能是最重要的原因是安全性。运行Raspberry Pi OS的设备包含数百万行您所依赖的代码。随着时间的推移,这数百万行代码将暴露众所周知的漏洞,这些漏洞记录在 公开可用的数据库 中,这意味着它们很容易被利用。作为Raspberry Pi操作系统的用户,减轻这些攻击的唯一方法是保持您的软件最新,因为上游存储库会密切跟踪CVE并尝试快速减轻它们。
与第一个原因相关的第二个原因是,你在设备上运行的软件肯定有缺陷。有些bug是CVE,但是这些bug也可能会影响预期的功能,而与安全性无关。通过让你的软件保持最新,就降低了遇到这些错误的几率。
使用APT
管理软件安装、升级和删除的最简单方法是使用 Debian 的 apt
(高级打包工具)。要在Raspberry Pi操作系统中更新软件,您可以在终端窗口使用该工具
定期升级系统
APT 将Raspberry Pi上的软件源列表保存在一个文件中。在安装软件之前,应使用 apt update
更新软件包列表。继续打开终端窗口并键入 /etc/apt/sources.list
:
sudo apt update
接下来,使用以下命令将所有已安装的软件包升级到最新版本:
sudo apt full-upgrade
请注意, full-upgrade
优先于 upgrade
,因为它还会选择任何可能已进行的依赖关系更改。
一般来说,定期执行此操作将使您的安装与您正在使用的特定主要 Raspberry Pi OS 版本(例如 Buster)保持最新状态。它不会从一个主要版本更新到另一个主要版本,例如,Stretch to Buster 或 Buster 到Bullseye。
但是,Raspberry Pi OS 映像中偶尔会进行需要手动干预的更改,例如新引入的软件包。这些不会随升级一起安装,因为此命令仅更新已安装的软件包。
注意 内核和固件是作为 Debian 软件包安装,所以在使用上面的过程时也会得到更新。这些软件包很少更新,并且是在大量测试后更新的。
如果将现有 SD 卡移动到新的Raspberry Pi型号(例如Raspberry PiZero 2 W),您可能还需要先使用上述说明更新内核和固件。
空间不足
运行 sudo apt full-upgrade
时,会显示将下载多少数据占用SD卡上多少空间。用 df -h
检查您是否有足够的可用磁盘空间,apt
不会主动执行此操作。另请注意,下载的软件包文件( .deb
文件)保存在 /var/cache/apt/archives
中。您可以使用 sudo apt clean
删除这些内容以释放空间(在较旧版本中使用`sudo apt-get clean`)。
从以前的操作系统版本升级
Warning
|
升级现有映像是可能的,但不能保证在任何情况下都能正常工作,我们不建议这样做。如果您确实希望尝试升级操作系统版本,我们强烈建议您先进行备份 — 对于更新失败造成的数据丢失,我们不承担任何责任。 最新版本的Raspberry Pi OS基于 Debian Bullseye 。以前的版本是基于 Buster 的。如果要执行从 Buster 到 Bullseye 的就地升级(并且您知道其中的风险),请参阅 论坛中的说明。 |
搜索软件
您可以使用以下命令在存档中搜索具有给定关键字的包:apt-cache search
:
apt-cache search locomotive
sl - Correct you if you type `sl' by mistake
在安装软件包之前,您可以使用 apt-cache show
命令查看有关软件包的详细信息
apt-cache show sl
Package: sl
Version: 3.03-17
Architecture: armhf
Maintainer: Hiroyuki Yamamoto <yama1066@gmail.com>
Installed-Size: 114
Depends: libc6 (>= 2.4), libncurses5 (>= 5.5-5~), libtinfo5
Homepage: http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/index_e.html
Priority: optional
Section: games
Filename: pool/main/s/sl/sl_3.03-17_armhf.deb
Size: 26246
SHA256: 42dea9d7c618af8fe9f3c810b3d551102832bf217a5bcdba310f119f62117dfb
SHA1: b08039acccecd721fc3e6faf264fe59e56118e74
MD5sum: 450b21cc998dc9026313f72b4bd9807b
Description: Correct you if you type `sl' by mistake
Sl is a program that can display animations aimed to correct you
if you type 'sl' by mistake.
SL stands for Steam Locomotive.
使用 rpi-update
rpi-update
是一个命令行应用程序,可将Raspberry Pi操作系统内核和 VideoCore 固件更新到最新的预发布版本。
Warning
|
软件的预发布版本不保证正常工作。除非Raspberry Pi工程师建议,否则您不应在任何系统上使用 rpi-update 。它可能会使您的系统不可靠甚至完全损坏。它不应用作任何常规更新过程的一部分。
|
该 rpi-update
脚本最初由Hexxeh编写,但现在由Raspberry Pi工程师支持。脚本源位于 rpi-update存储库中。
它的作用
rpi-update
将下载Linux内核的最新预发布版本,其匹配的模块,设备树文件以及最新版本的VideoCore固件。然后,它会将这些文件安装到 SD 卡上的相关位置,覆盖任何以前的版本。
rpi-update使用的所有源数据都来自 rpi-firmware存储库。此存储库仅包含来自 官方固件存储库的数据子集,因为并不需要该存储库中的所有数据。
运行 rpi-update
如果您确定需要使用 rpi-update
,建议先备份当前系统,因为运行 rpi-update
可能会导致系统无法启动。
rpi-update
需要以根用户身份运行。更新完成后,您将需要重新启动。
sudo rpi-update sudo reboot
它在 rpi 更新存储库 中记录了许多选项。
播放音频和视频
Edit this on GitHub
Warning
|
以下文档涉及Raspberry Pi OS Buster和早期版本。OMXPlayer 已在 最新的操作系统 版本中弃用。如果您正在使用Bullseye,VLC现在是推荐的替代方案。 |
在Raspberry Pi上播放音频和视频的最简单方法是使用已安装的OMXPlayer应用程序。
这是硬件加速的,可以播放许多流行的音频和视频文件格式。OMXPlayer使用OpenMAX(omx
)硬件加速接口(API),这是Raspberry Pi官方支持的媒体API。OMXPlayer由Kodi项目的Edgar Hucek开发。
OMXPlayer应用程序
最简单的命令行是 omxplayer <name of media file>
. 媒体文件可以是音频和/或视频。对于以下示例,我们使用了包含在标准Raspberry Pi操作系统中的 H264 视频文件。
omxplayer /opt/vc/src/hello_pi/hello_video/test.h264
默认情况下,音频将发送到模拟端口。如果您使用的是带有扬声器的配备HDMI的显示设备,则需要告诉omxplayer通过HDMI链路发送音频信号。
omxplayer --adev hdmi /opt/vc/src/hello_pi/hello_video/test.h264
显示视频时,整个显示器将用作输出。您可以使用窗口选项指定希望视频位于显示的哪个部分。
omxplayer --win 0,0,640,480 /opt/vc/src/hello_pi/hello_video/test.h264
您还可以指定要显示视频的哪个部分:这称为裁剪窗口。视频的这一部分将放大以匹配显示,除非您还使用窗口选项。
omxplayer --crop 100,100,300,300 /opt/vc/src/hello_pi/hello_video/test.h264
如果您使用的是 Raspberry Pi触摸屏, 并且想要将其用于视频输出,请使用显示选项指定要使用的显示器。 使用n为5是HDMI ,n为4是触摸屏。使用Raspberry Pi4,您有两种HDMI输出选项。 对于 n
为2是HDMI0,对于 n
为7是HDMI1。
omxplayer --display n /opt/vc/src/hello_pi/hello_video/test.h264
如何播放音频
要播放 .MP3
文件,请使用以下 cd
命令导航到 .mp3
终端中文件的位置,然后键入以下命令:
omxplayer example.mp3
这将通过显示器的内置扬声器或通过耳机插孔连接的耳机播放音频文件 example.mp3
。
如果您需要示例文件,可以使用以下命令从此处下载一个:
wget https://raw.githubusercontent.com/raspberrypilearning/burping-jelly-baby/master/data/la.mp3 -O example.mp3 --no-check-certificate
如果您听不到任何声音,请确保您的耳机或扬声器已正确连接。请注意,omxplayer 不使用 ALSA,因此需要通过`raspi-config` 或 amixer
忽略 音频配置。
如果 omxplayer 自动检测正确的音频输出设备失败,您可以使用以下方法强制通过 HDMI 输出:
omxplayer -o hdmi example.mp3
或者,您可以使用以下命令通过耳机插孔强制输出:
omxplayer -o local example.mp3
您甚至可以通过以下方式通过耳机插孔和HDMI强制输出:
omxplayer -o both example.mp3
如何播放视频
要播放视频,请使用cd导航到终端中视频文件的位置,然后键入以下命令:
omxplayer example.mp4
这将全屏播放example.mp4。点击 Ctrl + C
退出
在Raspberry Pi 4 上,已删除对 MPEG2 和 VC-1 编解码器的硬件支持,因此我们建议使用 VLC 应用程序,该应用程序在软件中支持这些格式。此外,VLC 还支持 H264 和新的 HEVC 编解码器。
示例视频
您可在Raspberry Pi上找到动画电影《Big Buck Bunny》的视频样本。要播放它,请在终端窗口中输入以下命令:
omxplayer /opt/vc/src/hello_pi/hello_video/test.h264
在Raspberry Pi 4 上,对 H264 文件使用以下命令:
omxplayer /opt/vc/src/hello_pi/hello_video/test.h264
或用于 H264、VC1 或 MPEG2
vlc /opt/vc/src/hello_pi/hello_video/test.h264
使用VLC时,您可以通过封装原始H264流(例如来自Raspberry Pi相机模块的流)来提高回放性能。使用`ffmpeg` 很容易做到这一点。播放也得到改善,如果VLC运行全屏;从用户界面中选择fullscreen,或者可以在 vlc
命令行中添加 --fullscreen
项。
此示例命令转换 video.h264
为容器化的 video.mp4
以 30 fps
ffmpeg -r 30 -i video.h264 -c:v copy video.mp4
播放期间的选项
播放期间有许多选项可用,通过按适当的键来操作。并非所有选项在所有文件上都可用。可以使用 omxplayer --keys
显示键绑定列表:
1 decrease speed 2 increase speed < rewind > fast forward z show info j previous audio stream k next audio stream i previous chapter o next chapter n previous subtitle stream m next subtitle stream s toggle subtitles w show subtitles x hide subtitles d decrease subtitle delay (- 250 ms) f increase subtitle delay (+ 250 ms) q exit omxplayer p / space pause/resume - decrease volume + / = increase volume left arrow seek -30 seconds right arrow seek +30 seconds down arrow seek -600 seconds up arrow seek +600 seconds
后台播放
如果在没有tty(用户输入)的情况下在后台运行 omxplayer
将立即关闭,因此要成功运行,您需要使用 --no-keys
选项告诉 omxplayer
不需要任何用户输入。
omxplayer --no-keys example.mp3 &
在命令末尾添加 &
在后台运行。然后,可以使用该 jobs
命令检查此后台作业的状态。默认情况下,工作将在`omxplayer`播放完成后完成,但如有需要,您可以随时使用 kill
命令停止它。
$ jobs
[1]- Running omxplayer --no-keys example.mp3 &
$ kill %1
$
[1]- Terminated omxplayer --no-keys example.mp3 &
使用USB网络摄像头
Edit this on GitHub
您可以使用标准 USB 网络摄像头在Raspberry Pi上拍摄照片和视频,而不是使用 Raspberry Pi 相机模块。
Note
|
摄像头模块的质量和可配置性远远优于标准 USB 网络摄像头。 |
首先,安装 fswebcam
软件包:
sudo apt install fswebcam
如果您未使用默认用户帐户 pi
,则需要将用户名添加到 video
组中,否则您将看到 'permission denied' 错误。
sudo usermod -a -G video <username>
若要检查是否已将用户正确添加到组中,请使用 groups
命令。
基础用法
输入 fswebcam
命令,后跟文件名,将使用网络摄像头拍摄照片,并保存到指定的文件名:
fswebcam image.jpg
此命令将显示以下信息:
--- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. Adjusting resolution from 384x288 to 352x288. --- Capturing frame... Corrupt JPEG data: 2 extraneous bytes before marker 0xd4 Captured frame in 0.00 seconds. --- Processing captured image... Writing JPEG image to 'image.jpg'.
Note
|
使用小的默认分辨率,会显示时间戳的横幅。 |
此示例中使用的网络摄像头的分辨率为 1280 x 720
,要指定我希望以何种分辨率拍摄图像,请使用以下 -r
标志:
fswebcam -r 1280x720 image2.jpg
此命令将显示以下信息:
--- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. --- Capturing frame... Corrupt JPEG data: 1 extraneous bytes before marker 0xd5 Captured frame in 0.00 seconds. --- Processing captured image... Writing JPEG image to 'image2.jpg'.
网络摄像头以全分辨率拍摄的照片,并显示横幅。
删除横幅
现在添加 --no-banner
标志:
fswebcam -r 1280x720 --no-banner image3.jpg
其中显示以下信息:
--- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. --- Capturing frame... Corrupt JPEG data: 2 extraneous bytes before marker 0xd6 Captured frame in 0.00 seconds. --- Processing captured image... Disabling banner. Writing JPEG image to 'image3.jpg'.
现在,照片以全分辨率拍摄,没有横幅
自动执行图像捕获
您可以编写一个使用网络摄像头拍照的 Bash 脚本。下面的脚本将图像保存在目 /home/pi/webcam
中,因此首先使用以下命令创建 webcam
子目录:
mkdir webcam
若要创建脚本,请打开所选编辑器并编写以下示例代码:
#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H%M")
fswebcam -r 1280x720 --no-banner /home/pi/webcam/$DATE.jpg
此脚本将拍摄照片并使用时间戳命名文件。假设我们将其保存为 webcam.sh
,我们将首先使文件可执行:
chmod +x webcam.sh
然后运行:
./webcam.sh
这将运行文件中的命令并给出通常的输出:
--- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. --- Capturing frame... Corrupt JPEG data: 2 extraneous bytes before marker 0xd6 Captured frame in 0.00 seconds. --- Processing captured image... Disabling banner. Writing JPEG image to '/home/pi/webcam/2013-06-07_2338.jpg'.
有用的实用程序
Edit this on GitHub
有几个有用的命令行
tvservice
tvservice
是一个命令行应用程序,用于获取和设置有关显示器的信息,主要针对HDMI视频和音频。
键入 tvservice
本身将显示可用命令行选项的列表。
-o, --off
关闭显示器输出。
Note
|
使用此命令关闭输出电源也会破坏与显示器关联的任何帧缓冲器/dispmanx 层。这些不会在随后开机时重新建立,因此会导致空白屏幕。 |
更好的选择是使用 vcgencmd display_power 选项,因为这将保留任何帧缓冲,因此当显示器重新打开电源时,将返回到之前的开机状态。
-e, --explicit="Group Mode Drive"
使用指定的设置打开HDMI
组可以是 CEA
, DMT
, CEA_3D_SBS
, CEA_3D_TB
, CEA_3D_FP
, CEA_3D_FS
之一。
模式是从 -m, --modes
选项返回的模式之一。
驱动器可以是 HDMI
, DVI
之一。
vcgencmd
`vcgencmd` 工具用于从Raspberry Pi上的VideoCore GPU输出信息。您可以在 https://github.com/raspberrypi/userland/tree/master/host_applications/linux/apps/gencmd[Github].上找到 `vcgencmd` 实用程序的源代码。 要获取支持的所有 `vcgencmd` 命令的列表,请使用 `vcgencmd commands`下面列出了一些有用的命令及其必需的参数。
get_camera
显示Raspberry Pi相机的启用和检测状态: 1
表示是, 0
表示否。虽然除缩减版本外的所有固件都支持相机,但需要使用 raspi-config. 启用此支持。
get_throttled
返回系统的受限制状态。这是一个位模式 - a正在设置的位表示以下含义:
位 | 十六进制值 | 意义 |
---|---|---|
0 |
0x1 |
检测到欠压 |
1 |
0x2 |
Arm频率上限 |
2 |
0x4 |
当前已限制 |
3 |
0x8 |
软件温度限制激活 |
16 |
0x10000 |
检测到低电压 |
17 |
0x20000 |
检测到arm频率达到上限 |
18 |
0x40000 |
限制 |
19 |
0x80000 |
软件温度限制中 |
measure_clock [clock]
这将返回指定时钟的当前频率。选项包括:
clock | 描述 |
---|---|
arm |
ARM 核心 |
core |
GPU 核心 |
h264 |
H.264 block |
isp |
图像传感器管道 |
v3d |
3D 块 |
uart |
UART |
pwm |
PWM 模块(模拟音频输出) |
emmc |
SD卡接口 |
pixel |
像素 |
vec |
模拟视频编码器 |
hdmi |
HDMI |
dpi |
显示并行接口 |
如 vcgencmd measure_clock arm
measure_volts [block]
显示特定模块使用的当前电压。
block | 描述 |
---|---|
core |
VC4 内核电压 |
sdram_c |
SDRAM 核心电压 |
sdram_i |
SDRAM I/O 电压 |
sdram_p |
SDRAM物理电压 |
otp_dump
显示 SoC 内 OTP(一次性可编程)存储器的内容。这些是 32 位值,索引范围为 8 到 64。有关更多详细信息,请参阅 OTP 页面。
get_config [configuration item|int|str]
显示指定配置设置的值:或者,指定 int
(整数)或 str
(字符串)以查看给定类型的所有配置项。例如:
vcgencmd get_config total_mem
返回设备上的总内存(以 MB 为单位)。
get_mem type
报告 ARM 和 GPU 可寻址的内存量。vcgencmd get_mem arm
显示 ARM 可寻址内存的使用量; vcgencmd get_mem gpu
以显示 GPU 可寻址内存的使用量。请注意,在内存超过 1GB 的设备上,arm
参数将始终返回 1GB 减去 gpu
内存值,因为 GPU 固件仅知道前 1GB 内存。要获取设备上总内存的准确报告,请参阅配置项 total_mem
的 get_config
部分。
codec_enabled [type]
报告是否启用了指定的编解码器类型。可能的类型选项是AGIF,FLAC,H263,H264,MJPA,MJPB,MJPG,MPG2,MPG4,MVC0,PCM,THRA,VORB,VP6,VP8,WMV9,WVC1。突出显示的那些目前需要付费许可证(有关更多信息,请参阅 config.txt部分 ),但在 Raspberry Pi 4 和 400 上除外,在这些硬件编解码器中,这些硬件编解码器优先于软件解码被禁用,软件解码不需要许可证。请注意,由于Raspberry Pi 4和400上的H.265硬件块不是VideoCore GPU的一部分,因此无法通过此命令访问其状态。
hdmi_timings
显示当前的 HDMI 设置计时。有关返回值的详细信息,请参阅 视频配置。
display_power [0 | 1 | -1] [display]
显示当前显示器电源状态,或设置显示电源状态。 vcgencmd display_power 0
将关闭当前显示器的电源。vcgencmd display_power 1
将打开显示器的电源。如果未设置任何参数,则将显示当前电源状态。最后一个参数是可选的显示 ID,由tvservice -l返回或从下表返回,它允许打开或关闭特定显示器。请注意,对于 7 英寸 Raspberry Pi 触摸显示屏,这只是打开和关闭背光。触摸功能继续正常运行。
vcgencmd display_power 0 7
将关闭电源以显示 ID 7,即Raspberry Pi 4上的 HDMI 1。
Display | ID |
---|---|
主LCD |
0 |
辅助LCD |
1 |
HDMI 0 |
2 |
复合 |
3 |
HDMI 1 |
7 |
To determine if a specific display ID is on or off, use -1 as the first parameter.
vcgencmd display_power -1 7
将会返回0 如果显示ID7 处于关闭状态;如果显示 ID 7 打开,则返回 1;如果显示 ID 7 处于未知状态(例如未检测到),则返回 -1。
vcdbg
vcdbg
是一个应用程序,用于帮助从在ARM上运行的Linux调试VideoCore GPU。它需要以根用户身份运行。此应用程序主要用于Raspberry Pi工程师,尽管有一些命令一般用户可能会发现有用。
sudo vcdbg help
将给出可用命令的列表。
Note
|
仅列出了最终用户使用的选项。 |
log
从指定的子系统转储日志。可能的选项包括:
log | 描述 |
---|---|
msg |
打印出消息日志 |
assert |
打印出断言日志 |
ex |
打印出异常日志 |
info |
从日志记录标头中打印出信息 |
level |
设置指定类别的 VCOS 日志记录级别: n|e|w|i|t |
list |
列出 VCOS 日志记录级别 |
例如,要打印出消息日志的当前内容:
vcdbg log msg
GPIO 和 40-Pin引脚
Edit this on GitHub
Raspberry Pi的一个强大功能是电路板顶部边缘的一排GPIO(通用输入/输出)引脚。当前所有的Raspberry Pi板上都有一个40-Pin GPIO接头(在Raspberry Pi Zero、Raspberry Pi Zero W和Raspberry Pi Zero 2 W上未安装)。在Raspberry Pi 1 Model B+ (2014)之前,电路板包含一个26-Pin接头。所有主板上的GPIO接头(包括Raspberry Pi 400)的引脚间距为0.1英寸(2.54毫米)。
任何GPIO引脚都可以被配置(在软件中)为输入或输出引脚,并用于多种用途。
Note
|
GPIO 引脚的编号不按数字顺序排列;板上的GPIO 引脚 0 和 1(物理引脚 27 和 28)预留用于高级用途(见下文)。 |
输入
指定为输入引脚的GPIO引脚可以读取为高电平(3.3V)或低电平(0V)。使用内部上拉或下拉电阻器可以更容易地做到这一点。引脚 GPIO2 和 GPIO3 具有固定的上拉电阻,其他引脚可以在软件中进行配置。
更多
除了可以作为输入和输出外,GPIO引脚还可用于各种替代功能,有些功能在所有引脚上可用,有些功能只在特定引脚上可用。
-
PWM (脉宽调制)
-
所有引脚均支持软件 PWM
-
GPIO12、GPIO13、GPIO18和GPIO19支持硬件 PWM
-
-
SPI
-
SPI0: MOSI (GPIO10);MISO(GPIO9);SCLK (GPIO11);CE0 (GPIO8), CE1 (GPIO7)
-
SPI1: MOSI (GPIO20);MISO GPIO19);SCLK (GPIO21);CE0 (GPIO18);CE1 (GPIO17);CE2 (GPIO16)
-
-
I2C
-
数据: (GPIO2); 时钟 (GPIO3)
-
EEPROM 数据: (GPIO0); EEPROM 时钟 (GPIO1)
-
-
串口
-
TX (GPIO14); RX (GPIO15)
-
GPIO 引脚排列
可以通过打开终端命令窗口并运行pinout命令来访问Raspberry Pi上的便捷参考。此工具由 GPIO Zero Python库提供,该库默认安装在Raspberry Pi OS中。
有关 GPIO 引脚的高级功能的更多详细信息,请参见 gadgetoid 的 交互式引脚排列图。
Warning
|
虽然将简单组件连接到 GPIO 引脚是安全的,但请务必小心连接方式。LED中具有电阻来限制通过组件的电流,请勿将 5V 用在3.3V组件上。请勿将电机直接连接到 GPIO引脚,而应使用 H 桥电路或电机控制器板。 |
权限
如果需要使用GPIO端口,则用户必须是 gpio
组的成员。用户 pi
默认为GPIO成员,其他用户需要被添加为GPIO成员。
sudo usermod -a -G gpio <username>
Python 中的 GPIO
运用 GPIO Zero ,可以容易地通过Python 控制 GPIO 设备。 该库的完整文档位于 gpiozero.readthedocs.io 中。
LED
控制连接到 GPIO17 的 LED,可以使用以下命令:
from gpiozero import LED
from time import sleep
led = LED(17)
while True:
led.on()
sleep(1)
led.off()
sleep(1)
在像Thonny的IDE中运行以上命令,LED将反复闪烁。 LED状态包括on()、off()、toggle()和blink()。
按键
如果要读取连接到 GPIO2 的按键的状态,可以使用以下命令:
from gpiozero import Button
from time import sleep
button = Button(2)
while True:
if button.is_pressed:
print("Pressed")
else:
print("Released")
sleep(1)
按键功能包括属性 is_pressed
和 is_held
; 回调 when_pressed
、 when_released
和 when_held
; 方法 wait_for_press()
和 wait_for_release
。
按键 + LED指示灯
要将LED和按键连在一起,可以使用以下命令:
from gpiozero import LED, Button
led = LED(17)
button = Button(2)
while True:
if button.is_pressed:
led.on()
else:
led.off()
或者:
from gpiozero import LED, Button
led = LED(17)
button = Button(2)
while True:
button.wait_for_press()
led.on()
button.wait_for_release()
led.off()
或者:
from gpiozero import LED, Button
led = LED(17)
button = Button(2)
button.when_pressed = led.on
button.when_released = led.off