Я работаю над проектом, который включает удаленную работу с оборудованием Arduino. Я хотел бы узнать, как создать простой сценарий, который позволяет мне включать и выключать встроенный Led в мой MKR1000 без проводов. Затем я мог бы использовать эти знания в более сложных проектах. После некоторого исследования и изучения примера программы веб-сервера библиотеки arduino я придумал этот код Франкенштейна. Поработав несколько часов, я продолжал усугублять ситуацию, мог бы действительно использовать некоторые рекомендации о том, что я делаю неправильно, почему и как это исправить.
Мой код Франкенштейна:
#include <WiFi101.h>
#include <SPI.h>
char ssid[] = "ARROW_015D80";
char pass[] = "KRR3K47XZXM3NYRHV7GX";
int status = WL_IDLE_STATUS;
int LED = LED_BUILTIN;
int LEDState = digitalRead(LED);
WiFiServer server(80);
void setup() {
while (!Serial) {
}
Serial.begin(9600);
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("Yo, where the wifi shield at?");
while(true);
}
while (status !=WL_CONNECTED) {
Serial.print("Connecting to ssid: ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
delay(10000);
}
server.begin();
printWiFiStatus();
}
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("+1 Client");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if(currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("Refresh: 1"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("State of button:");
if (LEDState == HIGH){
client.print("ON");
}
if (LEDState == LOW){
client.print("OFF");
}
client.println("<br>");
client.println("</html>");
client.println();
break;
}
else {
currentLine = "";
}
}
else if (c !='\r') {
currentLine += c;
}
if (currentLine.endsWith("GET /H")) {
digitalWrite(LED, HIGH);
}
if (currentLine.endsWith("Get /L")) {
digitalWrite(LED, LOW);
}
if (currentLine.endsWith("Get /stop")){
client.stop();
Serial.println ("Client disconnected");
}
}
}
}
}
void printWiFiStatus() {
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
В соответствии с видео и несоответствием информации, эта программа должна подключить Arduino к Интернету, распечатать IP-адрес Arduino на последовательном мониторе, и я смогу изменить состояние встроенного светодиода, изменив конецпоиск по ip-адресу.
Вместо этого, после отображения ip-адреса и отображения страницы, отображается состояние кнопки. Когда я пытаюсь изменить URL, чтобы изменить состояние кнопки, он выдает ошибку. Это приводит меня к сообщению «Эта страница недоступна» и выводит ошибку serialmonitor.