Arduino UNO WIFI не работает должным образом

wifi arduino-uno

923 просмотра

1 ответ

Я купил плату 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 / arduino / analog / 2, будет "~" , В консоли Wi-Fi я нахожу только странные символы, такие как « ~ ~ », и в журнале отладки я нахожу:

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
}
Автор: jens Источник Размещён: 08.11.2019 11:23

Ответы (1)


0 плюса

Решение состоит в том, чтобы включить «Включить SLIP на последовательном порту» в разделе SLIP на вкладке «Связь» в веб-элементе управления Arduino.

Автор: jens Размещён: 20.08.2016 04:12
Вопросы из категории :
32x32