Raspberry Pi 是基于ARM体系结构处理器的主板,专为电子工程师和业余爱好者设计。PI是目前最受信任的项目开发平台之一。PI具有更高的处理器速度和1 GB RAM,可用于许多高端项目,例如图像处理和物联网。
对于执行任何重要项目,都需要了解PI的基本功能。 在这些教程中,我们将介绍Raspberry Pi的所有 基本功能。在每个教程中,我们将讨论PI的功能之一。在本“ Raspberry Pi教程系列”结束时 ,您将可以自己进行知名的项目。请阅读以下教程:
- Raspberry Pi入门
- Raspberry Pi配置
- LED闪烁
- Raspberry Pi按钮接口
- Raspberry Pi PWM生成
- 使用Raspberry Pi控制直流电机
- Raspberry Pi的步进电机控制
在本Raspberry Pi移位寄存器教程中,我们将与Pi进行移位寄存器接口。PI有26个GPIO引脚,但是当我们进行3D打印机之类的项目时,PI提供的输出引脚还不够。因此,我们需要更多的输出引脚,要向PI添加更多的输出引脚,我们需要添加移位寄存器Chip。移位寄存器芯片串行地从PI板上获取数据并提供并行输出。该芯片为8位,因此该芯片从PI串行获取8位,然后通过8个输出引脚提供8位逻辑输出。
对于8位移位寄存器,我们将使用IC 74HC595。这是一个16 PIN芯片。芯片的引脚配置将在本教程后面的部分中介绍。
在本教程中,我们将使用三个PI的GPIO引脚从移位寄存器芯片获取八个输出。请记住,此处的芯片PINS仅用于输出,因此我们无法将任何传感器连接至芯片输出,并且期望PI读取它们。LED连接在芯片输出端,以查看从PI发送的8位数据。
在继续之前,我们将讨论有关Raspberry Pi GPIO引脚的一些知识,
Raspberry Pi 2中有 40个GPIO输出引脚。但是在40个引脚中,只能编程26个GPIO引脚(GPIO2至GPIO27)。其中一些引脚执行某些特殊功能。撇开特殊的GPIO,我们只剩下17个GPIO。这17个GPIO引脚中的每个引脚均可提供最大 15mA的电流。并且所有GPIO引脚的电流总和不能超过 50mA。 要了解有关GPIO引脚的更多信息,请执行以下操作:Raspberry Pi的LED闪烁
所需组件:
在这里,我们使用 带有Raspbian Jessie OS的Raspberry Pi 2 ModelB。前面已经讨论了所有基本的硬件和软件要求,您可以在Raspberry Pi简介中查找它,而不需要我们:
- 连接销
- 220Ω或1KΩ电阻(6)
- LED灯(8)
- 0.01µF电容器
- 74HC595 IC
- 面包板
电路原理图:
移位寄存器IC 74HC595:
让我们讨论一下我们将在这里使用的SHIFT REGISTER的PINS。
引脚名称 |
描述 |
Q0-Q7 |
它们是输出引脚(红色矩形),在这里我们并行获得8位数据。我们将八个LED连接到它们以查看并行输出。 |
数据引脚(DS) |
第一个数据一点一点地发送到该引脚。发送1,我们将DATA引脚上拉至高电平,发送0,我们将DATA引脚下拉。 |
时钟针(SHCP) |
该引脚上的每个脉冲都会迫使寄存器从DATA引脚中获取一位数据并进行存储。 |
移位输出(STCP) |
接收8位后,我们向该引脚提供脉冲以查看输出。 |
工作流程:
我们将遵循流程图并在PYTHON中编写一个十进制计数器程序。运行程序时,我们会在Raspberry Pi中看到使用移位寄存器进行LED计数。
编程说明:
一旦按照电路图连接了所有组件,我们就可以打开PI并将程序写入PYHTON。
我们将讨论将在PYHTON程序中使用的一些命令,
我们将从库中导入GPIO文件,以下功能使我们能够对PI的GPIO引脚进行编程。我们还将“ GPIO”重命名为“ IO”,因此在程序中,每当要引用GPIO引脚时,我们都将使用“ IO”一词。
导入RPi.GPIO作为IO
有时,当我们尝试使用的GPIO引脚可能正在执行其他一些功能时。在这种情况下,我们将在执行程序时收到警告。下面的命令告诉PI忽略警告并继续执行程序。
IO.setwarnings(False)
我们可以通过板上的引脚编号或功能编号来引用PI的GPIO引脚。像板上的“ PIN 29”一样,是“ GPIO5”。因此,我们在这里告诉我们将在此处用“ 29”或“ 5”表示图钉。
IO.setmode(IO.BCM)
我们将GPIO4,GPIO5和GPIO6引脚设置为输出
IO.setup(4,IO.OUT)IO.setup(5,IO.OUT)IO.setup(6,IO.OUT)
该命令执行循环8次。
对于范围(8)中的y:
而1: 用于无限循环。使用此命令,该循环内的语句将连续执行。
程序的进一步说明在下面的代码部分中给出。现在,我们拥有将数据发送到SHIFT REGISTER所需的所有说明。