Skocz do zawartości

jakub51996

Użytkownicy
  • Zawartość

    14
  • Rejestracja

  • Ostatnio

Reputacja

2 Neutralna

O jakub51996

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Serwer już rozpoznaje dane i kto wysyła tylko mam problem z wyświetleniem. Program nie wysyła błędów a podłączenie jest dobre (bo sprawdzałem na innym programie).Na ekranie wyświetlacza nic sie nie pojawia. Edit Mój błąd zastosowałem zmienną lokalną zamiast globalną. Dziękuję wszystkim za pomoc w szczególność ethanak
  2. Klient wysyła dane wilgotność i temperaturę w formacie: Wilg(1):10 Temp(1):21 Trochę poszukałem i aby serwer widział który to klient wysłał muszę zastosować dwa porty ( np klient 1 port 8088 i dla klienta 2 port 81) czy takie rozwiązanie jest dobre?
  3. Masz racje napisałem to bardzo chaotycznie zacznę od początku. Chcę stworzyć serwer (na ESP32) który odbiera wyniki z 2 innych ESP32 ( pracują jako klienci czyli robią pomiary i wysałają do serwera). Tutaj na potykam na dwa problemy: -nie mogę wyświetlać wartość z czujników w odpowiednie miejsca(jeśli serwer odbierze wartość z czujników to wyświetla je w wszystkie rubryki - oznacza ,że temperatura z czujnika 1 wyświetlana jest jako wilgotność i temperatura czujnika 1 i 2). -drugi problem jest taki ,że chce aby te wartość były wyświetlane do tego czasu aż odbierze i wyświetli następne. Szukam pomocy w rozwiązaniu tych 2 problemów. Mam nadzieje ,że teraz jest lepiej opisane moje problemy.
  4. Cześć. Mam problem z wyświetlaniem wyników na lcd 2x16. Odbieram dane z dwóch esp32 które wysyłają wilgotność i temperaturę. Chce te wartość wyświetlać na ekranie tylko mam problem poniewaz nie wiem jak zrobić aby wyświetlało to wartość aż uzyska następną oraz jak zrobić aby wyświetlało te wszystkie wartość bo teraz jest tylko wyświetla na wszystkich 4 polach ostatnią wartość jaką odebrał. Szukam odpowiedz na te 2 pytania oraz podobnych zrobionych projektów. //SERVER #include <LiquidCrystal_I2C.h> unsigned char stateCnt = 0;; // set the LCD number of columns and rows int lcdColumns = 16; int lcdRows = 2; LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows); int buttonpin = 26; volatile bool buttonState = false; //Load Wi-Fi library #include <WiFi.h> // Replace with your network credentials const char* ssid ="xxx" ; const char* password ="xxx" ; /* create a server and listen on port 8088 */ /* create a server and listen on port 8088 */ WiFiServer server(8088); void setup() { lcd.init(); // turn on LCD backlight lcd.backlight(); pinMode(buttonpin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(buttonpin), button, FALLING); Serial.begin(115200); Serial.print("Connecting to "); Serial.println(ssid); /* connecting to WiFi */ WiFi.begin(ssid, password); /*wait until ESP32 connect to WiFi*/ while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected with IP address: "); Serial.println(WiFi.localIP()); /* start Server */ server.begin(); } void loop(){ /* listen for client */ WiFiClient client = server.available(); uint8_t data[30]; if (client) { Serial.println("new client"); /* check client is connected */ while (client.connected()) { if (client.available()) { int len = client.read(data, 30); if(len < 30){ data[len] = '\0'; }else { data[30] = '\0'; } }}} if(buttonState == true){ lcd.clear(); if (!(stateCnt % 2)) { lcd.setCursor(0, 0); lcd.print("Wilgot(1):"); lcd.setCursor(12, 0); lcd.print((char*)data); lcd.setCursor(0, 1); lcd.print("Tempe(1):"); lcd.setCursor(12, 1); lcd.print((char*)data); }else {lcd.setCursor(0, 0); // print message lcd.print("Wilgot(2):"); lcd.setCursor(12, 0); lcd.print((char*)data); lcd.setCursor(0, 1); // print message lcd.print("Temper(2):"); lcd.setCursor(12, 1); lcd.print((char*)data); } buttonState = false; stateCnt++; } } void button(void) { buttonState = true; }
  5. Dziękuję za pomoc. Osiągnąłem wystarczającą dokładność. Mam ostatnie pytanie w sprawie czujników czy podłączenie ich dwóch pod zasilanie 3.3V w ESP32 nie spali płytki?
  6. Znów był problem z podłączeniem znaczy podłączyłem pod pin 32 oraz zasilanie pod 3,3V masę oczywiście miałem podłączoną. Teraz mam pytanie jak dobrać odpowiedni zakres aby wilgotność była wyświetlana w %? Wiem że służy do tego rozkaz output_value = map(output_value,550,0,0,100) czy jaką maksymalną wartość ma dać 4095?
  7. Dzięki za odpowiedz. Dodałem konfiguracje pinu i jeszcze raz wszystko podłączyłem i zadziałał. Teraz mam problem z czujnikiem wilgotność gleby FC-28 który wskazuje wynik 4095 i nie reaguje na wodę. Podłączam do pinu 35 oraz zasilanie 5v. Czy powinnem zastosować jakąś bibliotekę? int sensor_pin = 35; int value ; void setup() { Serial.begin(115200); Serial.println("Reading"); delay(2000); pinMode(sensor_pin, INPUT); } void loop() { value= analogRead(sensor_pin); Serial.print("Moisture : "); Serial.print(value); Serial.println("%"); delay(1000); }
  8. Witam. Mam problem z czujnikami a dokładnie wyświetlają fikcyjne dane. Na razie opisze problem z DS18B20 wgrałem przykład z biblioteki ale wyniki na porcie wynoszą -127.00ºC oraz -196.60ºF. Mam esp32 devkit v1 i podpinam do pinu 4 z rezystorem. Może ktoś miał podobny problem? #include <OneWire.h> #include <DallasTemperature.h> // GPIO where the DS18B20 is connected to const int oneWireBus = 4; // Setup a oneWire instance to communicate with any OneWire devices OneWire oneWire(oneWireBus); // Pass our oneWire reference to Dallas Temperature sensor DallasTemperature sensors(&oneWire); void setup() { // Start the Serial Monitor Serial.begin(115200); // Start the DS18B20 sensor sensors.begin(); } void loop() { sensors.requestTemperatures(); float temperatureC = sensors.getTempCByIndex(0); float temperatureF = sensors.getTempFByIndex(0); Serial.print(temperatureC); Serial.println("ºC"); Serial.print(temperatureF); Serial.println("ºF"); delay(5000); }
  9. Witam. Chciałem zrobić serwer tcp na esp32 który by miał odbierać dane z esp32 (wysyła mu dane wilgotność i temperaturę) do celowo ma być dwa takie esp32 z czujnikami. Tutaj ma problem bo serwer odbiera dane od czujników tylko ,że odbiera je po kolej i na wyświetlaczu mogę wyświetlić tylko wartość np temperatury z czujnika pierwszego( chciałbym aby można wyświetlać wilgotność i temperaturę z czujnika 1 na raz a po naciśnieciu przycisku nastąpiła zmiana na wartość czujnika 2). Nie wiem jak mogę to zrobić liczę na każdą pomoc, proszę też o jakieś podobne przykłady. #include <WiFi.h> #define SLEEP_TIME_SECONDS 10 const char* ssid ="xxx"; const char* password ="xx"; WiFiServer server(8088); void setup() { Serial.begin(115200); Serial.print("Connecting to "); Serial.println(ssid); /* connecting to WiFi */ WiFi.begin(ssid, password); /*wait until ESP32 connect to WiFi*/ while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected with IP address: "); Serial.println(WiFi.localIP()); /* start Server */ server.begin(); } void loop() { /* listen for client */ WiFiClient client = server.available(); uint8_t data[30]; if (client) { Serial.println("new client"); /* check client is connected */ while (client.connected()) { if (client.available()) { int len = client.read(data, 30); if(len < 30){ data[len] = '\0'; }else { data[30] = '\0'; } Serial.print("client sent: "); Serial.println((char *)data); } } } }
  10. Stworzyłem program jak mi podpowiadałeś ale dalej są dwa problemy pierwszy to Hello world wyświetla tylko sekunde ( chciałem aby był do ponownego naciśnięcia przycisku) oraz Home come wyświetla się wtedy kiedy jeszcze jest hello world. #include <LiquidCrystal_I2C.h> // set the LCD number of columns and rows int lcdColumns = 16; int lcdRows = 2; LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows); int buttonpin = 26; volatile bool pressed; int buttonState = 0; int last = digitalRead(26); void setup() { lcd.init(); // turn on LCD backlight lcd.backlight(); pinMode(buttonpin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(26), button, FALLING); } void loop() { if (pressed) { pressed = false; lcd.setCursor(0, 0); // print message lcd.print("Hello, World!"); delay(1000); }else{ lcd.setCursor(0, 0); // print message lcd.print("Home, come!"); delay(1000); // clears the display to print new message lcd.clear(); }} void button(void) { pressed = true; }
  11. Dzięki za pomocą. Macie chyba rację, że w moim przypadku najlepszą opcją będą przerwania bo program ma działać że wyświetla cały czas hello World aż do przycisku i przełączania na Home come i tak w kółko. Mam pytanie do przerwan co powinnem wpisać funkcji button aby działało to na przemianie? void setup (){ attachInterrupt(digitalPinToInterrupt(26), button, RISING); } void loop(){ } void button (){ }
  12. Witam. Mam zamiar stworzenia wyświetlacza który ma wyświetlać dwie różne informacje z wykorzystaniem przycisku. Czyli naciśnięcie (i puszczenie) przycisku powoduje zmianę tekstu na drugi. Tylko mój program na zmianę wyświetla obie opcje(nie w równych ostępach czasu) . W czym może być problem? Wyświetlacz pracuje z esp32. #include <LiquidCrystal_I2C.h> // set the LCD number of columns and rows int lcdColumns = 16; int lcdRows = 2; LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows); int buttonpin = 26; int buttonState = 0; void setup() { lcd.init(); // turn on LCD backlight lcd.backlight(); pinMode(buttonpin, INPUT); } void loop() { buttonState = digitalRead(buttonpin); if (buttonState == LOW) { lcd.setCursor(0, 0); // print message lcd.print("Hello, World!"); delay(1000); // clears the display to print new message lcd.clear(); } else { lcd.setCursor(0, 1); // print message lcd.print("Home, come!"); delay(1000); // clears the display to print new message lcd.clear(); } }
×
×
  • Utwórz nowe...