




免费预览已结束,剩余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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 娱乐产业艺人劳动合同及商业活动管理协议
- 物业管理法律法规培训与物业管理规范执行协议
- 离婚协议书模板:包含养老金分割与社保权益处理
- 《离婚协议书范本:离婚后房产买卖及分割》
- 离婚补充协议:孩子抚养费及生活费用调整方案合同
- 离婚涉及上市公司股权处置及收益分配协议书
- 特种作战战例课件
- 化妆培训学校课程
- 农林技术技能测试题及答案
- 初中信息技术vb试题及答案
- 投资合作合同协议书
- 施工交通安全教育
- 幼儿园家访培训课件
- 离职与人事交接
- Unit 2 What's interesting about families(说课稿)-2024-2025学年沪教版(2024)英语三年级上册
- 2025-2030年中国环氧丙烷行业发展趋势展望与投资策略分析报告
- 上海市第一至十八届高一物理基础知识竞赛试题及答案
- 十二指肠恶性肿瘤护理查房
- 【MOOC】《医学心理学》(北京大学)章节期末中国大学慕课答案
- 《国际跳棋教学》课件
- 办公楼安防系统方案
评论
0/150
提交评论