0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用PHP控制Arduino

454398 ? 來(lái)源:wv ? 2019-09-25 09:18 ? 次閱讀

步驟1:平臺(tái)兼容性

此方法在Windows下將無(wú)法使用。我不能告訴你我花了多長(zhǎng)時(shí)間才弄清楚。在Windows和Linux下,我們使用的命令fopen()的實(shí)現(xiàn)方式不同,因此必須使用Linux。以前沒(méi)用過(guò)?別著急,還不錯(cuò)。

步驟2:設(shè)置服務(wù)器

您需要獲取運(yùn)行PHP的服務(wù)器才能正常工作。我將假設(shè)您擁有Ubuntu的新副本。字面上有成千上萬(wàn)的有關(guān)如何安裝Ubuntu的教程,因此,如果您不這樣做,我將向您推薦。

打開(kāi)終端并輸入:

sudo apt-get install php5 mysql-server apache2

它將提示您輸入MySQL的root用戶密碼,因此請(qǐng)輸入一個(gè)密碼。

打開(kāi)瀏覽器,然后轉(zhuǎn)到http://localhost。您應(yīng)該看到一個(gè)頁(yè)面,上面寫(xiě)著“有效!”。接下來(lái)在終端中運(yùn)行此命令:

sudo gedit/var/www/info.php

并粘貼以下代碼:

《?php

phpinfo();

?》

保存并關(guān)閉文件,然后運(yùn)行

sudo service apache2 restart

轉(zhuǎn)到http://localhost/info.php

,您應(yīng)該看到一個(gè)紫色表,其中包含一堆PHP東西。如果這樣做,恭喜!您現(xiàn)在正在運(yùn)行PHP服務(wù)器。接下來(lái),讓我們建立一個(gè)頁(yè)面來(lái)控制Arduino。

步驟3:觸摸PHP中的串行端口

該技術(shù)的核心是fopen()命令。這通常用于打開(kāi)文檔以在代碼中進(jìn)行編輯(例如,如果您編寫(xiě)了一個(gè)腳本來(lái)制作一個(gè)包含一些信息的文本文件并保存它)。相反,我們將利用linux如何查看文件并在端口上使用它。從Ubuntu軟件管理器安裝Arduino。插入您的Arduino并打開(kāi)arduino窗口。您應(yīng)該在端口菜單下看到設(shè)備名稱??赡苁?dev/ttyUSB0或類(lèi)似的名稱。以下是一些示例代碼,這些代碼將打開(kāi)該端口作為文件,并根據(jù)所按下的按鈕將數(shù)字1寫(xiě)入6:

《?php

$ verz =“ 1.0”;

$ comPort =“/開(kāi)發(fā)/ttyUSB0“ ;/*更改為正確的通訊端口*/

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

$ rcmd = $ _POST [“ rcmd”];

開(kāi)關(guān)($ rcmd){

case Stop:

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

fwrite($ fp,1);/*這是它將寫(xiě)入的數(shù)字*/

fclose($ fp);

break;

case慢:

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

fwrite($ fp,2);/*這是它將寫(xiě)入的數(shù)字*/

fclose($ fp);

break;

case中:

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

fwrite($ fp,3);/*這是它將寫(xiě)入的數(shù)字*/

fclose($ fp);

break;

區(qū)分大小寫(xiě):

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

fwrite($ fp,4);/*這是它將寫(xiě)入的數(shù)字*/

fclose($ fp);

break;

case右:

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

fwrite($ fp,5);/*這是它將寫(xiě)入的數(shù)字*/

fclose($ fp);

中斷;

左寫(xiě):

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

fwrite($ fp,6);/*這是它將寫(xiě)入的數(shù)字*/

fclose($ fp);

中斷;

默認(rèn)值:

die(‘廢話,出了點(diǎn)問(wèn)題。頁(yè)面剛剛?cè)??!?;

}

}

?》

來(lái)自Arduino的PHP示例

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

”》

&nbsp&nbsp&nbsp&nbsp

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

&nbsp&nspspnbsp br》 《輸入類(lèi)型=“提交” value =“停止” name =“ rcmd”》

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

《輸入類(lèi)型=“提交” value =“ Medium” name =“ rcmd”》

《輸入類(lèi)型=“提交” value =“快速” name =“ rcmd”》

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

