NodeMCU v3 - čítanie txt súboru

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

martinius96

NodeMCU v3 - čítanie txt súboru

Príspevok od používateľa martinius96 » 01 Sep 2017, 20:15

Ahojte, mám NodeMCU v3 Lolin, čítam obsah TXT súboru. Potrebujem zapnúť/vypnúť LED-ku, ktorá je integrovaná na NodeMCU na základe výstupu. Výstup sa mi krásne zobrazí do sériového monitoru, ale LED-ka svieti stále bez ohľadu nato, čo v txt súbore je. Vedeli by ste mi poradiť ako to správne overovať? Vďaka!
Kód:

Kód: Vybrať všetko

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
int led = 2;
const char* ssid = "moj-sinet-2929";
const char* password = "chefrolet";

const char* host = "arduino.php5.sk";
const int httpsPort = 443;

// Use web browser to view and copy
// SHA1 fingerprint of the certificate
const char* fingerprint = "13 9f 87 1d b1 85 be e6 bd 73 c1 8d 04 63 58 99 f0 32 43 92";

void setup() {
  Serial.begin(115200);
  Serial.println();
    pinMode(led, OUTPUT);
  Serial.print("connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());


}

void loop() {
   WiFiClientSecure client;
  Serial.print("connecting to ");
  Serial.println(host);
  if (!client.connect(host, httpsPort)) {
    Serial.println("connection failed");
    return;
  }

  if (client.verify(fingerprint, host)) {
    Serial.println("certificate matches");
  } else {
    Serial.println("certificate doesn't match");
  }

String url = "/abakis/preklady.txt";
  Serial.print("requesting URL: ");
  Serial.println(url);

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "User-Agent: NodeMCU\r\n" +
               "Connection: close\r\n\r\n");

  Serial.println("request sent");
  while (client.connected()) {
    String line = client.readStringUntil('\n');
   
    if (line == "\r") {
      Serial.println("headers received");
      break;
    }
  }
  String line = client.readStringUntil('\n');
 
  Serial.println("reply was:");
  Serial.println("==========");
  Serial.println(line);

  if(line=="Zapni"){
     digitalWrite(led, HIGH);
    }
     if(line=="Vypni"){
     digitalWrite(led, LOW);
    }
  Serial.println("==========");
  Serial.println("closing connection");
}
Zadávanie textu rečou/textom na: https://arduino.php5.sk/abakis/
Obsah txt súboru: https://arduino.php5.sk/abakis/preklady.txt

Používateľov profilový obrázok
djwiktor
Ultimate člen
Ultimate člen
Príspevky: 1624
Dátum registrácie: 01 Júl 2010, 00:00
Bydlisko: Šaľa
Vek: 36
Kontaktovať používateľa:

Re: NodeMCU v3 - čítanie txt súboru

Príspevok od používateľa djwiktor » 01 Sep 2017, 20:43

Sice ta nemam rad za to co si tu predviedol, ale...

NodeMCU 3 Lolin ma debilne mapovanie ...
ak chces vstavanu led blikat, tak za prve - je active low ( takze inverzna) a za druhe je to D4, cize pin 2.. namiesto toho aby si hovoril o pine 2 aby bol output, tak ledku zapni cez D4,LOW a vypni cez D4,HIGH.

Skus, malo by to ist pekne.

Edit: alebo pouzi priamo implementovane LED_BUILTIN :) to by malo mat normalnu logiku, teda zapnut high a vypnut low
0
Tlacim na 3D tlaciarni Felix 3.0 dual
Stormchasers.sk

martinius96

Re: NodeMCU v3 - čítanie txt súboru

Príspevok od používateľa martinius96 » 01 Sep 2017, 21:13

Ano funguje to, vďaka. Kód som mal správny, ale fungovalo to fakt inverzne. LED_BUILTIN na NodeMCU nefunguje. Ako tam mám dosadiť ten pin D4 ako si spomínal? Mám definovaný pin 2, ktorý je na pinoute pin 4. Dá sa to nastaviť, aby som tam robil (ne)inverzne?
https://www.youtube.com/watch?v=FwcPEALti4Y

Používateľov profilový obrázok
djwiktor
Ultimate člen
Ultimate člen
Príspevky: 1624
Dátum registrácie: 01 Júl 2010, 00:00
Bydlisko: Šaľa
Vek: 36
Kontaktovať používateľa:

Re: NodeMCU v3 - čítanie txt súboru

Príspevok od používateľa djwiktor » 02 Sep 2017, 11:42

Ak to chapem dobre, tak ovladanie cez digitalWrite(2,HIGH/LOW) ti funguje s tou ledkou, ale inverzne ? Ak hej, tak netreba riesit D4 :)

Inverzia je dana tym, ze ledka je napajkovana ako active Low - koli tomu, ze pin na ESP je na toto stavany. ak by si tu ledku prepajkoval a otocil, tak by sice fungovala ako ma, (high = on) ale mozes odkurit ten pin, nakolko ho mozes prudovo pretazovat.
Ak striktne potrebujes mat v zapise ze ledka je zapnuta , ked das digitalwrite HIGH, tak si budes musiet to prerobit a nadefinovat si napriklad ze ledOn = 0, ledOff = 1 a potom pouzit digitalWrite(LED, ledOn);

Inak sa to obist neda :) teda da, ale to je zbytocne komplikovane.
0
Tlacim na 3D tlaciarni Felix 3.0 dual
Stormchasers.sk

martinius96

Re: NodeMCU v3 - čítanie txt súboru

Príspevok od používateľa martinius96 » 02 Sep 2017, 12:56

Ano chápeš dobre. To mam len na test, bude to spínať led pásy a iné osvetlenia. Len mám napríklad v kóde ešte jeden if, ak obsahuje string Prepni tak je tam digitalWrite HIGH delay 200ms, digitalWrite LOW delay 200ms, pritom svieti dlhšie ako je vypnutá :) Čím to môže byť? :) Nepotrebujem to striktne, len ma to prekvapilo, že som o takej skutočnosti s inverzitou nevedel.

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok