树莓派初次配置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进行操作。如果有什么问题,请指出。

猜你喜欢

转载自blog.csdn.net/qq_45834106/article/details/106242036
今日推荐