每次單擊頁(yè)面上的按鈕按下case語(yǔ)句,然后打開(kāi)“文件”(實(shí)際上是端口),進(jìn)入寫(xiě)入模式,寫(xiě)入單個(gè)ASCII數(shù)字,然后將其關(guān)閉。您每次都必須關(guān)閉它,否則它將不起作用。在Arduino方面,只需在loop()中使用Serial.read()從串行端口讀取。我使用了一個(gè)大的if語(yǔ)句來(lái)檢查每個(gè)ASCII碼,因此如果發(fā)送了1,則執(zhí)行一件事,如果發(fā)送2,則執(zhí)行另一件事,依此類(lèi)推。由于您正在運(yùn)行PHP服務(wù)器,因此可以訪問(wèn)以下頁(yè)面來(lái)自世界各地的服務(wù)器,它將控制Arduino。下面是一些我用來(lái)控制某些馬達(dá)的arduino代碼示例:

#include

//首先,設(shè)置伺服器

Servo伺服1;

Servo伺服2;

int debugPin = 13;//用于導(dǎo)致測(cè)試的東西

int motor1Pin = 9;//第一個(gè)電動(dòng)機(jī)的端口號(hào)

int motor2Pin = 10;//第二個(gè)電動(dòng)機(jī)的端口號(hào)

int usbnumber = 0;//此變量保存我們當(dāng)前從串行讀取的內(nèi)容

void setup(){//在開(kāi)始時(shí)調(diào)用一次

pinMode(motor1Pin,OUTPUT);

pinMode(debugPin,OUTPUT);

pinMode(motor2Pin,OUTPUT);

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

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

Serial.begin(9600);//啟動(dòng)串行端口

}

