iooops 发表于 2016-3-16 02:22:19

【Raspberry Pi入门系列4】GPIO

The Raspberry Pi Platform and Python Programming for the Raspberry Pi课程笔记
详细地址戳这个:
https://www.coursera.org/learn/raspberry-pi-platform/home/week/4

这一周讲到了GPIO。

GPIO,顾名思义,就是General Purpose Input / Output。

在我使用的树莓派2代B上,它有40个引脚。
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/images/gpio-pins-pi2.jpg
这两排的引脚有两种numbering方式:
1. GPIO Numbering:
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/images/gpio-numbers-pi2.png
2. Physical Numbering:
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/images/physical-pin-numbers.png
(一般来说GPIO numbering比较难记,不过用C编程的话好像只能选这种模式 = =。)
在使用Python对它们进行编程的时候,就有两种模式可以选择。
当然,首先我们要先导入GPIO库。
<font size="2" face="微软雅黑">import RPi.GPIO as GPIO</font>按理来说默认情况下raspbian是已经安装好了GPIO库的,如果发现程序报错可以检查一下上述代码有没有字拼错,大小写也算。
如果最后发现确实是库没有安装的话参考下面这篇教程(不过GPIO官网挪位了,下载的时候修改一下地址就好):
http://wiki.jikexueyuan.com/project/raspberry-pi/gpio.html

然后在Python中我们就可以这样选择一种模式:
<font size="2" face="微软雅黑">GPIO.setmode(GPIO.BOARD)   #Physical Numbering
</font>或者
<font size="2" face="微软雅黑">GPIO.setmode(GPIO.BCM)         #GPIO Numbering</font>这些GPIO口是multi-function的,除了当做一般的输入输出之外,还有其他用途。

https://mc.dfrobot.com.cn/forum.php?mod=image&aid=25134&size=300x300&key=9973da05faa7cc91&nocache=yes&type=fixnone

其中就有支持I2C协议(快,距离有限)的:
SDA   data
SCL      clock

UART协议的:
TXD
RXD

SPI协议的:
SPIO_MOSI   master out slave in
SPIO_MISO   master in slave out   
SPIO_SCLK      clock all the device share
SPIO_CEO_N   chip enable; negative
SPIO_CE1_N   

关于这些引脚的详情戳官网链接:
http://pinout.xyz/pinout/pin8_gpio14

但Python的GPIO库貌似并不支持这些协议,因此如果有这些需求,可以参考下面的教程下载wiringPi或者BCM2835 C Library:
http://wiki.jikexueyuan.com/project/raspberry-pi/gpio.html

下面就是使用PYTHON点亮LED灯的例子(.py文件)了:
<font size="2" face="微软雅黑">import RPi.GPIO as GPIO               #导入GPIO库
import time                                 #导入Python的time库
GPIO.setmode(GPIO.BOARD)      
GPIO.setup(13, GPIO.OUT)             #将物理引脚13设为输出

while True:                     
      GPIO.output(13, True)
      time.sleep(1)
      GPIO.output(13, False)
      time.sleep(1)</font>其实和arduino还挺相似的不是。while True之前的部分开始时执行一次,while True的部分loop执行。(如果是输入的话把OUT改成IN,output改成input就好啦。)
至于LED的连接?参考Arduino。

下面是PWM的用法:


对于这些引脚的正确使用方式还得在日后的多多实践中得出真知。 - - 嗯刷完这一轮的感觉就是这样。
OK至此对树莓派的入门基本结束。
下一轮是树莓派的网络配置。

iooops 发表于 2016-3-16 02:25:55

沙发

iooops 发表于 2016-3-16 02:25:59

板凳

iooops 发表于 2016-3-16 02:26:08

地板

nxcosa 发表于 2016-3-16 16:49:54

NB   膜拜{:5_166:}

凌风清羽 发表于 2016-3-16 21:45:51

{:5_171:}

iooops 发表于 2016-3-18 01:06:12

nxcosa 发表于 2016-3-16 16:49
NB   膜拜

你膜拜我的树莓派还打他……

iooops 发表于 2016-3-18 02:00:50

凌风清羽 发表于 2016-3-16 21:45


{:5_157:}

nxcosa 发表于 2016-3-18 10:16:31

iooops 发表于 2016-3-18 01:06
你膜拜我的树莓派还打他……

我去这是打人的呀 没注意我说我是后面那个膜拜的人没注意到前面的人还有个小手在打人{:5_172:}

yoyojacky 发表于 2016-3-25 13:31:37

gpio好好搞搞,传感器全靠他...
页: [1]
查看完整版本: 【Raspberry Pi入门系列4】GPIO