MCP3008.swift

用于 MCP3008 10 位 SPI ADC 的 Swift 库

Linux-only Swift 4 compatible License: MIT

概述

这个简单的库读取由 MCP3008 10 位 SPI 驱动的 ADC 产生的值。 该组件能够将模拟信号(电压范围由 Vref 定义,大多数情况下您会将 Vref 和 Vdd 连接到 5V)转换为介于 0 和 1023 之间的整数值。 模数转换器非常有用,例如对于像 Raspberry Pi 这样没有自己的模拟输入引脚的板子(如 Arduino 或传统的嵌入式板)。

MCP3008 diagram

支持的板

SwiftyGPIO 支持的每个板:Raspberry Pi、BeagleBone、C.H.I.P. 等...

要使用此库,您需要一个运行 Swift 3.x/4.x 的 Linux ARM 板。

下面的示例将使用 Raspberry Pi 2 板,但您可以轻松修改示例以使用其他支持的板之一,Raspberry Pi 2 的完整工作演示项目可在 Examples 目录中找到。

用法

我们需要做的第一件事是从 SwiftyGPIO 获取 SPIInterface 的实例,并使用它来初始化 MCP3008 对象

import SwiftyGPIO
import MCP3008

let spis = SwiftyGPIO.hardwareSPIs(for:.RaspberryPi2)!
let spi = spis[0]
let m = MCP3008(spi)

然后只需使用 readValue 从其中一个模拟输入读取当前转换后的值 (0...1023)

m.readValue(0) //CH0 pin

从未连接的通道(浮动输入)读取值将给出无意义的值,因此,请务必从正确的输入读取。

该库还支持使用位碰撞的虚拟 spi

let gpios = SwiftyGPIO.GPIOs(for:.RaspberryPi2)
var cs = gpios[.P27]!
var mosi = gpios[.P22]!
var miso = gpios[.P4]!
var clk = gpios[.P17]!

var spi = VirtualSPI(mosiGPIO: mosi, misoGPIO: miso, clockGPIO: clk, csGPIO: cs)

let m = MCP3008(spi)

for i in 0...7 {
    print("Value for channel ",i,": ",m.readValue(for: i) << 1) //Shift required to obtain the correct value
}

安装

请参考 SwiftyGPIO 的 readme 文件以获取 Swift 安装说明。

一旦您的板子运行 Swift,如果您的版本支持 Swift Package Manager,您可以简单地将此库添加为项目的依赖项,并使用 swift build 进行编译

  let package = Package(
      name: "MyProject",
      dependencies: [
    .Package(url: "https://github.com/uraimo/MCP3008.swift.git", majorVersion: 2),
    ...
      ]
      ...
  ) 

Examples 目录包含使用 SPM 的示例项目,编译它并使用 ./.build/debug/TestMCP 运行示例。

如果不支持 SPM,您需要手动下载库及其依赖项

wget https://raw.githubusercontent.com/uraimo/MCP3008.swift/master/Sources/MCP3008.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SwiftyGPIO.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/Presets.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SPI.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SunXi.swift  

一旦所有文件都已下载,创建一个额外的文件,其中将包含您的应用程序的代码(例如 main.swift)。 当您的代码准备就绪后,使用以下命令编译它

swiftc *.swift

编译器将创建一个名为 main 的可执行文件。