当前位置:首页 > 文章中心 > 正文内容

如何在Linux系统中直接操作GPIO_linux读取gpio状态

dgx6663个月前 (09-02)文章中心26

上篇文章“把Intel Galileo当Arduino用?太屈才了吧”简单介绍Galileo作为一个Linux与Arduino的集合拥有非常强大的功能,在这里,要向大家介绍下如何写一个python程序实现控制Arduino中才能控制的I/O接口。上篇文章也说过,如果想使用python程序,必须使用SD卡中的Linux系统。

安装SD Linux系统

如图所示,先后将Arduino Software 1.5.3 (Arduino IDE)和SD-Card Linux Image下载到本机,Arduino IDE在后面查找GPIO与Arduino IO 之间的映射关系时需要用到。

如图所示,将SDCard1.0.4.tar.bz2解压后出现一个“image-full-galileo”的文件夹。

在MicroSD使用前需先将其以Fat32进行格式化,然后将“image-full-galileo”文件夹下地所有文件直接拷贝到microSD卡的根目录下。

进入Galileo

将MicroSD插到Galileo中,在路由器页面的已连接设备列表中会看到设备名称为“clanton”有线连接设备,找到其IP地址,然后中Terminal(Unix和Linux,Windows可用Putty)中通过ssh进入Galileo,“ssh root@192.168.199.121”。

有意思的是,这个在MicroSD中运行的Linux系统开启了ssh服务,并且root账号没有设置密码,可以直接进入。如上图所示,弹出一对话框后输入 “yes”回车即可进入Galileo,出现下图中的 “root@clanton”说明这一步成功完成了。

到这里,可能会有疑问了,Galileo板载也是有一个操作系统的,microSD卡中也有一个Linux,如何保证现在进入的就是microSD卡中的系统呢?在Terminal中输入“cat/proc/version”即可查看Linux系统版本,显示为“3.8.7-yocto-standard”,这就是前面下载的为Galileo定制的Linux操作系统,Yocto。

找到那个属于你的GPIO

下面就要开始这篇文章中的核心部分,也是最难的一部。找Linux GPIO 与 Arduino IO之间的映射关系!

如右图所示,在“/sys/class/gpio/”中有多大60多个GPIO,如何找出右侧GPIO与左侧Arduino IDE中对应的IO呢。

首先将0-13IO口全部设为“INPUT”输入模式

voidsetup(){//putyoursetupcodehere,torunonce:
pinMode(0,INPUT);
pinMode(1,INPUT);
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(8,INPUT);
pinMode(9,INPUT);
pinMode(10,INPUT);
pinMode(11,INPUT);
pinMode(12,INPUT);
pinMode(13,INPUT);
}
voidloop(){
//putyourmaincodehere,torunrepeatedly:
}

如图所示,左侧"pinMode(13,OUTPUT)"将13引脚变为输出模式,右侧gpio7变成out模式,因此gpio7对应的就是Arduino IO 13(pin13)。

按照这种方法依次找出Arduino IO与GPIO之间如下的对应关系

GPIODigitalI/Ogpio11pin0
gpio12pin1
gpio13pin2
gpio14pin3
gpio6pin4
gpio0pin5
gpio1pin6
gpio38pin7
gpio40pin8
gpio4pin9
gpio10pin10
gpio5pin11
gpio15pin12
gpio7pin13

下面就需要来对上面找到的gpio对应关系进行验证了。“echo "out" >/sys/class/gpio/gpio*/direction”为将gpio变为输出模式,“echo "1" >/sys/class/gpio/gpio*/value”为将gpio输出高电平。然后就有了下面这段python程序,这段程序依次将pin13,pin12,pin11,pin10四个引脚的LED点亮然后关闭,但由于python程序的执行效率问题,应该所有LED同时点亮有了延时成为流水灯,如下图所示效果。这段程序在Linux系统的任意文件夹内均可。

