踏入树莓派世界——点亮LED & 摩尔斯电码发送

194 Views 

前言

本文章用到的设备:树莓派、杜邦线(公对母&公对公)、面包板、电阻、LED灯泡、蜂鸣器。

树莓派的精髓就在于那四十根GPIO (General Purpose Input/Output) 。使用树莓派,我们可以简单的使用Python操控各种电子元器件。从最简单的调节电压开始,探索树莓派世界。

预备知识:面包板和杜邦线

面包板是一种便宜且方便的教学设备,用来快速的组装电路,其优点是可以保持元器件的完整性。

一个常见的面包板

面包板的电路如下图所示:

面包板两侧通常用来作为电源位,中间接用电器。上上图所示的长面包板,其左右两侧的电源位互相独立,从中间断开。

杜邦线是一种多彩的导线,可以直接插进面包板或连接GPIO,十分方便:

使用时,按需从一排线上撕下即可。

点亮LED灯泡

组装电路

如果直接将LED连接至树莓派,其电流会过大,需要串联一个约200Ω的电阻。连接到树莓派时,只要正极为任一GPIO X 接口,正极为Ground即可。

欲查询引脚定义,可以在终端中输入 pinout ,但建议到 https://pinout.xyz 查询详细定义 。

注意LED灯泡的正负极:长的一端为正,短的为负:

编写代码

Raspbian中集成了一款十分好用的python IDE:Thonny

Python中有两个主要的GPIO库,分别是 gpiozero 和 RPi.GPIO 。前者更加关注于实现的效果,后者更关注于引脚的状态。在进行不涉及数据的操作时,前者更为简洁。

gpiozero的官方文档见: https://gpiozero.readthedocs.io/en/stable/

from gpiozero import LED  #导入gpiozero库
import time
led = LED(26)  #默认是使用BCM编号
led.on()
time.sleep(1)
led.off()

执行代码,不出意外LED灯就会亮起一秒钟。

恭喜你,正式踏入了树莓派的世界!

摩尔斯电码发送

关于摩尔斯电码

摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它发明于1837年,发明者有争议,是美国人塞缪尔·莫尔斯或者艾尔菲德·维尔。 摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种: 点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之间中等的停顿以及句子之间长的停顿。

摩尔斯电码发送简单,其本质上就是控制蜂鸣器通电时长,基本原理与点亮LED灯泡一致。

组装电路

我使用的是有源式蜂鸣器,区分正负极。同样是引脚长的一段为正,其上部也会标明正极。蜂鸣器的声音相当大。可以用一段透明胶带粘在顶部,能显著降低声音。

编写代码

代码不难编写,关键是繁琐。需要对照摩尔斯密码表逐一编写。

下面是时长的基本规则:

划一般是三个点的长度;点划之间的间隔是一个点的长度;字符之间的间隔是三个点的长度;单词之间的间隔是七个点的长度。

由于代码实在过长,以下仅以两个字母做示范:

from gpiozero import LED
import time
led = LED(26)
vl = 0.3 #long
vs = 0.1 #short
vp = 0.1 #pause between sounds
vc = 2 * vp #pause between characters
vw = 4 * vp #pause between words
def long():
    led.on()
    time.sleep(vl)
    led.off()
    time.sleep(vp)
def short():
    led.on()
    time.sleep(vs)
    led.off()
    time.sleep(vp)
def a():
    short()
    long()
    time.sleep(vc)
def b():
    long()
    short()
    short()
    short()
    time.sleep(vc)
text = input("please enter: ")
for ii in text:
    if ii == "a" or ii == "A":
        a()
    elif ii == "b" or ii == "B":
        b()

下面是完整版(包含26个英文字母,阿拉伯数字,逗号句号空格,还有错误)的下载:

以下声音是 hello world.

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

   
隐藏