2015-08-25 72 views
0

我試圖做一個arduino代碼來從網頁獲取值來打開或關閉led。我的代碼正在工作,但它只會從頁面檢索1或0值一次。我試圖搞亂循環參數,但那只是導致錯誤。Arduino循環/安裝問題

#include <SPI.h> 
#include <Ethernet.h> 


const int ledPin = 8; 
byte mac[] = { Mac address }; 
byte ip[] = { ip }; 
byte server[] = { ip }; 

EthernetClient client; 

void setup() { 

    Serial.begin(9600); 
    while (!Serial) { 
    ; 
    } 

    if (Ethernet.begin(mac) == 0) { 
Serial.println("Failed to configure Ethernet using DHCP"); 
Ethernet.begin(mac, ip); 
    } 

    delay(1000); 
    Serial.println("connecting..."); 

    if (client.connect(server, 80)) { 
    Serial.println("connected"); 
    client.println("GET /LEDstate.txt READ_FILE"); 
    client.println("Host: TestServer"); 
    client.println("Connection: close"); 
    client.println(); 
    } 
    else { 
    Serial.println("connection failed"); 
    } 

    pinMode(ledPin, OUTPUT); 
} 

void loop() 
{ 

    if (client.available()) { 
char c = client.read(); 
Serial.print(c); 

if (c == '1'){ 
    digitalWrite(ledPin, HIGH); 
} 
else if (c == '0') { 
    digitalWrite(ledPin, LOW); 
} 

    } 

    if (!client.connected()) { 
Serial.println(); 
Serial.println("disconnecting."); 
client.stop(); 
while(true); 
    } 
} 

爲了保護隱私,我刪除了ip和mac地址。

我想讓它循環外部頁面上的值以及作爲led引腳的GET,但我不知道如何設置它。任何幫助將非常感激。

回答

1

無效循環()本身是一個無限循環。如果你一次獲得價值,這意味着你的程序是正確的(根據你)。但在最後,你已經寫

While(true); 

程序永遠走不出這個無限循環的,因爲沒有條件,打破它。刪除此語句並再次檢查。