void loop(){//主循環(huán)

if(Serial.available()》 0){//如果串行端口上有任何東西,請(qǐng)讀取

usbnumber = Serial.read();//將其存儲(chǔ)在usbnumber變量中

}

if(usbnumber》 0){//如果我們讀取了某些內(nèi)容

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個(gè)中號(hào)

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;//重置搜索}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PHP
    PHP
    +關(guān)注

    關(guān)注

    0

    文章

    452

    瀏覽量

    26576
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185929
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    怎樣用Arduino測(cè)試鋰電池容量

    本文詳細(xì)介紹了如何用Arduino測(cè)量鋰電池的容量。并附有電路圖和Arduino的程序代碼。
    的頭像 發(fā)表于 07-30 09:14 ?390次閱讀
    怎樣用<b class='flag-5'>Arduino</b>測(cè)試鋰電池容量

    何用Arduino開(kāi)發(fā)STM32G070?

    何用Arduino開(kāi)發(fā)STM32G070,各位大神有相關(guān)教程嗎。我如何在Arduino的開(kāi)發(fā)板管理器中添加STM32G070開(kāi)發(fā)板,如何把程序下載到CPU中?
    發(fā)表于 04-07 08:22

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

    我在想怎么用 stm32l431 控制這個(gè) cy8cmbre3110 或 3102,我找到了帶有 arduino wire.h 的代碼 庫(kù)可以用 i2c 協(xié)議控制它但我不知道如何用我的
    發(fā)表于 01-25 08:17

    php編程用什么軟件

    ),專(zhuān)為PHP開(kāi)發(fā)而設(shè)計(jì)。它具有智能代碼編輯器、錯(cuò)誤突出顯示、代碼自動(dòng)完成、代碼重構(gòu)等功能,可以大大提高開(kāi)發(fā)效率。此外,它還支持版本控制系統(tǒng)(如Git)和調(diào)試PHP代碼。 Visual Studio
    的頭像 發(fā)表于 12-04 16:20 ?2336次閱讀

    php的源碼是什么開(kāi)源語(yǔ)言

    PHP的源碼是用C語(yǔ)言編寫(xiě)的,是一種開(kāi)源的服務(wù)器端腳本語(yǔ)言。下面是關(guān)于PHP源碼的詳細(xì)介紹。 一、PHP簡(jiǎn)介 PHP(全稱:PHP: Hyp
    的頭像 發(fā)表于 12-04 16:11 ?1378次閱讀

    php的mysql無(wú)法啟動(dòng)

    MySQL是一種常用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),而PHP是一種廣泛應(yīng)用于服務(wù)器端的腳本語(yǔ)言。在使用PHP開(kāi)發(fā)網(wǎng)站或應(yīng)用時(shí),經(jīng)常會(huì)碰到MySQL無(wú)法啟動(dòng)的問(wèn)題。本文將詳細(xì)介紹解決MySQL無(wú)法啟動(dòng)的方法
    的頭像 發(fā)表于 12-04 15:59 ?1091次閱讀

    php的源碼是開(kāi)放的嗎

    PHP是一種開(kāi)源的腳本語(yǔ)言,其源代碼完全開(kāi)放并可免費(fèi)獲取、使用和修改。這篇文章將詳細(xì)介紹PHP的源碼開(kāi)放性。 一、PHP的源碼開(kāi)放性 PHP的源碼是以
    的頭像 發(fā)表于 12-04 15:57 ?1010次閱讀

    php的配置文件是什么

    ,配置文件的名稱默認(rèn)為php.ini。該文件通常位于PHP安裝目錄下的conf文件夾中。當(dāng)PHP解釋器啟動(dòng)時(shí),會(huì)自動(dòng)加載php.ini文件,并根據(jù)其中的配置指令來(lái)設(shè)置運(yùn)行環(huán)境。一些常見(jiàn)
    的頭像 發(fā)表于 12-04 15:55 ?1350次閱讀

    php的適用范圍

    PHP是一種通用的腳本語(yǔ)言,特別適用于Web開(kāi)發(fā)。它可以用來(lái)開(kāi)發(fā)動(dòng)態(tài)網(wǎng)頁(yè)、網(wǎng)站和Web應(yīng)用程序。本文將詳細(xì)介紹PHP的適用范圍及其優(yōu)勢(shì)。 首先,PHP在Web開(kāi)發(fā)中的應(yīng)用非常廣泛。無(wú)論是簡(jiǎn)單的靜態(tài)
    的頭像 發(fā)表于 12-04 15:54 ?423次閱讀

    php的特點(diǎn)有哪些

    PHP是一種通用的腳本語(yǔ)言,特點(diǎn)豐富多樣。 PHP是一種開(kāi)源的服務(wù)器端腳本語(yǔ)言,主要用于開(kāi)發(fā)Web應(yīng)用程序。它可以嵌入HTML代碼中,也可以作為命令行腳本執(zhí)行。PHP語(yǔ)言的發(fā)展始于上世紀(jì)90年代
    的頭像 發(fā)表于 12-04 15:50 ?1258次閱讀

    php是前端還是后端

    PHP(Hypertext Preprocessor)是一種流行的服務(wù)器端編程語(yǔ)言,用于開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站和Web應(yīng)用程序。盡管在某些情況下也可以在前端使用,但PHP主要被廣泛應(yīng)用于后端開(kāi)發(fā)。在這篇文章中
    的頭像 發(fā)表于 12-04 15:46 ?2010次閱讀

    php運(yùn)行機(jī)制和原理

    PHP是一種在服務(wù)器端執(zhí)行的腳本語(yǔ)言,它被廣泛用于開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站。它的運(yùn)行機(jī)制和原理非常重要,因?yàn)樗鼪Q定了PHP腳本如何被解釋執(zhí)行和與服務(wù)器進(jìn)行交互。 PHP的運(yùn)行機(jī)制 PHP腳本的運(yùn)行
    的頭像 發(fā)表于 12-04 15:28 ?765次閱讀

    php運(yùn)行環(huán)境的配置步驟

    PHP是一種廣泛使用的服務(wù)器端腳本語(yǔ)言,被用來(lái)開(kāi)發(fā)Web應(yīng)用程序。為了在計(jì)算機(jī)上運(yùn)行PHP代碼,我們需要配置PHP運(yùn)行環(huán)境。本文將詳細(xì)介紹PHP運(yùn)行環(huán)境的配置步驟。 下載
    的頭像 發(fā)表于 12-04 15:27 ?959次閱讀

    php運(yùn)行環(huán)境本地測(cè)試地址是

    PHP運(yùn)行環(huán)境本地測(cè)試地址是指在本地計(jì)算機(jī)上搭建的用于測(cè)試和運(yùn)行PHP代碼的的環(huán)境地址。搭建該運(yùn)行環(huán)境可以方便開(kāi)發(fā)人員在本地進(jìn)行開(kāi)發(fā)、調(diào)試和測(cè)試工作,以提高開(kāi)發(fā)效率和優(yōu)化代碼質(zhì)量。本文將詳細(xì)介紹
    的頭像 發(fā)表于 12-04 15:25 ?537次閱讀

    php設(shè)計(jì)模式和應(yīng)用場(chǎng)景

    ,從小型的網(wǎng)站到大型的企業(yè)級(jí)應(yīng)用程序。 下面將介紹一些常見(jiàn)的PHP設(shè)計(jì)模式及其應(yīng)用場(chǎng)景。 單例模式(Singleton Pattern): 單例模式用于限制類(lèi)的實(shí)例化,確保一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn)。這在需要共享資源或控制訪問(wèn)點(diǎn)
    的頭像 發(fā)表于 12-04 14:54 ?642次閱讀