2016-08-20 87 views
0

我已經購買了Arduino UNO WIFI板(http://www.arduino.org/products/boards/arduino-uno-wifi),但無法正常工作。Arduino UNO WIFI無法正常工作

如果它從http://www.arduino.org/learning/tutorials/boards-tutorials/restserver-and-restclient 嘗試以下示例,每個GET請求的答案例如arduino.local/arduino/analog/2 是「〜」。內的WiFi的控制檯我發現只有怪字符,如「~~」,並在調試日誌我發現:

746211> ARDUINO REST content: /arduino/digital/13/1 
788705> ARDUINO REST content: /arduino/analog/2 

我的固件更新到2016年3月18日 - 79f152c,但沒有改變。

RestServer代碼:

/* 



RestServer.ino 

Arduino Uno WiFi Ciao example 

This example for the Arduino Uno WiFi shows how to use the 
Ciao library to access the digital and analog pins 
on the board through REST calls. It demonstrates how 
you can create your own API when using REST style 
calls through the browser. 

Possible commands created in this shetch: 

* "/arduino/digital/13"  -> digitalRead(13) 
* "/arduino/digital/13/1" -> digitalWrite(13, HIGH) 
* "/arduino/analog/2/123" -> analogWrite(2, 123) 
* "/arduino/analog/2"  -> analogRead(2) 
* "/arduino/mode/13/input" -> pinMode(13, INPUT) 
* "/arduino/mode/13/output" -> pinMode(13, OUTPUT) 

This example code is part of the public domain 

http://www.arduino.org/learning/tutorials/restserver-and-restclient 

*/ 

#include <Wire.h> 
#include <ArduinoWiFi.h> 


void setup() { 
    Wifi.begin(); 
    Wifi.println("REST Server is up"); 
} 

void loop() { 

    while(Wifi.available()){ 
     process(Wifi); 
    } 
    delay(50); 

} 

void process(WifiData client) { 
    // read the command 
    String command = client.readStringUntil('/'); 

    // is "digital" command? 
    if (command == "digital") { 
    digitalCommand(client); 
    } 

    // is "analog" command? 
    if (command == "analog") { 
    analogCommand(client); 
    } 

    // is "mode" command? 
    if (command == "mode") { 
    modeCommand(client); 
    } 
} 

void digitalCommand(WifiData client) { 
    int pin, value; 

    // Read pin number 
    pin = client.parseInt(); 

    // If the next character is a '/' it means we have an URL 
    // with a value like: "/digital/13/1" 
    if (client.read() == '/') { 
    value = client.parseInt(); 
    digitalWrite(pin, value); 
    } 
    else { 
    value = digitalRead(pin); 
    } 

    // Send feedback to client 
    client.println("Status: 200 OK\n"); 
    client.print(F("Pin D")); 
    client.print(pin); 
    client.print(F(" set to ")); 
    client.println(value); 
    client.print(EOL); //char terminator 

} 

void analogCommand(WifiData client) { 
    int pin, value; 

    // Read pin number 
    pin = client.parseInt(); 

    // If the next character is a '/' it means we have an URL 
    // with a value like: "/analog/5/120" 
    if (client.read() == '/') { 
    // Read value and execute command 
    value = client.parseInt(); 
    analogWrite(pin, value); 

    // Send feedback to client 
    client.println("Status: 200 OK\n"); 
    client.print(F("Pin D")); 
    client.print(pin); 
    client.print(F(" set to analog ")); 
    client.println(value); 
    client.print(EOL); //char terminator 

    } 
    else { 
    // Read analog pin 
    value = analogRead(pin); 

    // Send feedback to client 
    client.println("Status: 200 OK\n"); 
    client.print(F("Pin A")); 
    client.print(pin); 
    client.print(F(" reads analog ")); 
    client.println(value); 
    client.print(EOL); //char terminator 

    } 
} 

void modeCommand(WifiData client) { 
    int pin; 

    // Read pin number 
    pin = client.parseInt(); 

    // If the next character is not a '/' we have a malformed URL 
    if (client.read() != '/') { 
    client.println(F("error")); 
    client.print(EOL); //char terminator 
    return; 
    } 

    String mode = client.readStringUntil('\r'); 

    if (mode == "input") { 
    pinMode(pin, INPUT); 
    // Send feedback to client 
    client.println("Status: 200 OK\n"); 
    client.print(F("Pin D")); 
    client.print(pin); 
    client.println(F(" configured as INPUT!")); 
    client.print(EOL); //char terminator 
    return; 
    } 

    if (mode == "output") { 
    pinMode(pin, OUTPUT); 
    // Send feedback to client 
    client.println("Status: 200 OK\n"); 
    client.print(F("Pin D")); 
    client.print(pin); 
    client.println(F(" configured as OUTPUT!")); 
    client.print(EOL); //char terminator 
    return; 
    } 

    client.print(F("error: invalid mode ")); 
    client.println(mode); 
    client.print(EOL); //char terminator 
} 

回答

0

的解決方案是使「啓用串行端口上SLIP」在"Connectivity" Tab在Arduino的幅材控制的SLIP部。