我们都知道 Raspberry Pi 是一个基于ARM微处理器的出色开发平台。凭借其强大的计算能力,它可以解决电子爱好者或学生手中的奇迹。仅当我们知道如何使其与现实世界交互并通过某些输出设备分析数据时,所有这些才有可能实现。有许多传感器可以检测实时世界中的某些参数,并将其传输到数字世界,我们对其进行分析,可以在LCD屏幕或其他显示器上查看它们。但是,使用带有PI的LCD屏幕显示少量数据总是不经济的。这是我们更喜欢使用16x2字母数字LCD显示器或7段显示器的地方。我们已经学习了如何在Raspberry pi上使用字母数字LCD和单段7段显示器。今天我们将将4位七段显示模块与Raspberry Pi进行接口并显示其时间。
尽管16x2字母数字LCD比7段显示器舒适得多,但在少数情况下7段显示器会比LCD显示器更方便。LCD的缺点是字符尺寸太小,如果您打算显示一些数字值,则对您的项目而言可能会显得过分杀伤。7段式显示器还具有防止不良照明条件的优势,并且可以从比普通LCD屏幕更大的角度观看。所以,让我们开始了解它。
7段和4位7段显示模块:
7段显示器中有七个段,每个段内部都有一个LED,通过点亮相应的段来显示数字。就像如果您希望7段显示数字“ 5”,则需要通过将其相应的引脚设为高电平来使a,f,g,c和d发光。7段显示器有两种类型:Common Cathode和Common Anode,这里我们使用Common Cathode 7段显示器。在此处了解有关7段显示的更多信息。
现在我们知道如何在单个7段显示器上显示所需的数字字符。但是,很明显,我们需要一个以上的7段显示器来传达超过一位的任何信息。因此,在本教程中,我们将使用如下所示的4位7段显示模块。
如我们所见,有四个七个分段显示器连接在一起。我们知道,每个7段模块将有10个引脚,而对于4个7段显示器,总共将有40个引脚,任何人将它们焊接在点板上都会很忙,所以我强烈建议任何人购买一个模块或制作自己的PCB以使用4位7段显示器。相同的连接示意图如下所示:
要了解4位七段模块的工作原理,我们必须查看上面的示意图,如图所示,所有四个显示器的A引脚连接在一起,一个A接在一起,对于B,C…直到DP接在一起。因此,基本上,如果触发A,那么所有四个A都应该变高吧?
但是,这不会发生。我们还有从D0到D3的另外四个引脚(D0,D1,D2和D3),可用于控制四个引脚中哪个应该变高。例如:如果我只需要在第二个显示器上显示输出,则仅D1应该设为高电平,而其他引脚(D0,D2和D3)保持低电平。简单地,我们可以使用D0到D3的引脚选择必须激活的显示器,以及使用A到DP的引脚选择要显示的字符。
将4位7段模块与Raspberry Pi连接:
让我们看看如何,如何将这个4位7段模块与我们的Raspberry Pi连接起来。7段模块具有16个引脚,如下所示。您的模块可能更少,但请放心,它肯定还会包含以下内容
- 7或8个段销(此处的销从1到8)
- 接地引脚(此处为引脚11)
- 4位数字引脚(此处为引脚13至16)
下面给出了通过将4位七段显示模块与Raspberry Pi连接起来的Raspberry Pi数字时钟的示意图 :
下表还将帮助您进行连接并验证其是否符合上面显示的示意图。
序号 |
Rsp Pi GPIO编号 |
Rsp Pi PIN码 |
7段名称 |
7段引脚号(在此模块中) |
1个 |
GPIO 26 |
PIN 37 |
细分 |
1个 |
2 |
GPIO 19 |
PIN 35 |
段b |
2 |
3 |
GPIO 13 |
PIN 33 |
段c |
3 |
4 |
GPIO 6 |
PIN 31 |
段d |
4 |
5 |
GPIO 5 |
PIN 29 |
段e |
5 |
6 |
GPIO 11 |
PIN 23 |
段f |
6 |
7 |
GPIO 9 |
PIN 21 |
段g |
7 |
8 |
GPIO 10 |
PIN 19 |
段DP |
8 |
9 |
GPIO 7 |
PIN 26 |
数字1 |
13 |
10 |
GPIO 8 |
PIN 24 |
数字2 |
14 |
11 |
GPIO 25 |
PIN 22 |
数字3 |
15 |
12 |
GPIO 24 |
PIN 18 |
数字4 |
16 |
13 |
地面 |
地面 |
地面 |
11 |
识别模块上的插针,就可以继续进行连接了。在Raspberry pi中发现GPIO引脚可能是一项艰巨的任务,因此我为您提供了有关GPIO引脚的图片。
对Raspberry Pi进行编程:
在这里,我们使用Python编程语言对RPi进行编程。有很多方法可以对Raspberry Pi进行编程。在本教程中,我们使用的是 Python 3 IDE,因为它是最常用的一个。该 完整的Python程序 在本教程的末尾。在此处了解有关在Raspberry Pi中编程和运行代码的更多信息。
我们将讨论将在PYHTON程序中用于该项目的一些命令,
首先,我们将从库中导入GPIO文件,下面的函数使我们能够对PI的GPIO引脚进行编程。我们还将“ GPIO”重命名为“ IO”,因此在程序中,每当要引用GPIO引脚时,我们都将使用“ IO”一词。我们还导入了 时间 和 日期 时间以从Rsp Pi读取时间值。
导入RPi.GPIO作为GPIO导入时间,日期时间
有时,当我们尝试使用的GPIO引脚可能正在执行其他一些功能时。在这种情况下,我们将在执行程序时收到警告。下面的命令告诉PI忽略警告并继续执行程序。
IO.setwarnings(False)
我们可以通过板上的引脚编号或功能编号来引用PI的GPIO引脚。像板上的“ PIN 29”一样,是“ GPIO5”。因此,我们在这里告诉我们将在此处用“ 29”或“ 5”表示图钉。GPIO.BCM表示我们将使用5表示GPIO5引脚29。
IO.setmode(GPIO.BCM)
和往常一样,我们应该从初始化引脚开始,这里段引脚和数字引脚都是输出引脚。出于编程目的,我们形成了用于段引脚的阵列,并在将其声明为GPIO.OUT之后将其初始化为“ 0”。
segment8 =(26,19,13,6,5,11,9,10)对于segment8中的段:GPIO.setup(segment,GPIO.OUT)GPIO.output(segment,0)
同样,对于数字引脚,我们将它们声明为输出引脚,并默认将它们设置为“ 0”
#Digit 1 GPIO.setup(7,GPIO.OUT)GPIO.output(7,0)#初始关闭#Digit 2 GPIO.setup(8,GPIO.OUT)GPIO.output(8,0)#初始关闭#Digit 3 GPIO.setup(25,GPIO.OUT)GPIO.output(25,0)#初始关闭#数字4 GPIO.setup(24,GPIO.OUT)GPIO.output(24,0)#初始关闭
我们必须形成数组以在七段显示器上显示每个数字。要显示一个数字,我们必须控制所有7个段引脚(不包括点引脚),即必须将它们关闭或打开。例如,为了显示数字5,我们进行了以下安排
序号 |
Rsp Pi GPIO编号 |
7段名称 |
状态显示为“ 5”。 (0-> OFF,1-> ON) |
1个 |
GPIO 26 |
细分 |
1个 |
2 |
GPIO 19 |
段b |
1个 |
3 |
GPIO 13 |
段c |
0 |
4 |
GPIO 6 |
段d |
1个 |
5 |
GPIO 5 |
段e |
1个 |
6 |
GPIO 11 |
段f |
0 |
7 |
GPIO 9 |
段g |
1个 |
同样,我们对所有数字和字母都有序列号。您可以自己写或使用下面的图表。
有了这些数据,我们就可以在python程序中形成每个数字的数组,如下所示。
null =零=一=二=三=四=五=六=七=八=九=
如果您遵循该程序,将有一个功能将每个字符显示到我们的7段显示器上,但是,让我们暂时跳过此步骤,进入 while 无限循环。在此处从Raspberry Pi读取当前时间,并将时间值划分为四个变量。例如,如果时间为10.45,则变量h1将具有1,h2将具有0,m1将具有4vand m2将具有5。
now = datetime.datetime.now()hour = now.hour分钟= now.minute h1 =小时/ 10 h2 =小时%10 m1 =分钟/ 10 m2 =分钟%10 print(h1,h2,m1,m2)
我们必须分别在四个数字上显示这四个变量值。要将变量的值写入数字,我们可以使用以下几行。在这里,我们通过将其变高显示在数字1上,然后调用 print_segment 函数 (变量) 以在段显示器上显示变量中的值。您可能想知道为什么我们在此之后会有延迟,以及为什么我们在此之后将其关闭。
GPIO.output(7,1)#打开数字一位print_segment(h1)#在段时间上打印h1.sleep(delay_time)GPIO.output(7,0)#关闭数字一位
原因是,正如我们所知道的,我们一次只能显示一位数字,但是我们只能显示四位数字,并且只有当所有四位数字都显示时,用户才能看到完整的四位数字。
那么,如何同时显示所有4位数字呢?
对我们来说幸运的是,我们的MPU比人眼快得多,所以我们实际要做的是:一次 显示一位,但是如上所述,我们可以非常快地完成。
我们选择一个数字显示,等待2毫秒(可变的delay_time),以便MPU和7段可以处理它,然后关闭该数字并移至下一个数字,并执行相同的操作,直到到达最后一个数字。人眼无法观察到2ms的延迟,并且所有四个数字似乎同时打开。
要了解它的最后一件事,就是要了解 print_segment(variable) 函数的工作方式。在此函数内,我们使用到目前为止已声明的数组。因此,无论我们发送给该函数的变量的值应介于(0-9)之间,变量字符都将接收该值并将其与实际值进行比较。此处将变量与“ 1”进行比较。同样,我们将0到9之间的所有数字进行比较。如果匹配,则使用数组并将每个值分配给其各自的段引脚,如下所示。
def print_segment(charector):如果charector == 1:对于范围(7)中的i:GPIO.output(segment8,one)
使用Raspberry Pi在4位7段显示时间:
使用此处提供的示意图和代码进行连接,并相应地对树莓派进行编程。完成所有操作后,只需启动该程序,即可在七段显示屏中找到当前时间。但是,在此之前您需要检查的东西很少
- 确保已将Raspberry Pi设置为当前时间,以防万一它在离线时间运行。
- 使用适配器而不是笔记本电脑/计算机为Raspberry pi供电,因为7段显示器的消耗电流很大,并且USB端口无法为其供电。
如果一切正常,那么您应该在下面找到类似的内容。
也可以在下面的视频中查看此树莓派时钟的完整工作。希望您喜欢这个项目并喜欢建造一个。让我知道您的想法或需要帮助。