树莓派实验教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Raspberry Pi板实验教程
实验一、点亮LED
在Raspberry Pi板的边上有2列排针,1列13脚一共26脚。这2列排针叫GPIO口,在Raspberry Pi板搭载的系统下,用户可以使用C语言或Python语言对这2列GPIO口进行控制,以此来控制外接的外部设备。
在这里,我们选用C语言来进行编程控制。首先,在使用C语言编程之前,要先将Raspberry Pi板连接上网,下载一个GPIO的wirngpi函数库。wirngpi 函数库是由一个外国人编写的,在使用C语言的时候可以通过对这个函数库的函数调用来对操作GPIO口。
点击LXTerminal进入root用户权限的命令行模式,依次键入以下命令:sudo apt-get update(需要一定等待时间,与网速有关)
sudo apt-get upgrade(需要一定等待时间,与网速有关)
sudo apt-get install git-core
git clone git:///wiringPi
cd wiringPi
git pull origin
cd wiringPi
./build
下载并安装好wiringPi之后,再来看看GPIO口的排列。将Raspberry Pi 板放置为两列GPIO口在右上角的方式,这两列GPIO口的引脚位如下图所示。
图1
图1右边的这张图,就是GPIO的实际引脚位。而左边的图则是wirngpi 库定义的引脚位图。编程的时候,只需要以左图为标准就可以了,不需要理会右图。现在,我们要使用GPIO口来控制LED的亮灭。LED就是发光二极管,这里需要一块外接的电路板。如下图:
图2
这块板的电路图如下:
图3
这块板是用来驱动步进电机转动的,板子上有4个发光二极管分别接在
ULN2003的四个输出上。将这板连接到Raspberry Pi板上就可以通过操作Raspberry Pi板的GPIO来控制电机板上的发光二级管。
用杜邦线将Raspberry Pi板和电机板连接起来,如果只是简单的控制上面的1个发光二极管,那么只需要连接三条线:电源线(VCC)、地线(GND)和一条IO线。以图4为例:
图4
Raspberry Pi板上有3.3V(1脚)和5V(2脚)2种电源,名称为DNC 的引脚则为地线(9,14,17,20,25图中标为26有误,图来源于网络),名称为GPIOx的则是普通的IO口(GPIO0,GPIO1,GPIO2,GPIO3,GPIO4,GPIO5,GPIO6)。剩下的接口则为有特殊功能的一些接口(暂时先不管)。这块电机板需要5V的电源,那么就需要把Raspberry Pi板的2号脚接到电机板的VCC脚上,再在DNC中选一个脚(那个都行,此处选25脚)接到电机板的GND脚上。在GPIO0-GPIO7里挑选1个脚接到电机板的IN1-IN4脚中的任意一个脚上,此处选取GPIO0接到电机板的IN1上,连接完毕如图5所示:
图5
白色线为电源,黄色线为地线,黑色线为IO线。连接完成后,就可以开始编程控制了。
在X-Windows环境下,按照之前的介绍点击FileManager进入到路径/home/pi下,在此路径下建立一个文件夹,命名为diy(鼠标右键建立),鼠标双击进入,在里面再建立一个文件夹,命名为01_led_on文件夹,以此文件夹作为此次实验的C语言源程序的存放地方。另外说一句,在X-Windows下,文件的操作相对来说简单不少,但Linux本身是个命令行系统,X-Windows环境下有一些文件操作是进行不了的,一些文件连简单的复制粘贴都弄不了,一定要到命令行模式下进行才可以,具体这里不赘述。
01_led_on文件夹下建立一个C语言的源文件,名称为led_on.c,然后右键用leafpad打开它,leafpad是系统里自带的一个类似于记事本的简单程序,可以用来做简单的文本输入。Linux下,有nano,vim等一些c语言的文本编辑器,支持语法高亮,但此处程序不长,简单起见使用leafpad来输入源程序就可以了。在led_on.c里输入图6中的代码
图6
程序不长,除掉留白和注释只有16行。下面简单解释一下这几句程序。
6-9行是4个头文件的包含7,8,9是三个linux系统下的头文件,stdio.h是标准输入输出接口头文件,这个头文件在windows下用VC编程也有;unistd.h 是统定义符号常量的头文件,里面包含了一些系统服务类的函数原型,这个头文件有点类似于windows系统下的windows.h文件;stdlib.h是C语言的标准函数库文件,这个windows系统下也有。基本上在linux下编程,这三个头文件都会包含进去。再来看第6行里的wiringPi.h,这个头文件是一开始下载的wiringPi 库提供的。之前说过,wiringPi库里面提供一些函数,给编程用户操作GPIO口。
11行是个宏,13行是个延时函数的声明,这个延时函数在这没使用,等下有用,25-27行是这个延时函数的原型,原型里调用了usleep( x)函数,这个函数就在unistd.h头文件里,作用是将进程挂起x微秒。
主函数从14-21行,16-17两行调用wiringPi.h里一个函数wiringPiSetup( ),用来检测wiringPi库是否正常,不正常会返回-1,检测到不正常程序直接退出主函数并返回1。假如认定wiringPi库一定正常,这2句代码不写也没问题。
18行的也是调用wiringPi.h里的函数pinMode(x,y),这个函数是用来设置GPIO口的模式的,参数有2个,第一个参数x指定是哪个GPIO口,y表示哪个模式。在此处将括号的宏展开,可以得知第一个参数为0,第二个参数为OUTPUT,意思就是把GPIO0设置为输出模式,第一个参数之所以为0,道