智能创客,中国最大的极客空间,智能平台,免费教学,视频教程,手把手教你创造儿时梦想!

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 21518|回复: 40
打印 上一主题 下一主题

Raspberry Pi WiringPir/python的GPIO使用入门

  [复制链接]

110

主题

396

帖子

2329

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2329
QQ
跳转到指定楼层
楼主
发表于 2014-2-11 11:52:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

Raspberry Pi有许多的GPIO(General Purpose Input Output:通用输入/输出),可以用来控制和读取数字电路中TTL电平的逻辑0和逻辑


1。我们要使用RPi的GPIO首先要知其GPIO的定义,常用的有两种编号定义:WiringPi Pin和BCM GPIO。GPIO的驱动库我这里介绍两种给大家,一种为C语言的WiringPi,另一种为python的RPi.GPIO;实验中将使用这两种语言来教会大家使用GPIO。


本篇文章将通过2个小实验带你学习Raspberry Pi GPIO的简单使用步骤,一个是控制LED闪烁,另外一个是开关控制LED闪烁。


GPIO定义图解

GPIO编号图(请注意图中Revision 1/2 ):



2种不同编号的定义:



安装GPIO库

(1)更新源:

   $ sudo apt-get update

(2)安装python

   $ sudo apt-get install python-dev

(3)安装python-pippython-pip是一个可以替代easy_install的安装和管python软件包的工具)

$ sudo apt-get install python-pip

(4)利用pip安装rpi.gpio

$ sudo pip install rpi.gpio

测试安装成功:



(5)安装wringpi库:

安装git-core
$ sudo apt-get install git-core

载winringPi库
$ git clone git://git.drogon.net/wiringPi

编译和安装库 (在/wiringPi/examples目录中有一些例子可供大家参考)
$ cd wiringPi
$ ./build

另外大家可以使用下面的命令对库进行更新
$ cd wiringPi
$ git pull origin



器件清单

Raspberry Pi     x1

Linker led     x1

Linker button     x1

Wire     x5




实验一

----------接线图---------------





C语言示例
说明:使用wiringpi这个库,类似arduino的编程风格,代码设置的GPIO编号为wiringPi pin、如果你想使用BCM GPIO则可以将wiringPiSetup() 改为wiringPiSetupGpio(),那么对应的led_pin也需要改为BCM GPIO编号对应的GPIO,即GPIO24。
示例代码:
#include
#include
#include

int led_pin = 5;

int main ()
{
if (wiringPiSetup() == -1)
{
printf(“Setup wiringPi failed!”);
return 1;
}
printf(“linker_led pin : GPIO%d (wiringPi pin)”,led_pin);
pinMode(led_pin, OUTPUT); // set mode to output

while(1)
{
digitalWrite(led_pin, 1); // output a high level
delay(200);
digitalWrite(led_pin, 0); // output a low level
delay(200);
}

return 0;
}


1.新建一个.c文件写入示例代码、保存:$vi linker_led.c
2.编译代码:$ gcc linker_led.c -o linker_led -lwiringPi
3.运行代码:$sudo ./linker_led

python示例
说明:这里调用RPi.GPIO库,使用的GPIO编号为BCM GPIO、如果你想使用board GPIO则可以将GPIO.setmode(GPIO.BCM)改为GPIO.setmode(GPIO.BOARD),那么对应的led_pin也需要改为wiringPi pin编号对应的GPIO,即GPIO5。

python示例代码:

import RPi.GPIO as GPIO
import time

led_pin = 24

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin,GPIO.OUT)

print “linker led pin 24 (BCM GPIO)”

while True:

        GPIO.output(led_pin,True)
        time.sleep(0.2)
       GPIO.output(led_pin,False)
       time.sleep(0.2)



新建一个.py文件写入示例代码、保存:$vi linker_led.py
运行代码:$sudo python linker_led.py

实验一运行效果图

LED OFF :

LED ON:

实验二

-----------接线图------------



C语言示例
说明:这个示例较实验一多增加一个GPIO,使用了读取GPIO状态的函数:digitalRead(pin_value)
示例代码:
#include

int button_pin = 4;
int led_pin = 5;

int main ()
{
printf(“wiringPi pin”);
printf(“linker_led pin : GPIO%d”,led_pin);
printf(“linker_button pin : GPIO%d”,button_pin);

if (wiringPiSetup() == -1)
{
printf(“Setup wiringPi failed!”);
return 1;
}

pinMode(led_pin, OUTPUT); // set linker_led mode to output
pinMode(button_pin, INPUT); // set linker_button mode to input
while(1)
{
if( digitalRead(button_pin) )
digitalWrite(led_pin, HIGH); // output a high level
else
digitalWrite(led_pin, LOW); // output a low level

}

return 0;
}



1.新建一个.c文件写入示例代码、保存:$vi linker_button.c
2.编译代码:$ gcc linker_button.c -o linker_button -lwiringPi
3.运行代码:$sudo ./linker_button


python示例
说明:这个示例较实验一多增加一个GPIO,使用了读取GPIO状态的函数:GPIO.input(pin_value)
示例代码:

import RPi.GPIO as GPIO

led_pin = 24
button_pin = 23

