步驟1:平臺(tái)兼容性
此方法在Windows下將無法使用。我不能告訴你我花了多長時(shí)間才弄清楚。在Windows和Linux下,我們使用的命令fopen()的實(shí)現(xiàn)方式不同,因此必須使用Linux。以前沒用過?別著急,還不錯(cuò)。
步驟2:設(shè)置服務(wù)器
您需要獲取運(yùn)行PHP的服務(wù)器才能正常工作。我將假設(shè)您擁有Ubuntu的新副本。字面上有成千上萬的有關(guān)如何安裝Ubuntu的教程,因此,如果您不這樣做,我將向您推薦。
打開終端并輸入:
sudo apt-get install php5 mysql-server apache2
它將提示您輸入MySQL的root用戶密碼,因此請(qǐng)輸入一個(gè)密碼。
打開瀏覽器,然后轉(zhuǎn)到http://localhost。您應(yīng)該看到一個(gè)頁面,上面寫著“有效!”。接下來在終端中運(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ù)器。接下來,讓我們建立一個(gè)頁面來控制Arduino。
步驟3:觸摸PHP中的串行端口
該技術(shù)的核心是fopen()命令。這通常用于打開文檔以在代碼中進(jìn)行編輯(例如,如果您編寫了一個(gè)腳本來制作一個(gè)包含一些信息的文本文件并保存它)。相反,我們將利用linux如何查看文件并在端口上使用它。從Ubuntu軟件管理器安裝Arduino。插入您的Arduino并打開arduino窗口。您應(yīng)該在端口菜單下看到設(shè)備名稱。可能是/dev/ttyUSB0或類似的名稱。以下是一些示例代碼,這些代碼將打開該端口作為文件,并根據(jù)所按下的按鈕將數(shù)字1寫入6:
《?php
$ verz =“ 1.0”;
$ comPort =“/開發(fā)/ttyUSB0“ ;/*更改為正確的通訊端口*/
如果(isset($ _ POST [“ rcmd”])){
$ rcmd = $ _POST [“ rcmd”];
開關(guān)($ rcmd){
case Stop:
$ fp = fopen($ comPort,“ w”);
fwrite($ fp,1);/*這是它將寫入的數(shù)字*/
fclose($ fp);
break;
case慢:
$ fp = fopen($ comPort,“ w”);
fwrite($ fp,2);/*這是它將寫入的數(shù)字*/
fclose($ fp);
break;
case中:
$ fp = fopen($ comPort,“ w”);
fwrite($ fp,3);/*這是它將寫入的數(shù)字*/
fclose($ fp);
break;
區(qū)分大小寫:
$ fp = fopen($ comPort,“ w”);
fwrite($ fp,4);/*這是它將寫入的數(shù)字*/
fclose($ fp);
break;
case右:
$ fp = fopen($ comPort,“ w”);
fwrite($ fp,5);/*這是它將寫入的數(shù)字*/
fclose($ fp);
中斷;
左寫:
$ fp = fopen($ comPort,“ w”);
fwrite($ fp,6);/*這是它將寫入的數(shù)字*/
fclose($ fp);
中斷;
默認(rèn)值:
die(‘廢話,出了點(diǎn)問題。頁面剛剛?cè) !?;
}
}
?》
來自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語句,然后打開“文件”(實(shí)際上是端口),進(jìn)入寫入模式,寫入單個(gè)ASCII數(shù)字,然后將其關(guān)閉。您每次都必須關(guān)閉它,否則它將不起作用。在Arduino方面,只需在loop()中使用Serial.read()從串行端口讀取。我使用了一個(gè)大的if語句來檢查每個(gè)ASCII碼,因此如果發(fā)送了1,則執(zhí)行一件事,如果發(fā)送2,則執(zhí)行另一件事,依此類推。由于您正在運(yùn)行PHP服務(wù)器,因此可以訪問以下頁面來自世界各地的服務(wù)器,它將控制Arduino。下面是一些我用來控制某些馬達(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(){//在開始時(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;//重置搜索}
-
PHP
+關(guān)注
關(guān)注
0文章
454瀏覽量
26810 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187976
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
AN-737: 如何用ADIsimADC完成ADC建模
![AN-737: 如<b class='flag-5'>何用</b>ADIsimADC完成ADC建模](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
華為云 Flexus X 實(shí)例下的場(chǎng)景體驗(yàn)——小企業(yè)的福星——最簡(jiǎn)單的 php 環(huán)境搭建
![華為云 Flexus X 實(shí)例下的場(chǎng)景體驗(yàn)——小企業(yè)的福星——最簡(jiǎn)單的 <b class='flag-5'>php</b> 環(huán)境搭建](https://file1.elecfans.com//web3/M00/04/88/wKgZPGd2DxaABe9vAAGEG30XQlU997.png)
如何使用Arduino實(shí)現(xiàn)CAN總線通信呢
基于Arduino的串口通信項(xiàng)目
stm32與Arduino的比較
如何使用Arduino實(shí)現(xiàn)CAN總線通信
如何用Jacinto內(nèi)部的GPtimer輸出PWM信號(hào)控制屏幕背光
![如<b class='flag-5'>何用</b>Jacinto內(nèi)部的GPtimer輸出PWM信號(hào)<b class='flag-5'>控制</b>屏幕背光](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論