importos,timewhileTrue:os.system('echo"out">/sys/class/gpio/gpio7/direction')
os.system('echo"1">/sys/class/gpio/gpio7/value')
os.system('echo"out">/sys/class/gpio/gpio15/direction')
os.system('echo"1">/sys/class/gpio/gpio15/value')
os.system('echo"out">/sys/class/gpio/gpio5/direction')
os.system('echo"1">/sys/class/gpio/gpio5/value')
os.system('echo"out">/sys/class/gpio/gpio10/direction')
os.system('echo"1">/sys/class/gpio/gpio10/value')
time.sleep(0.2)
os.system('echo"0">/sys/class/gpio/gpio5/value')
os.system('echo"0">/sys/class/gpio/gpio15/value')
os.system('echo"0">/sys/class/gpio/gpio7/value')
os.system('echo"0">/sys/class/gpio/gpio10/value')
time.sleep(0.2)

到这里,对Galileo GPIO算是入门了,关于GPIO更多详细讲解放到后面的文章吧。大家对Galileo的任何问题均可回复微信公共号,我会将大家的问题集中在下篇文章中详细说明。

“夸克微小,却能成就伟大,因为有你。请关注英特尔Quark开发者俱乐部微信公共号intelquark。”

扫描二维码推送至手机访问。

版权声明:本文由第六芝士网发布,如需转载请注明出处。

本文链接:http://www.dgx666.com/post/3984.html

分享给朋友:

“如何在Linux系统中直接操作GPIO_linux读取gpio状态” 的相关文章

AMD发布25.2.1图形驱动,新增支持《怪物猎人:荒野》等游戏

IT之家 2 月 12 日消息,AMD 昨日(2 月 11 日)发布 GPU 驱动更新 25.2.1 版本,重点新增支持《宣誓》、《席德梅尔的文明 VII》、《怪物猎人:荒野》以及《人中之龙 8 外传:夏威夷海盗》四款游戏。IT之家援引官方更新日志,附上 AMD 25.2.1 更新修复内容如下:修复...

AutoCAD 2014安装包下载与安装图文教程

AutoCAD 2014是Autodesk 公司开发的一款自动计算机辅助设计软件,可以用于绘制,二维制图,和基本三维设计,通过它无需懂得编程,即可自动制图,因此它在全球广泛使用,可以用于土木建筑,装饰装潢,工业制图,工程制图,电子工业,服装加工等多方面领域。AutoCAD 2014下载地址https...

Auto CAD 2014 软件下载地址、注册机下载地址(附:Auto CAD 2014 安装教程)

从事在线培训十多年,每天都会有很多学员问到软件工具,相信看完这篇文章之后,对使初学的学员节约很多的时间。这里收集整理了几个常见的问题,未涉及到的问题,欢迎大家留言①学习室内设计,不知道如何下载软件---本文要讲的②下载好软件了,不会安装,不会破解---本文要讲的③软件卸载删除后,重装失败---点击》...

AUTO CAD2014 激活错误处理办法

我们在安装CAD的时候,在序列号和产品密钥都正确的情况下,但就是激活不了,这是怎么回事呢?下面的方法可以给以参考,实验是可以的。这种情况的出现,多数是因为我们安装了两套或多套CAD软件造成的,第一套CAD软件可以正常激活,第二套为什么就不可以了呢....方法如下:针对证书授权错误0015.111的解...

CAD输入激活码后老是提示激活码错误,怎么解决?

CAD用注册机生成的激活码老是提示“注册-激活错误是生成错误造成的”,这个问题如何解决?具体的方法步骤如下:1、首先激活码出现问题,需要进行激活确认。首先需要的中进入电脑C盘。2、由于此文件夹默认是隐藏的,可以先点击组织设置隐藏文件夹显示。3、勾选显示隐藏文件夹。4、找到C:\ProgramData...

cad2007圆形标记方法技巧 #cad2007

大家好!很多小伙伴会问,在 cad 二零零七版当中,如果画了一个半径为一百的圆,画好后想给它做一个圆形标记该怎么去标记呢?1. 第一种方法可以点击标注,在标注里面,其实标注菜单里面有一个圆心标记,点击它,点了以后就会问选择圆弧或圆,这样一点之后就会自动给圆心做标记。如果觉得标记太小,可以输入缩放命令...