GPIO.setwarnings(False)
GPIO.setmode( GPIO.BCM )
GPIO.setup( led_pin,GPIO.OUT )
GPIO.setup( button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

print (“linke r_led pin 24 , linker_button pin 23 (BCM GPIO)”)

while True:
       if GPIO.input(button_pin):
                      GPIO.output(led_pin,True)
       else :
                     GPIO.output(led_pin,False)



1.新建一个.py文件写入示例代码、保存:$vi linker_button.py
2.运行代码:$sudo python linker_button.py

实验二运行效果图

没有按下按钮,LED处于熄灭状态:

按下按钮,LED处于点亮状态:




测试代码下载:


python-test

c-test


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

0

主题

3

帖子

25

积分

新手上路

Rank: 1

积分
25
沙发
发表于 2014-8-21 14:57:19 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

23

帖子

81

积分

注册会员

Rank: 2

积分
81
板凳
发表于 2014-8-23 11:10:46 | 只看该作者
选个好的 才有保证 这话没错












和面机 切菜机  碎菜机 绞菜机 面食加工机 切片切丝机 不锈钢绞菜机 不锈钢刹菜机 电动家用和面机 小型家庭专用切菜机 河北玖鹿贸易有限公司是炊事机械www.hbjiulu.com
回复 支持 反对

使用道具 举报

0

主题

23

帖子

81

积分

注册会员

Rank: 2

积分
81
地板
发表于 2014-8-31 11:31:28 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

3

帖子

16

积分

新手上路

Rank: 1

积分
16
5#
发表于 2014-9-17 15:36:12 | 只看该作者
威尔顿P1/PPPPP/WFS/WF/KWF。威尔顿P1/PPPPP/WFS/WF/KWF技术参数

口径:1/2

最大流量:14.8GPM (56.1LPM)

最大工作压力:125PSI (8.6BAR)

接液部结构材质:聚丙烯、碳充乙缩醛、聚偏二氟乙烯、特氟龙PTFE

干吸:20 (6.1m)

可通过最大颗粒:1/16 (1.59mm)

弹性体:丁晴橡胶、聚氨脂、SaniFlexTM、氟化橡胶、Wil-FlexTM、特氟龙PTFE     

    美国WILDEN威尔顿气动隔膜泵

    塑料泵,金属泵系列。流量:0—1174升/每分钟

    接液部结构材质:

    PP聚丙烯、PVDF聚偏二氟乙烯、特氟龙、不锈钢材质、铸铁材质,铝合金材质,球墨铸铁材质、合金C材质等

    型号尺寸(进口尺寸):6mm(1/4”英寸)、13mm(1/2”英寸)、25mm(1”英寸)、38mm(1.5”英寸)、51mm(2”英寸)、76mm(3”英寸)、 102mm(4”英寸)

    最大吸程:9.6m

    隔膜片材质:

    丁晴橡胶、氯丁橡胶、聚氨脂、三元橡胶、SaniflexTM、特氟龙PTFE、Wil_FlexTM、氟化橡胶

     不平衡气阀的专利设计,不会停顿的不平衡活塞,绝没有死点。专利的加强筋设计,使WILDEN隔膜成为行业中寿命最长,耐温度最高的。

    采用压缩空气为动力源,输送各种腐蚀性液体,带颗粒的液体,高粘度、易挥发、易燃、剧**的液体。

    上海阔思电子有限公司常备WILDEN气动隔膜泵各类配件
回复 支持 反对

使用道具 举报

0

主题

29

帖子

92

积分

注册会员

Rank: 2

积分
92
6#
发表于 2015-4-29 13:07:04 | 只看该作者
知道了 不错~~~











交友:我是个小女生,21岁,独生子女,还没谈过恋爱,长相较好,反正带出去不会给你丢脸,身高165cm,体重50kg,现在是一家公司的文员。希望找个比我大几岁的男生,不需要你有非常好的条件,但一定要有上进心,会体贴女生,不花心。因为我是第一次恋爱,所以希望找的就是那种能结婚的。如果你是我说的那个他,那就加我微信吧:pndrwx
回复 支持 反对

使用道具 举报

0

主题

0

帖子

5

积分

新手上路

Rank: 1

积分
5
7#
发表于 2015-5-9 14:36:23 | 只看该作者
顶.支持,路过!
回复 支持 反对

使用道具 举报

0

主题

9

帖子

38

积分

禁止发言

积分
38
8#
发表于 2015-6-26 10:14:11 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

10

帖子

40

积分

禁止发言

积分
40
9#
发表于 2015-6-30 15:33:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

3

帖子

25

积分

新手上路

Rank: 1

积分
25
10#
发表于 2015-7-2 23:10:46 | 只看该作者
空闲时间转点在.家 专..零 椛 銭 。有.兴.趣.加 扣945.199.839不限. 时 间,地.点, 在.校.生.和.上.班.族,妈.妈.们日 收五十到150, 宅在家对着电脑也是无聊!了 解 下 吧 不 吃 亏 哦~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|手机版|智能创客 ( 桂ICP备14000828号

GMT+8, 2024-11-27 08:28 , Processed in 0.124922 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表