0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用PHP控制Arduino

454398 来源:wv 2019-09-25 09:18 次阅读

步骤1:平台兼容性

此方法在Windows下将无法使用。我不能告诉你我花了多长时间才弄清楚。在Windows和Linux下,我们使用的命令fopen()的实现方式不同,因此必须使用Linux。以前没用过?别着急,还不错。

步骤2:设置服务器

您需要获取运行PHP的服务器才能正常工作。我将假设您拥有Ubuntu的新副本。字面上有成千上万的有关如何安装Ubuntu的教程,因此,如果您不这样做,我将向您推荐

打开终端并输入:

sudo apt-get install php5 mysql-server apache2

它将提示您输入MySQL的root用户密码,因此请输入一个密码。

打开浏览器,然后转到http://localhost。您应该看到一个页面,上面写着“有效!”。接下来在终端中运行此命令:

sudo gedit/var/www/info.php

并粘贴以下代码:

《?php

phpinfo();

?》

保存并关闭文件,然后运行

sudo service apache2 restart

转到http://localhost/info.php

,您应该看到一个紫色表,其中包含一堆PHP东西。如果这样做,恭喜!您现在正在运行PHP服务器。接下来,让我们建立一个页面来控制Arduino

步骤3:触摸PHP中的串行端口

该技术的核心是fopen()命令。这通常用于打开文档以在代码中进行编辑(例如,如果您编写了一个脚本来制作一个包含一些信息的文本文件并保存它)。相反,我们将利用linux如何查看文件并在端口上使用它。从Ubuntu软件管理器安装Arduino。插入您的Arduino并打开arduino窗口。您应该在端口菜单下看到设备名称。可能是/dev/ttyUSB0或类似的名称。以下是一些示例代码,这些代码将打开该端口作为文件,并根据所按下的按钮将数字1写入6:

《?php

$ verz =“ 1.0”;

$ comPort =“/开发/ttyUSB0“ ;/*更改为正确的通讯端口*/

如果(isset($ _ POST [“ rcmd”])){

$ rcmd = $ _POST [“ rcmd”];

开关($ rcmd){

case Stop:

$ fp = fopen($ comPort,“ w”);

fwrite($ fp,1);/*这是它将写入的数字*/

fclose($ fp);

break;

case慢:

$ fp = fopen($ comPort,“ w”);

fwrite($ fp,2);/*这是它将写入的数字*/

fclose($ fp);

break;

case中:

$ fp = fopen($ comPort,“ w”);

fwrite($ fp,3);/*这是它将写入的数字*/

fclose($ fp);

break;

区分大小写:

$ fp = fopen($ comPort,“ w”);

fwrite($ fp,4);/*这是它将写入的数字*/

fclose($ fp);

break;

case右:

$ fp = fopen($ comPort,“ w”);

fwrite($ fp,5);/*这是它将写入的数字*/

fclose($ fp);

中断;

左写:

$ fp = fopen($ comPort,“ w”);

fwrite($ fp,6);/*这是它将写入的数字*/

fclose($ fp);

中断;

默认值:

die(‘废话,出了点问题。页面刚刚塞住。’) ;

}

}

?》

来自Arduino的PHP示例

版本《?php回声$ verz; ?》

”》

&nbsp&nbsp&nbsp&nbsp

&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp

&nbsp&nspspnbsp br》 《输入类型=“提交” value =“停止” name =“ rcmd”》

《输入》 =“提交” value =“慢” name =“ rcmd”》

《输入类型=“提交” value =“ Medium” name =“ rcmd”》

《输入类型=“提交” value =“快速” name =“ rcmd”》

第4步:工作原理和Arduino方面

每次单击页面上的按钮按下case语句,然后打开“文件”(实际上是端口),进入写入模式,写入单个ASCII数字,然后将其关闭。您每次都必须关闭它,否则它将不起作用。在Arduino方面,只需在loop()中使用Serial.read()从串行端口读取。我使用了一个大的if语句来检查每个ASCII码,因此如果发送了1,则执行一件事,如果发送2,则执行另一件事,依此类推。由于您正在运行PHP服务器,因此可以访问以下页面来自世界各地的服务器,它将控制Arduino。下面是一些我用来控制某些马达的arduino代码示例:

#include

//首先,设置伺服器

Servo伺服1;

Servo伺服2;

int debugPin = 13;//用于导致测试的东西

int motor1Pin = 9;//第一个电动机的端口号

int motor2Pin = 10;//第二个电动机的端口号

int usbnumber = 0;//此变量保存我们当前从串行读取的内容

void setup(){//在开始时调用一次

pinMode(motor1Pin,OUTPUT);

pinMode(debugPin,OUTPUT);

pinMode(motor2Pin,OUTPUT);

伺服1.attach(motor1Pin,1000,2000);

伺服2.attach(motor2Pin,1000,2000);

Serial.begin(9600);//启动串行端口

}

void loop(){//主循环

if(Serial.available()》 0){//如果串行端口上有任何东西,请读取

usbnumber = Serial.read();//将其存储在usbnumber变量中

}

if(usbnumber》 0){//如果我们读取了某些内容

if(usbnumber == 49){

Serve1.write(93);

Serve2.write(93);//如果我们读到1,则停止

analogWrite(debugPin,0);

}

if(usbnumber == 50){ 120);

Serve2.write(120);//如果读取的是2,则

AnalogWrite(debugPin,85);

}

if(usbnumber == 51){

Serve1.write(150);

Serve2.write (150);//如果我们读取了3个中号

AnalogWrite(debugPin,170);

}

if(usbnumber == 52){

Serve1.write(179);

Serve2.write (179);//如果我们读取4,则快速

AnalogWrite(debugPin,255);

}

if(usbnumber == 53){

Serve1.write(130);

Serve2.write (50);//如果我们读到5,则

AnalogWrite(debugPin,255);

}

if(usbnumber == 54){

Serve1.write(50);

Serve2.write (130);//如果我们读到6,则

AnalogWrite(debugPin,255);

}

}

