Arduino UNO WIFI无法正常工作

时间:2016-08-20 13:58:29

标签: wifi arduino-uno

我已购买了Arduino UNO WIFI主板(http://www.arduino.org/products/boards/arduino-uno-wifi),但无法正常使用。

如果从http://www.arduino.org/learning/tutorials/boards-tutorials/restserver-and-restclient尝试以下示例 每个GET请求的答案,例如arduino.local /阿尔杜伊诺/模拟/ 2 是"〜"。在Wifi-Console中,我发现只有像#34;�〜�〜�"并在调试日志中找到:

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

我将固件更新到2016-03-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
}

1 个答案:

答案 0 :(得分:0)

解决方案是启用&#34;在串口上启用SLIP&#34;在arduino web控件中"Connectivity" Tab的SLIP部分。