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

在树莓派中安装wiringPi库

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

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

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

树莓派的外设开发---树莓派中的wiringPi库_第1张图片

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

树莓派的外设开发---树莓派中的wiringPi库_第2张图片

wiringPi库安装完成 !

wiringPi的使用

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

  • 要记得包含库“#include
  • 使用前要初始化“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 
#include 
#include 

#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

代码成功运行!

你可能感兴趣的:(linux,运维,服务器,树莓派)