中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx
- 文档编号:24422356
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:10
- 大小:142.04KB
中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx
《中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx》由会员分享,可在线阅读,更多相关《中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx(10页珍藏版)》请在冰豆网上搜索。
中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下
上一章我们讲解了在linux系统下如何通过读写设备文件的方式控制GPIO点亮LED灯,本章我们继续讲解如果通过使用中间层库函数编程控制GPIO.
一、wiringPi
WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi中的函数类似于Arduino的wiring系统。
官网:
1、wiringPi安装
(1)方案1-使用GIT工具
通过GIT获得wiringPi的源码
1
gitclonegit:
2
cdwiringPi
3
./build
build脚本会帮助你编译和安装wiringPi
(2)方案1-使用GIT工具
我们可以在网站上直接下载最新版本编译使用,s:
在windows上下载wiringPi库,并复制到树莓派中,运行如下命令解压安装。
(xxx代表版本号)
1
tar-zxvfwiringPi-xxx.tar.gz
2
cdwiringPi-xxx
3
./build
详细安装教程请参考wiringPI官网:
2、测试
wiringPi包括一套gpio命令,使用gpio命令可以控制树莓派上的各种接口,通过以下指令可以测试wiringPi是否安装成功。
1
left;"> 9pt;line-height: 1.8em;">gpio-v
从上图可以知道树莓派管脚有三种编号方式,下面以Pioneer600扩展板的LED1为例,第一种为板上编号(37),即中间两列,表示第几号插针。
第二中为wiringPi编码(25),使用wiringPi库编程时是用wiringPi编号,第三种为BCM编号,这个是更加BCM管脚来编号的,使用bcm2835库或python的RPi.GPIO编程时使用BCM编号。
我们可以使用gpio命令操作树莓派GPIO,下面我们可以gpio命令控制Pioneer600扩展的LED1.
1
gpio-gmode26out
设置管脚为输出模式,-g参数表示是以BCM编号方式,如果去掉这个参数测以wiringPi编号方式,即为25。
1
gpio-gwrite261
设置管脚为高电平,点亮LED.
1
gpio-gwrite260
设置管脚为低电平,熄灭LED,
1
gpio-gread26
读取管脚当前状态
更多gpio命令请查看:
s:
3、wiringPi程序:
01
#include
02
charLED=25;
03
04
intmain(void)
05
{
06
if(wiringPiSetup()<0)return 1;
07
pinMode(LED,OUTPUT);
08
09
while
(1)
10
{
11
digitalWrite(LED,1);
12
delay(200);
13
digitalWrite(LED,0);
14
delay(200);
15
}
16
}
使用vi将代码添加到led.c文件中,运行如下命令编译并执行程序。
按Ctrl+C终止程序。
1
gcc-Wallled.c–oled-lwiringPi
2
sudo./led
注:
(1)-Wall表示编译时显示所有警告,-lwringPi表示编译时动态加载wringPi库
(2)终止程序后,LED的状态为不确定,这和python程序相比显得有点不足。
关于更多wiringPi的库函数,可参看wiringPi官网,也可参考wiringPi用户手册。
:
wenku.baidu/link?
url=U_APBvE_ga5pSSwPwWABIGJymLVwyC-0W9AEOT2cjhlZzoLywa0-QpElYNT2yHvNV0P7BbqTZCgG0ctaqZLi_ovkAGXREBOE6h68eTt-Q3y
二、bcm2835
bcm2835库是树莓派cpu芯片的库函数,相当于stm32的固件库一样,底层是直接操作寄存器。
而wiringPi库和python的RPi.GPIO库其底层都是通过读写linux系统的设备文件操作设备。
1、安装bcm2835库
从bcm22835官网()下载最新版本的库,然后解压安装。
1
tar-zxvfbcm2835-1.xx.tar.gz
2
cdbcm2835-1.xx
3
./configure
4
make
5
sudomakecheck
6
sudomakeinstall
2、示例程序
新建名为led.c的文件,添加如下程序。
01
#include
02
03
#definePIN26
04
intmain(intargc,char**argv)
05
{
06
if (!
bcm2835_init())return 1;
07
bcm2835_gpio_fsel(PIN,BCM2835_GPIO_FSEL_OUTP);
08
09
while
(1)
10
{
11
bcm2835_gpio_write(PIN,HIGH);
12
bcm2835_delay(500);
13
bcm2835_gpio_write(PIN,LOW);
14
bcm2835_delay(500);
15
}
16
bcm2835_close();
17
return 0;
18
}
编译并执行程序,按Ctrl+C可结束程序。
1
gcc–Wallled.c–oled–lbcm2835
2
sudo./led
注:
(1)-lbcm2835表示动态加载bcm2835库
(2)注意bcm2835程序管脚使用bcm编号,和wiringPi编号不一样。
(3)和wiringPi一样,程序结束时GPIO的状态不确定。
三、python
1、安装RPi.GPIO
(1)先安装python-dev,输入以下指令。
1
sudoapt-getinstallpython-dev
(2)安装RPi.GPIO
1
9pt;line-height: 1.8em;">#下载 2 wgets: pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz 3 #解压: 4 tar-zxvfRPi.GPIO-0.5.11.tar.gz 5 #进入解压之后的目录: 6 cdRPi.GPIO-0.5.3a 7 #启动安装: 8 sudopythonsetup.pyinstall 2.示例程序 新建led.py文件,添加如下代码并保存。 01 #! /usr/bin/python 02 #-*-coding: utf-8-*- 03 importRPi.GPIO as GPIO 04 importtime 05 06 LED=26 07 08 GPIO.setmode(GPIO.BCM) 09 GPIO.setup(LED,GPIO.OUT) 10 try: 11 while True: 12 GPIO.output(LED,GPIO.HIGH) 13 time.sleep (1) 14 GPIO.output(LED,GPIO.LOW) 15 time.sleep (1) 16 except: 17 print("except") 18 9pt;line-height: 25.2000007629395px;"> GPIO.cleanup() 执行程序,按Ctrl+C结束程序 1 sudopythonled.py 注: (1)#! /usr/bin/env python,定义python解析脚本的绝对路径。 (2)# -*- coding: utf-8 -*- ,python文件为utf-8格式,否则无法写入中文注释。 (3) GPIO.setmode(GPIO.BCM),采用bcm编号方式。 (4)python程序使用tryexcept语言,当按下Ctrl+C结束程序是会触发异常,程序执行gpio.cleanup()语句清楚GPIO管脚状态。 对python语言不是很熟悉的孩童,可以查看Python基础教程: 这里有一个python语言的wiringPi库,有兴趣的可以参考: s: github/WiringPi/WiringPi2-Python
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中职扩展资源包资料树莓派系列教程8 如何点亮一个LED灯下 扩展 资源 资料 派系 教程 如何 点亮 一个 LED
![提示](https://static.bdocx.com/images/bang_tan.gif)