树莓派的外设开发---树莓派中的wiringPi库

在树莓派中安装wiringPi库

wiringPi库其实已经很熟悉了,在香橙派中大量使用过,这个库中集成了很多使用的功能性函数。

现在在树莓派上也安装wiringPi库:

1. wget https://project-downloads.drogon.net/wiringpi-latest.deb
2. sudo dpkg -i wiringpi-latest.deb

安装完成后,使用“gpio readall” 来测试是否安装完成:

wiringPi库安装完成 !

wiringPi的使用

对于wiringPi的使用,其实和香橙派中是一样一样的,简单总结一下:

  • 要记得包含库“#include <wiringPi.h>
  • 使用前要初始化“wiringPiSetup () 
  • 使用“pinMode (XXX, OUTPUT/INPUT)”设置IO口输入输出模式
  • 使用“digitalWrite (XXX, LOW/HIGH) ”写高低电平
  • 使用“digitalRead(XXX) ”读电平
  • 编译时加上“-lwiringPi ”链库

写一个简单的距离接近报警的demo:

将蜂鸣器的IO连接到物理引脚7;HC-SR04的Trig和Echo分别连到物理引脚11和13

dist_test.c:
#include <stdio.h>
#include <wiringPi.h>
#include <sys/time.h>

#define BEEP 7
#define Trig 0
#define Echo 2

void startHC() //先要给Trig一个至少10us/ms的高电平方波
{
	digitalWrite (Trig, LOW) ;
	delay(5); 
	digitalWrite (Trig, HIGH) ;
	delay(5);
	delay(5);
	digitalWrite (Trig, LOW) ;
}

int main (void)
{
	double diffTime;
	double dist;
	struct timeval startTime;
	struct timeval stopTime;

	wiringPiSetup () ; //初始化wiringPi库
	pinMode (Trig, OUTPUT); //设置输入输出模式
	pinMode (Echo, INPUT);
	pinMode (BEEP, OUTPUT);

	digitalWrite (Trig, LOW) ; //IO口写数据
	digitalWrite (Echo, LOW) ;

	while(1){
		startHC();
		while(digitalRead(Echo) == 0);//程序会卡在这里直到Echo变高的一瞬间
		gettimeofday(&startTime,NULL);
		while(digitalRead(Echo) == 1); //程序会卡在这里直到Echo变低的一瞬间
		gettimeofday(&stopTime,NULL);

		diffTime = 1000000*(stopTime.tv_sec - startTime.tv_sec) + (stopTime.tv_usec - startTime.tv_usec);
		dist = 0.034 * diffTime * 0.5;

//		printf("time = %f us\n",diffTime);
//		printf("dist = %f\n",dist);

		if(dist < 10){
			digitalWrite (BEEP, LOW) ;
			delay(100);
			digitalWrite (BEEP, HIGH) ;
		}else{
			digitalWrite (BEEP, HIGH) ;
		}

	}


	return 0;
}
编译语句:
gcc dist_test.c -lwiringPi

之前香橙派的时候好像要链好多库来着: 

gcc XXX.c -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt

代码成功运行!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值