免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上一章我们讲解了在linux系统下如何通过读写设备文件的方式控制GPIO点亮LED灯,本章我们继续讲解如果通过使用中间层库函数编程控制GPIO.一、wiringPiWiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi中的函数类似于Arduino的wiring系统。官网:/1、wiringPi安装(1)方案1-使用GIT工具通过GIT获得wiringPi的源码1git clone git://wiringPi2cd wiringPi3./buildbuild脚本会帮助你编译和安装wiringPi (2)方案1-使用GIT工具我们可以在网站上直接下载最新版本编译使用,/?p=wiringPi;a=summary在windows上下载wiringPi库,并复制到树莓派中,运行如下命令解压安装。(xxx代表版本号)1tar -zxvf wiringPi-xxx.tar.gz2cd wiringPi-xxx3./build 详细安装教程请参考wiringPI官网:/download-and-install/2、测试wiringPi包括一套gpio命令,使用gpio命令可以控制树莓派上的各种接口,通过以下指令可以测试wiringPi是否安装成功。1gpio -vgpio readall 从上图可以知道树莓派管脚有三种编号方式,下面以Pioneer600扩展板的LED1为例,第一种为板上编号(37),即中间两列,表示第几号插针。第二中为wiringPi编码(25),使用wiringPi库编程时是用wiringPi编号,第三种为BCM编号,这个是更加BCM管脚来编号的,使用bcm2835库或python的RPi.GPIO编程时使用BCM编号。我们可以使用gpio命令操作树莓派GPIO,下面我们可以gpio命令控制Pioneer600扩展的LED1.1gpio -g mode 26 out设置管脚为输出模式,-g参数表示是以BCM编号方式,如果去掉这个参数测以wiringPi编号方式,即为25。1gpio -g write 26 1设置管脚为高电平,点亮LED.1gpio -g write 26 0设置管脚为低电平,熄灭LED,1gpio -g read 26读取管脚当前状态更多gpio命令请查看:/raspberry-pi/wiringpi/the-gpio-utility/ 3、wiringPi程序:01#include02char LED = 25;0304int main(void)0506if(wiringPiSetup() 0)return1;07pinMode (LED,OUTPUT) ;0809while(1)1011digitalWrite(LED, 1) ;12delay (200);13digitalWrite(LED, 0) ;14delay (200);1516使用vi将代码添加到led.c文件中,运行如下命令编译并执行程序。按Ctrl+C终止程序。1gcc -Wall led.c o led -lwiringPi2sudo ./led注:(1)-Wall 表示编译时显示所有警告,-lwringPi表示编译时动态加载wringPi库(2)终止程序后,LED的状态为不确定,这和python程序相比显得有点不足。关于更多wiringPi的库函数,可参看wiringPi官网,也可参考wiringPi用户手册。/link?url=U_APBvE_ga5pSSwPwWABIGJymLVwyC-0W9AEOT2cjhlZzoLywa0-QpElYNT2yHvNV0P7BbqTZCgG0ctaqZLi_ovkAGXREBOE6h68eTt-Q3y 二、 bcm2835bcm2835库是树莓派cpu芯片的库函数,相当于stm32的固件库一样,底层是直接操作寄存器。而wiringPi库和python的RPi.GPIO库其底层都是通过读写linux系统的设备文件操作设备。 1、安装bcm2835库从bcm22835官网(/mikem/bcm2835/)下载最新版本的库,然后解压安装。1tar -zxvf bcm2835-1.xx.tar.gz2cd bcm2835-1.xx3./configure4make5sudo make check6sudo make install2、示例程序新建名为led.c的文件,添加如下程序。01#include0203#define PIN 2604int main(int argc, char *argv)0506if(!bcm2835_init()return1;07bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);0809while(1)1011bcm2835_gpio_write(PIN, HIGH);12bcm2835_delay(500);13bcm2835_gpio_write(PIN, LOW);14bcm2835_delay(500);1516bcm2835_close();17return0;18编译并执行程序,按Ctrl+C可结束程序。1gcc Wall led.c o led lbcm28352sudo ./led注:(1)-lbcm2835表示动态加载bcm2835库(2)注意bcm2835程序管脚使用bcm编号,和wiringPi编号不一样。(3)和wiringPi一样,程序结束时GPIO的状态不确定。三、python1、安装RPi.GPIO(1)先安装python-dev,输入以下指令。1sudo apt-get install python-dev(2)安装RPi.GPIO1#下载2wget /packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz3#解压:4tar -zxvf RPi.GPIO-0.5.11.tar.gz5#进入解压之后的目录 :6cd RPi.GPIO-0.5.3a7#启动安装 :8sudo python setup.py install2.示例程序新建led.py文件,添加如下代码并保存。01#!/usr/bin/python02# -*- coding:utf-8 -*-03import RPi.GPIOasGPIO04import time0506LED = 260708GPIO.setmode(GPIO.BCM)09GPIO.setup(LED,GPIO.OUT)10try:11whileTrue:12GPIO.output(LED,GPIO.HIGH)13time.sleep(1)14GPIO.output(LED,GPIO.LOW)15time.sleep(1)16except:17print(except)18 GPIO.cleanup()执行程序,按Ctrl+C结束程序1sudo python led.py注:(1)#!/usr/bin/envpython,定义python解析脚本的绝对路径。 (2)#-*-coding:utf-8-*-,python文件为utf-8格式,否则无法写入中文注释。 (3) GPIO.setmode(GPIO.BCM),采用bcm编号方式。 (4) python程序使用try except语言,当按下Ctrl+C结束程序是会触发异常,程序执行gpio.cleanup(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 垃圾运输系统与路网优化方案
- 年产8万吨不锈钢冷轧板建设项目环境影响报告表
- 铝合金铸造生产车间布局设计方案
- 建筑装饰材料检测与质量控制方案
- 租铺面3年合同范本
- 中式餐馆转让协议书
- 业务转包合同协议书
- 代管转让协议书范本
- 隧道盾构施工技术方案
- 入学协议退费协议书
- 政协履职管理办法
- 预防流感守护健康课件
- 三级安全教育培训-班组级考试题(有答案)
- 深海矿产勘探2025技术安全风险防控报告
- 工程审计结算管理办法
- 住培师资培训学习心得(总结文件)
- 2025年大型设备安装服务项目投资分析及可行性报告
- 运输公司全员安全生产责任制
- 心肺复苏试题及答案
- 2025年山东省高考招生统一考试高考真题历史试卷(真题+答案)
- 车钩减振降噪策略-洞察及研究
评论
0/150
提交评论