Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2022-05-26 12:06:59

  qba1707 - Użytkownik

qba1707
Użytkownik
Zarejestrowany: 2011-08-16

nodemcu,dht,wysylanie odbieranie pakietu udp

Witam.
Mam takie coś:

Kod:

#include<DallasTemperature.h>
#include<ESP8266WiFi.h>
#include<WiFiUdp.h>
#include<Wire.h>
#include<OneWire.h>
#include<SPI.h>
#include<Arduino.h>
#include "stacja_pogodowa.h"
#include <LiquidCrystal_I2C.h>


OneWire termo(termometr);
DallasTemperature sensor(&termo);
WiFiUDP udp;
LiquidCrystal_I2C lcd(0x23, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);


void setup(){

    Serial.begin(115200);
    sensor.begin();
    Serial.println();
    Serial.println();
    WiFi.begin("*****","*********");
    while(WiFi.status() != WL_CONNECTED){

            delay(500);
            Serial.print(".");
    }
    Serial.println();
    Serial.print("Polaczono...IP adres:");
    Serial.println(WiFi.localIP());
    udp.begin(udp_port);
    lcd.begin(20,4);
    lcd.setCursor(0,0);
    lcd.print("Pokoj_moj:");
    lcd.setCursor(0,1);
    lcd.print("Pokoj_mama:");




}

void loop(){


    int odbior_danych = udp.parsePacket();

        if(odbior_danych){
            udp.read(bufor,rozmiar);
                for(int i = 0; i < rozmiar; i++){
                    data_mama += (char)bufor[i];
                        }
                    }


    sensor.requestTemperatures();
    String temp = String (sensor.getTempCByIndex(0));
    String data= String (data_mama);
     lcd.setCursor(13, 0);
     lcd.print(temp);
     lcd.print("*C");
     lcd.setCursor(13,1);
     lcd.print(data);
     lcd.print("*C");




}

i klient:

Kod:

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <DHT.h>

#define dht_pin D2
#define dht_typ DHT22

float tempert;
float wilgotnosc;


DHT dht(dht_pin,dht_typ,15);
WiFiUDP udp;


void setup()
{
    Serial.begin(115200);
    dht.begin();




    Serial.println();
    WiFi.begin("****","***********");
    Serial.print("Laczenie...");
    while(WiFi.status() != WL_CONNECTED){

        delay(500);
        Serial.print(".");

    }
    Serial.println();
    Serial.print("Polaczono....IP_Adres: ");
    Serial.println(WiFi.localIP());
    udp.beginPacket("****, )****;




}


void loop(){


        String temperatura = String (dht.readTemperature());
        wilgotnosc = dht.readHumidity();


        //udp.write(dht.readTemperature());
        udp.print(temperatura);
        delay(1000);
        udp.endPacket();



}

Niby wszystko dziala, ale problem polega na tym, że przychodzaćy pakiet "przeskakuje" przez wszystkie wiersze wyswietlacza...a wygląda to tak:
https://i.ibb.co/vmFfMgS/IMG-20220526-120254.jpg

Offline

 

#2  2022-05-27 15:14:26

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: nodemcu,dht,wysylanie odbieranie pakietu udp

Nie mów że Ci się to kompiluje?
Gdzie definicja data_mama? Czyżby w tym tajemniczym pliku *.h którego uprzejmie nie pokazałeś?
Poza tym po co kombinujesz z zamianą odebranych danych na String (i to błędnie)?
Poza tym dlaczego delay między udp.write a udp.endPacket?

Poczytaj coś o programowaniu w C/C++ dla początkujących (np. kursy na Forbocie), bo tu co linijkę masz błąd.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)