中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx

上传人:b****2 文档编号:24422356 上传时间:2023-05-27 格式:DOCX 页数:10 大小:142.04KB
下载 相关 举报
中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx_第1页
第1页 / 共10页
中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx_第2页
第2页 / 共10页
中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx_第3页
第3页 / 共10页
中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx_第4页
第4页 / 共10页
中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx

《中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx》由会员分享,可在线阅读,更多相关《中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx(10页珍藏版)》请在冰豆网上搜索。

中职扩展资源包资料树莓派系列教程8如何点亮一个LED灯下.docx

中职扩展资源包资料树莓派系列教程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

gpioreadall

    从上图可以知道树莓派管脚有三种编号方式,下面以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

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1