关于 php使用扩展控制树莓派io 驱动超声波测距

简介: 关于 php使用扩展控制树莓派io 驱动超声波测距

经过昨天一下午,终于写好了基于wiringPi 的php扩展,源码地址:https://github.com/tioncico/phpPi

只需要安装完毕,就可以调用函数了:

<?php
/**
 * Created by PhpStorm.
 * User: tioncico
 * Date: 19-7-6
 * Time: 下午4:45
 */
define('PI_TRIG',0);
define('PI_ECHO',1);
if (wiringPiSetup()===false){
    echo "初始化错误!";
    die;
}
//初始化引脚
ultraInit();
while (1) {
    //测距
    $dis = disMeasure();
    printf("distance = %0.2f cm\\n", $dis);
    piDelay(1000);
}
function ultraInit(){
    pinMode(PI\_ECHO, PI\_INPUT);
    pinMode(PI\_TRIG, PI\_OUTPUT);
}
function disMeasure(){
    //先关闭脉冲,初始化
    digitalWrite(PI\_TRIG,PI\_LOW);
    //等待2微秒
    piDelayMicroseconds(2);
    //发出超声波脉冲
    digitalWrite(PI\_TRIG, PI\_HIGH);
    piDelayMicroseconds(10);
    //等待10秒,关闭脉冲
    digitalWrite(PI\_TRIG, PI\_LOW);
    //关闭之后,马上开始判断获取声波
    while (!(digitalRead(PI_ECHO) == 1));
    $startTime = piMicros();
    //如果获取不到了,说明已经接收完毕
    while (!(digitalRead(PI_ECHO) == 0));
    $endTime = piMicros();
    //声音在空气中传播是34000cm/s, 1000000微秒是1秒,去掉来回的声波时间,求出距离
    $dis = ($endTime - $startTime) / 1000000 * 34000 / 2;  //求出距离
    return $dis;
}

使用root权限运行:

image.pngimage.png

目录
相关文章
|
6月前
|
运维 Unix Linux
Linux系统 PHP安装expect扩展详解
Linux系统 PHP安装expect扩展详解
85 5
|
6月前
|
Linux C++
|
2月前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
61 4
|
23天前
|
NoSQL 安全 Linux
MongoDB PHP 扩展
10月更文挑战第19天
12 0
MongoDB PHP 扩展
|
2月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
3月前
|
安全 前端开发 PHP
PHP与现代Web开发:构建高效和可扩展的应用程序
【8月更文挑战第29天】在这篇文章中,我们将深入探讨PHP如何适应现代Web开发的需求。我们将通过实际案例分析,揭示PHP的核心优势,并展示如何利用这些优势来构建高性能、可扩展的Web应用。文章不仅提供理论知识,还包括具体的代码示例,旨在帮助开发者更好地理解和运用PHP解决实际问题。
|
3月前
|
SQL 关系型数据库 MySQL
PHP与数据库交互的艺术:深入探讨PDO扩展
【8月更文挑战第28天】在数字信息时代的海洋里,PHP作为一艘灵活的帆船,承载着无数网站和应用的梦想。而PDO扩展,则是这艘帆船上不可或缺的导航仪,指引着数据安全与效率的航向。本文将带你领略PHP与数据库交互的艺术,深入浅出地探索PDO的世界,从连接数据库到执行复杂的查询,每一步都清晰可见。我们将一起航行在这段奇妙的旅程上,解锁数据的奥秘,体验编程的乐趣。
49 1
|
3月前
|
Ubuntu Linux
内核实验(九):添加IO驱动的阻塞读写功能
本文通过修改内核模块代码,介绍了如何在Linux内核中为IO驱动添加阻塞读写功能,使用等待队列和条件唤醒机制来实现读写操作的阻塞和非阻塞模式,并在Qemu虚拟机上进行了编译、部署和测试。
16 0
|
3月前
|
存储 安全 Linux
【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?
【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?
|
4月前
|
缓存 网络协议 算法
【Linux系统编程】深入剖析:四大IO模型机制与应用(阻塞、非阻塞、多路复用、信号驱动IO 全解读)
在Linux环境下,主要存在四种IO模型,它们分别是阻塞IO(Blocking IO)、非阻塞IO(Non-blocking IO)、IO多路复用(I/O Multiplexing)和异步IO(Asynchronous IO)。下面我将逐一介绍这些模型的定义:
205 2