Arduino Polska Forum

Pełna wersja: Proszę o pomoc z płytką: Modul__Wifi_ESP8266___NodeMCU_v3
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Modul__Wifi_ESP8266___NodeMCU_v3

Posiadam, tą płytkę ^



Jestem początkującym i dopiero w te wakacje zacząłem się uczyć Arduino i go programować. Problem brzmi następująco. Przepisałem, ucząc się jednocześnie kod z książki, który ma podobno polegać na sterowaniu pracą płytki Node MCU za pośrednictwem sieci. On kompiluje się i wgrywa do płytki, a następnie podłącza się do WiFi, który z kolei ma jakiś tam internet. Wtedy na porcie szeregowym pojawia się connect to Wifi, IP serwera i inne bzdety. Kopiuje IP serwera do przeglądarki Microsoft Edge, a tu zamiast odpalić mi się strona wypierdala mi, że coś zaczynam ściągać. Otwieram ten plik po ściągnięciu a tu rozjebany w połowie kod, który napisałem. PYTANIE brzmi dlaczego ta strona mi się nadzwyczajnie nie otwiera w przeglądarce tylko zaczyna mi się pobierać jebany kod? A czasami to w ogóle nic się nie dzieje tylko, wyświetla, że ta witryna jest nie osiągalna. Huh


Kod:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char* ssid = "MF971R_F7F6F4";
const char* password = "2VE3VEK8HU";

ESP8266WebServer server(80);

int numPins = 5;
char* pinNames[] = {"D5", "D6", "D7", "D8", "D9"};
int pins[] = {D5, D6, D7, D8, D9};
int pinState[] = {0, 0, 0, 0, 0,};

void setPinStates()
{
  for (int i = 0; i < numPins; i++)
  {
      digitalWrite(pins[i], pinState[i]);
  }
}

void setValuesFromParams()
{
  for (int i = 0; i < numPins; i ++)
  {
      pinState[i] = server.arg(i).toInt();
  }
}


void handleRoot()
{
char buff[1000];
Serial.println("Odebrano żądanie");
setValuesFromParams();
setPinStates();

strcat(buff, "<html><body>\n");
strcat(buff, "<h1>Piny wyjśćia</h1>\n");
strcat(buff, "<form method='GET'>\n");

for (int i = 0; i < numPins; i++)
{
    strcat(buff, "<p>");
    strcat(buff, pinNames[i]);
    strcat(buff, " <select name='");
    char indexStr[10];
    sprintf(indexStr, "%d", i);
    strcat(buff, "'><option value='0'");
    if (pinState[i] == 0)
    {
        strcat(buff, " selected");
    }
    strcat(buff, ">Nieaktywny</option>");
    strcat(buff, "option value= '1'");
    if (pinState[i] == 1);
    {
        strcat(buff, " selected");
    }
    strcat(buff, "Aktywny</option></select></p>\n");
}
strcat(buff, "input type='sumbit' value 'Uaktualnij'\n");
strcat(buff, "<form></html></body>\n");
server.send(200, "tex/html", buff);

}
void connectToWiFi()
{
  Serial.print("\n\nConnect to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
  delay(500);
  Serial.print(".");
  }
   Serial.println("\nPołączono z secią bezprzewodową");
   Serial.print("Adres IP: ");
   Serial.println(WiFi.localIP());
}

void setup()
{
  for (int i = 0; i < numPins; i++)
  {
      pinMode(pins[i], OUTPUT);
  }
Serial.begin(115200);
connectToWiFi();

server.on("/", handleRoot);

server.begin();
Serial.println("uruchomiono serwer HTTP");

}

void loop()
{
  server.handleClient();

}

Zdjęcie z przeglądarki po wpisaniu IP serwera i kliknięciu przycisku ENTER na klawiaturze (W załączniku)

PS: Byłbym wdzięczny jakby ktoś pomógł rozwiązać problem Angel
Bo pewnie html jest zjebany. Czytanie książek jest fajne, ale przeklepywanie kodu już nie bardzo, wystarczy pomylić jeden znak i wszystko się rozsypuje. Są wbudowane przykłady, wystarczy wklepać swoje SSID i hasło (nie udostępniasz tu chyba swojego prawdziwego w tym kodzie, co?), wgrać i cieszyć się działaniem.
Do strony internetowej sterującej uC lepiej użyć websockets. Też jest trochę przykładów z biblioteką, są też fajne projekty w Google do znalezienia.
Dzięki, HTML był rozjebany, nie zauważyłem Wink