树莓派初次配置C++环境以及进行简单的hcsr04驱动
作者:互联网
树莓派初次配置C++环境以及进行简单的hcsr04驱动
这是我第一次使用树莓派,就想溜一下hcsr04模块,所以开整。这篇文章仅仅针对初学者的初次学习以及尝试。
当你已经拥有一块树莓派,并且成功烧写好了系统,进行了最基础的树莓派配置,并且拥有树莓派屏幕或者使用了SSH、VNC等可以进行远端操作时,你就可以进行下面的操作了。
1. 安装 wiringPI.h 库
先确认你的树莓派有没有安装GIT工具,可以在LX终端输入以下指令:
sudo apt-get install git-core
输入以上指令后可能需要输入【Y/n】,先观察显示内容的,如果已经
显示了安装最新版本,此时如果选择了Y就会报错,但是没有影响。
cd wiringPi
./build
然后应该就可以成功了,那么接下来进行测试
gpio -v
gpio readall
2. 编译出你需要的.cpp文件
其实你也可以安装一些其他软件敲代码,但是我现在就只会时用Geany
在/home/pi/TJQ/project
新建一个文件main.cpp
,然后就可以开始编译.cpp文件了。
#include <wiringPi.h>
#include <iostream>
#include <sys/time.h>
#include <fstream>
using namespace std;
#define Trig 28
#define Echo 29
/******************************************
函数:
定义Echo、Trig连接的IO的状态
参数:
NULL
返回值:
NULL
*****************************************/
void ultraInit(void)
{
pinMode(Echo, INPUT);
pinMode(Trig, OUTPUT);
}
/*×××××××××××××××××××××××***************
函数:
测量距离
参数:
NULL
返回值:
返回距离
***************************************/
float disMeasure(void)
{
struct timeval tv1;
struct timeval tv2;
long start, stop;
float dis;
digitalWrite(Trig, LOW);
delayMicroseconds(2);
digitalWrite(Trig, HIGH);
delayMicroseconds(10); //发出超声波脉冲
digitalWrite(Trig, LOW);
while (!(digitalRead(Echo) == 1))
;
gettimeofday(&tv1, NULL); //获取当前时间
while (!(digitalRead(Echo) == 0))
;
gettimeofday(&tv2, NULL); //获取当前时间
start = tv1.tv_sec * 1000000 + tv1.tv_usec; //微秒级的时间
stop = tv2.tv_sec * 1000000 + tv2.tv_usec;
dis = (float)(stop - start) / 1000000 * 34000 / 2; //求出距离
return dis;
}
int main(void)
{
float dis; //存放距离
if (wiringPiSetup() == -1) {
printf("setup wiringPi failed !");
return 1;
}
ultraInit();
while (1) {
dis = disMeasure();
if(dis<200)
printf("distance = %0.2f cm\n", dis);
delay(1000);
}
return 0;
}
3. 连接上你的hcsr04超声波模块
这个超声波模块的线需要按照代码的去接,以wiringPiTrig为标准的编码表,Trig接的28口,Echo接29口,GND接30口,Vcc接2口。
其实如果直接这么接,树莓派和超声波都有可能烧掉,所以有条件情况下一定要使用面包板接入电阻再运使用。
4. 使用编译器进行运行.cpp文件
在LX终端输入以下指令,即cd 文件路径
cd /home/pi/TJQ/project
下面的这一步是小写的LS,这一步是否运行问题不大,可以选择不运行
ls
下面的这一步必须有对wiringPi的这个声明,如果没有就会报错,下面的图就是没有声明的。
g++ -Wall -o main main.cpp -lwiringPi
./main
当你想结束识别的时候就按ctrl+c
进行终止运行
这里介绍是比较简单的那一种,如果需要写大工程,那很可能就得自己写一份makefile文件还有学习LX进行操作。如果有什么问题,请指出。
标签:树莓,NULL,Trig,C++,Echo,hcsr04,main,dis 来源: https://blog.csdn.net/qq_45834106/article/details/106242036