在Ubuntu 16.04上使用Swift 3.0控制Raspberry Pi 2/3 GPIO引脚

在这里,我们使用的是Raspberry Pi,配置了最低Ubuntu 16.04并安装了Swift 3.0。 现在,让我们使用Swift打开和关闭LED!

步骤1:了解GPIO引脚号

核心概念是板上并非所有可用的引脚都是GPIO(通用输入/输出)。 有些是电源,有些是接地,有些是其他东西

圆圈内的数字是图钉号 。 这些引脚中的一些与GPIO引脚匹配。 例如, 引脚7GPIO4引脚匹配。

我们只能控制GPIO引脚,而不能控制其他引脚。 其他的用来给电路加电或做其他事情

步骤2:连接电路

我们想创建一个简单的电路,其中通过GPIO4(引脚7)打开LED。 因此,我们创建了一个简单的电路,如下所示:

步骤3:确保我们可以实际在GPIO引脚上设置值

WiringPi是一套从端子控制GPIO引脚的工具。 实际上,出于测试目的,这非常方便。 遗憾的是,这并不像安装deb包那么简单,但是我们需要获取源代码并进行构建。

在确保我们已经安装了一些编译依赖项之前,请执行以下操作:

  sudo apt-get install build-essential git-core 

然后让我们构建WiringPi:

 光盘〜 
git clone git://git.drogon.net/wiringPi
CD接线Pi
。/建立

现在,您可以通过读取所有Raspberry Pi引脚的状态来测试二进制文件是否已正确编译:

  gpio readall 

应该打印这样的东西:

让我们将gpio二进制文件移到根级别,以使其更方便调用:

 须藤cp gpio / gpio / usr / bin / 

现在让我们设置引脚7 (wPi列中的数字) 作为输出并将其关闭,然后再打开,然后再次关闭:

  gpio模式7出 
gpio写7 0
gpio写7 1
gpio写7 0

它应该工作。 否则,可能是电路中的一些接线错误。

步骤4:使用SwiftyGPIO库控制GPIO引脚

Uraimo在GPIO引脚周围创建了一个非常漂亮的Swift包装器,因此我们可以在Swift应用中对其进行控制。 可以做得更好的事情很少,但这是一个很好的起点。

由于Swift软件包管理器到目前为止仍无法在Ubuntu上正常工作(2016年8月4日),因此我们将克隆git repo并直接在代码中使用该文件。

重要的一点是将所有源文件放在一个文件夹中,以便能够用一个简单的命令将它们全部编译。

  mkdir〜/ ledtest 
mkdir〜/ ledtest /来源
cd〜/ ledtest
git clone https://github.com/uraimo/SwiftyGPIO.git
cp SwiftyGPIO / Sources / *源/

让我们创建主要的:

  nano Sources / main.swift 

使用此代码:

 导入Glibc 
  //获取将要连接LED的引脚 
让gpios = SwiftyGPIO.GPIOs(用于:.RaspberryPi2)
保护让ledGPIO = gpios [.P4] else {
fatalError(“不可能初始化LED GPIO引脚”)
}
  //设置GPIO输出 
ledGPIO.direction = .OUT
  //打开和关闭LED几次 
ledGPIO.value = 1
睡眠(1)
ledGPIO.value = 0
睡眠(1)
ledGPIO.value = 1
睡眠(1)
ledGPIO.value = 0

现在以超级用户身份编译并运行(它需要更高级的权限才能访问GPIO引脚):

  swiftc来源/*.swift 
须藤./main

LED应该闪烁两次,然后停止。 成功!!

第5步:用一些更干净的代码清洗我们的灵魂

我在编写骇人的脚本时感到肮脏。 当我了解我写的东西甚至都无法令人满意时,我开始后悔所有人生决定。 因此,以下代码是该应用程序的v2。

但是首先我真的建议您配置Atom或SublimeText编辑器(在您的主计算机上)以在RPi上远程编辑代码,因此您不必使用nanovim 。 (Atom和SublimeText的信息)。

应该的。 编译并运行。 LED将一直闪烁,直到您停止执行。

这是您开始使用出色的编程语言及其附带的所有功能在电子产品中完成出色工作时所需要了解的基本知识。

要获取我最新的Swift不幸事件,请 订阅此出版物 干杯。