LMK.GPIO

From BananaPro/Pi
Jump to: navigation, search
This page is a translated version of the page LMK.GPIO and the translation is 100% complete.

Other languages:
English • ‎中文(简体)‎

LMK.GPIO介绍

LMK.GPIO提供了一个用Python语言写的用来控制Banana Pro和LeMaker Guitar上的GPIO的类。它是在用于树莓派上的BCM2835的RPi.GPIO的基础上修改过来的[1]。目前的版本还不支持SPI、I2C、硬件PWM或串行功能。LeMaker团队对这个库进行了修改,使LMK.GPIO与原生的RPi.GPIO有相同的接口。


支持的硬件

  • LeMaker Guitar Base Board Rev.B
  • LeMaker Banana Pro/Banana Pi

以下是一些有用的相关信息:
LeMaker Guitar:Pin Definition on Base Board
BananaPro/Pi:Pin definition


安装

使用下面的命令安装LMK.GPIO:

$ sudo apt-get install python-dev
$ git clone https://github.com/LeMaker/LMK.GPIO.git
$ cd LMK.GPIO
$ python setup.py install                 
$ sudo python setup.py install


支持的API接口

设置

这里使用函数GPIO.setmode(GPIO.MODE)介绍如何初始化LMK.GPIO引脚模式。这个函数必须在LMK.GPIO程序的一开始就被调用,来初始化GPIO。

GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)

GPIO.BOARD与物理管脚号一致;GPIO.BCM等同于to Broadcom GPIO管脚号。我们可以从这张表#附录:LMK.GPIO管脚设置表查看不同的地方。


管脚操作

LMK.GPIO库核心函数可以在SBC上直接操作,且使用下面的这些基本操作支持外接设备:

GPIO.setup(int pin, int mode)
  • int mode设置引脚模式为INPUT(输入)或OUTPUT(输出)。
GPIO.setup(int pin, GPIO.IN, int pud)
  • 当管脚设置为输出,这个管脚能够设置为拉高或拉低的寄存器模式。参数int pud可以是GPIO.PUD_OFF (非拉高/低)、GPIO.PUD_DOWN (接地) 或GPIO.PUD_UP (拉高到 VCC 3.3V)。
GPIO.output(int pin, int value)
  • 当管脚设置为输出,这个函数可写入GPIO.HIGHGPIO.LOW (10, TrueFalse)到引脚。
GPIO.input(int pin)
  • 读取管脚的逻辑电平值,这个函数读取并返回HIGHLOW (10TrueFalse)。
GPIO.add_event_detect(unsigned int pin, unsigned int edge,callback = void (*func_my_callback), unsigned int bouncetime)
  • 函数的第二个参数设置为GPIO.RISINGGPIO.FALLINGGPIO.BOTH时,中断被当作事件。第三个函数值中断事件回调函数。
p = GPIO.PWM(int pin, int frequency)
  • 创建软件控制的PWM,建议设置第二个参数int frequency为100(理论上,frequency > 0 就足够了)。使用.start(int initialValue)函数指定PWM的初始化值,使用.stop()函数停止初始化。,使用.ChangeDutyCycle(int dutyCycle)函数设置PWM的占空比。int dutyCycle的值应该在范围内。


编译

Python语言不需编译,但是需要在程序的开始导入库文件import LMK.GPIO


一个简单的例子

一个“Hello World”的例子,展示使LED灯闪烁。

#!/usr/bin/env python
import LMK.GPIO as GPIO
import time
#LED Mode BOARD
PIN_NUM = 7
GPIO.setmode(GPIO.BOARD)
while True:
	try:
		GPIO.setup(PIN_NUM, GPIO.OUT)
	except:
		print("Failed to setup GPIO %d", PIN_NUM)
	GPIO.output(PIN_NUM, True)
	time.sleep(0.5)
	GPIO.output(PIN_NUM, False)
        time.sleep(0.5)


另请参阅

操控SBC上的IO接口


附录:LMK.GPIO管脚设置表

Banana Pro和LeMaker Guitar 40pin GPIO映射表
物理编号 LMK.GPIO Raspberry Pi
LMK.GPIO.BOARD LMK.GPIO.BCM BCM Chip Serial Number
1 -- 3.3V
2 -- 5V
3 2 2/GPIO02
4 -- 5V
5 3 3/GPIO03
6 -- GND
7 4 4/GPIO04
8 14 14/GPIO14
9 -- GND
10 15 15/GPIO15
11 17 17/GPIO17
12 18 18/GPIO18
13 27 27/GPIO27
14 -- GND
15 22 22/GPIO22
16 23 23/GPIO23
17 -- 3.3V
18 24 24/GPIO24
19 10 10/GPIO10
20 -- GND
21 9 9/GPIO09
22 25 25/GPIO25
23 11 11/GPIO11
24 8 8/GPIO8
25 -- GND
26 7 7/GPIO07
27 0 0/GPIO00
28 1 1/GPIO01
29 5 5/GPIO05
30 -- GND
31 6 6/GPIO06
32 12 12/GPIO12
33 13 13/GPIO13
34 -- GND
35 19 19/GPIO19
36 16 16/GPIO16
37 26 26/GPIO26
38 20 20/GPIO20
39 -- GND
40 21 21/GPIO21