usbnumber = 0;//重置搜索}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PHP
    PHP
    +关注

    关注

    0

    文章

    452

    浏览量

    26636
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186565
收藏 人收藏

    评论

    相关推荐

    怎样用Arduino测试锂电池容量

    本文详细介绍了如何用Arduino测量锂电池的容量。并附有电路图和Arduino的程序代码。
    的头像 发表于 07-30 09:14 685次阅读
    怎样用<b class='flag-5'>Arduino</b>测试锂电池容量

    何用Arduino开发STM32G070?

    何用Arduino开发STM32G070,各位大神有相关教程吗。我如何在Arduino的开发板管理器中添加STM32G070开发板,如何把程序下载到CPU中?
    发表于 04-07 08:22

    何用我的cy8cmbr3110或3102 capsense控制stm32?

    我在想怎么用 stm32l431 控制这个 cy8cmbre3110 或 3102,我找到了带有 arduino wire.h 的代码 库可以用 i2c 协议控制它但我不知道如何用我的
    发表于 01-25 08:17

    php编程用什么软件

    ),专为PHP开发而设计。它具有智能代码编辑器、错误突出显示、代码自动完成、代码重构等功能,可以大大提高开发效率。此外,它还支持版本控制系统(如Git)和调试PHP代码。 Visual Studio
    的头像 发表于 12-04 16:20 2657次阅读

    php的源码是什么开源语言

    PHP的源码是用C语言编写的,是一种开源的服务器端脚本语言。下面是关于PHP源码的详细介绍。 一、PHP简介 PHP(全称:PHP: Hyp
    的头像 发表于 12-04 16:11 1609次阅读

    php的mysql无法启动

    MySQL是一种常用的关系型数据库管理系统,而PHP是一种广泛应用于服务器端的脚本语言。在使用PHP开发网站或应用时,经常会碰到MySQL无法启动的问题。本文将详细介绍解决MySQL无法启动的方法
    的头像 发表于 12-04 15:59 1385次阅读

    php的源码是开放的吗

    PHP是一种开源的脚本语言,其源代码完全开放并可免费获取、使用和修改。这篇文章将详细介绍PHP的源码开放性。 一、PHP的源码开放性 PHP的源码是以
    的头像 发表于 12-04 15:57 1177次阅读

    php的配置文件是什么

    ,配置文件的名称默认为php.ini。该文件通常位于PHP安装目录下的conf文件夹中。当PHP解释器启动时,会自动加载php.ini文件,并根据其中的配置指令来设置运行环境。一些常见
    的头像 发表于 12-04 15:55 1454次阅读

    php的适用范围

    PHP是一种通用的脚本语言,特别适用于Web开发。它可以用来开发动态网页、网站和Web应用程序。本文将详细介绍PHP的适用范围及其优势。 首先,PHP在Web开发中的应用非常广泛。无论是简单的静态
    的头像 发表于 12-04 15:54 490次阅读

    php的特点有哪些

    PHP是一种通用的脚本语言,特点丰富多样。 PHP是一种开源的服务器端脚本语言,主要用于开发Web应用程序。它可以嵌入HTML代码中,也可以作为命令行脚本执行。PHP语言的发展始于上世纪90年代
    的头像 发表于 12-04 15:50 1458次阅读

    php是前端还是后端

    PHP(Hypertext Preprocessor)是一种流行的服务器端编程语言,用于开发动态网站和Web应用程序。尽管在某些情况下也可以在前端使用,但PHP主要被广泛应用于后端开发。在这篇文章中
    的头像 发表于 12-04 15:46 2189次阅读

    php运行机制和原理

    PHP是一种在服务器端执行的脚本语言,它被广泛用于开发动态网站。它的运行机制和原理非常重要,因为它决定了PHP脚本如何被解释执行和与服务器进行交互。 PHP的运行机制 PHP脚本的运行
    的头像 发表于 12-04 15:28 874次阅读

    php运行环境的配置步骤

    PHP是一种广泛使用的服务器端脚本语言,被用来开发Web应用程序。为了在计算机上运行PHP代码,我们需要配置PHP运行环境。本文将详细介绍PHP运行环境的配置步骤。 下载
    的头像 发表于 12-04 15:27 1102次阅读

    php运行环境本地测试地址是

    PHP运行环境本地测试地址是指在本地计算机上搭建的用于测试和运行PHP代码的的环境地址。搭建该运行环境可以方便开发人员在本地进行开发、调试和测试工作,以提高开发效率和优化代码质量。本文将详细介绍
    的头像 发表于 12-04 15:25 671次阅读

    php设计模式和应用场景

    ,从小型的网站到大型的企业级应用程序。 下面将介绍一些常见的PHP设计模式及其应用场景。 单例模式(Singleton Pattern): 单例模式用于限制类的实例化,确保一个类只有一个实例,并提供一个全局访问点。这在需要共享资源或控制访问点
    的头像 发表于 12-04 14:54 797次阅读