• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Pseudo wielozadaniowość i kilka innych pytań
#1
Witam

Jestem początkującym w dziedzinie programowania więc z góry prosze za wyrozumiałość


Kod:
#include "DHT.h"    

#define DHTW 2     
     
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
SoftwareSerial esp8266(8,9);

#define DHTTYPE DHT22
DHT DHT_out(DHTZ, DHTTYPE);

void setup() {

  lcd.begin(20, 4);   
  lcd.clear();  lcd.setCursor(5, 1);
  lcd.print("Inicjacja");
  lcd.backlight();    
  DHT_out.begin();


--------------------------------
Ustawienia ESP8266
---------------------------------

}

Void loop
{




 
  float ho = DHT_out.readHumidity();
  float to = DHT_out.readTemperature();
  float hi = DHT_in.readHumidity();
  float ti = DHT_in.readTemperature();

lcd.setCursor(0, 1);
    lcd.print("T:  ");
    lcd.print(to,1);


lcd.setCursor(0,2);
    lcd.print("H:  ");
    lcd.print(ho,1);


 if(esp8266.available()) // check if the esp is sending a message 
  {
    /*
    while(esp8266.available())
    {
      // The esp has data so display its output to the serial window 
      char c = esp8266.read(); // read the next character.
      Serial.write(c);
    } */
    
    if(esp8266.find("+IPD,"))
    {
     delay(1000);

     
     int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns 
                                           // the ASCII decimal value and 0 (the first decimal number) starts at 48
     String SW2;
     String webpage= "<head> <meta http-equiv=\"refresh\" content=\"5\" /> </head>";
     webpage = "<h1>Strona tytułowa</h1>"

                        "<h4>Temperatura: " + String(to) + "*C</h4><h4>Wilgotność: " + String(ho) + "%</h4>"
"<button>SW1</button>";
     
     String cipSend = "AT+CIPSEND=";
     cipSend += connectionId;
     cipSend += ",";
     cipSend +=webpage.length();
     cipSend +="\r\n";
     

     wyslij(cipSend,2000,DEBUG);
     wyslij(webpage,2000,DEBUG);
     
     
     String closeCommand = "AT+CIPCLOSE="; 
     closeCommand+=connectionId; // append connection id
     closeCommand+="\r\n";
     
     
     wyslij(closeCommand,3000,DEBUG);

    }
  }
}

String wyslij(String command, const int timeout, boolean debug)

{
    String response = "";
    
    esp8266.print(command); // send the read character to the esp8266
    
    long int time = millis();
    
    while( (time+timeout) > millis())
    {
      while(esp8266.available())
      {
        
        // The esp has data so display its output to the serial window 
        char c = esp8266.read(); // read the next character.
        response+=c;
      }  
    }
    
    if(debug)
    {
      Serial.print(response);
    }
    
    return response;
   
  }


Wiem ze ten kod teraz nie działa bo nie ma prawa wstawiłem tylko kawałki. ale mniej wiecej jest jego obraz. U mnie na Arduino jest OK jednak chce coś pozmieniać:

Problemy jakie mnie męczą to:

1. Chciałem by ta część kodu była wykonywana co np ~ 3s wymyśliłem sobie to tak
i będzie się zwiększało przy każdym przebiegu pętli a pętla jest zawsze opuźniona o 1ms (wiem ze to będzie ciut więcej ale to nie istotne) gdy spełnimy warunek if wykonamy odczyt i program będzie latał w koło:

 Void setup
int i;

Void loop

if (i<=3000){
  float ho = DHT_out.readHumidity();
  float to = DHT_out.readTemperature();
  float hi = DHT_in.readHumidity();
  float ti = DHT_in.readTemperature();
  i=0;
  }

------------------
Reszta kodu
------------------
i++;
delay(1);

Gdzieś popełniam błąd bo jeśli zamykam to w "if" to wyrzuca mi że ho,to,hi,ti jest nie zadeklarowane...

2. W kawałku kodu:
<head> <meta http-equiv=\"refresh\" content=\"5\" /> </head>" <- powinno mi stronkę www odświeżać co 5s jednak to nie działa... 

Wiem że na ESP8266 można postawić serwer WWW jednak ja chce mieć tylko podgląd i nie będę się puki co uczył programować ESP tym bardziej ze będę wyświetlał raptem 10 parametrów...

3. Najmniej istotne... ale zadam to pytanie czy można jednak zrobić by w tym kodzie HTML dodać działający przycisk bez stawiania serwera na ESP8266?

Pozdrawiam i dziękuje za pomoc.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości