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

    文章

    460

    浏览量

    28388
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195969
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Arduino plc和termux esp

    Arduino plc和termux esp
    的头像 发表于 12-06 06:41 1393次阅读

    何用FPGA控制ADV7513实现HDMI画面显示和音频播放

    HDMI接口显示使用DMT时序+TMDS编码来实现。当用FPGA控制HDMI的数据传输时,通常可以采用纯RTL实现TMDS算法或者使用专门的HDMI芯片(如ADV7513)这两种方案来完成。本文主要是介绍如何用FPGA控制ADV
    的头像 发表于 12-02 11:05 2487次阅读
    如<b class='flag-5'>何用</b>FPGA<b class='flag-5'>控制</b>ADV7513实现HDMI画面显示和音频播放

    贸泽电子开售全新Arduino UNO Q单板计算机

    贸泽电子开售全新Arduino UNO Q单板计算机。Arduino UNO Q单板计算机(SBC)将高性能计算与实时控制结合,提供理想的创新平台。
    的头像 发表于 11-08 09:50 961次阅读

    从 0 到 1:用 PHP 爬虫优雅地拿下京东商品详情

    PHP 语言 实现一个 可运行的京东商品爬虫 ,不仅能抓取商品标题、价格、图片、评价数,还能应对常见的反爬策略。全文附完整代码, 复制粘贴即可运行 。 一、为什么选择 PHP 做爬虫? 虽然 Python 是爬虫界的“老大哥”,但 P
    的头像 发表于 09-23 16:42 564次阅读
    从 0 到 1:用 <b class='flag-5'>PHP</b> 爬虫优雅地拿下京东商品详情

    如何在 NuMaker-IoT-M467 板上使用 Arduino IDE 控制 Wi-Fi 模块?

    在NuMaker开发板上,有一个ESP-12F Wi-Fi模块;但是,Arduino IDE 中的 NuMaker UNO 包不提供该模块的相关控制。如果您希望在 Arduino IDE 中
    发表于 09-04 08:28

    何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino
    的头像 发表于 08-08 20:16 3062次阅读
    如<b class='flag-5'>何用</b><b class='flag-5'>Arduino</b> Nano/UNO R3开发板给另一个<b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3开发板重新烧录引导程序bootlaoder

    Arduino与LabVIEW联合编程指南

    Arduino编程并与LabVIEW上位机结合实现设备的远程控制与数据采集。
    发表于 06-19 15:54 1次下载

    免费分享Arduino入门+进阶(全套例程+书籍)

    创意,比如控制灯光、传感器、电机等。以下是Arduino入门+进阶学习资料1.Arduino编程语言说明(相关文件可在下文扫码领取)2.Arduino系列学习例程
    的头像 发表于 05-22 11:40 793次阅读
    免费分享<b class='flag-5'>Arduino</b>入门+进阶(全套例程+书籍)

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    的发展,在Arduino出现以前,虽然也有很多公司在推广一些简单易用的可编程控制器,但是由于开发平台种类繁多,而且使用这些控制器基本上都需要对电子技术、数字逻辑、寄存器等内容进行多方面的了解和学习,才能
    发表于 05-13 09:28

    何用FOC电机控制MATLAB仿真!

    [导读]本文将介绍如何用FOC电机控制MATLAB仿真,首先从整体结构及功能介绍,用MATLAB2013以上版本打开文件,看到如图1所示界面,可以看到仿真最外层由四个模块组成:电源模块(红色方框
    发表于 03-28 14:51

    AN-737: 如何用ADIsimADC完成ADC建模

    电子发烧友网站提供《AN-737: 如何用ADIsimADC完成ADC建模.pdf》资料免费下载
    发表于 01-13 14:54 1次下载
    AN-737: 如<b class='flag-5'>何用</b>ADIsimADC完成ADC建模

    华为云 Flexus X 实例下的场景体验——小企业的福星——最简单的 php 环境搭建

     前言 都是 php 是全世界最好的语言,我也是非常的喜欢,虽然我是搞大数据的,但是 php 在很逗情况下对于个人开发者来说是非常友好的,对于一般小企业来说使用【华为云 Flexus X 实例】来
    的头像 发表于 01-02 11:59 689次阅读
    华为云 Flexus X 实例下的场景体验——小企业的福星——最简单的 <b class='flag-5'>php</b> 环境搭建

    STM32、Arduino、树莓派开发方式差异大吗

    异同点 STM32、Arduino、树莓派是三种不同的硬件平台,各自具有独特的特点和适用场景。   一、硬件特性   硬件平台 STM32 Arduino 树莓派 类型 微控制器 开源电子原型平台
    的头像 发表于 01-02 11:33 1930次阅读

    如何使用Arduino实现CAN总线通信呢

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 2817次阅读

    Arduino Nano Matter开发板正式上市

    Silicon Labs(芯科科技)和Arduino在近日共同宣布Arduino Nano Matter开发板现已正式上市。这是延续今年3 月芯科科技和Arduino释出Arduino
    的头像 发表于 12-10 13:50 1430次阅读