Skocz do zawartości

Zgredek

Użytkownicy
  • Zawartość

    5
  • Rejestracja

  • Ostatnio

Reputacja

1 Neutralna

O Zgredek

  • Ranga
    2/10
  1. Problem udało się rozwiązać w zasadzie mi do szczęścia nie dużo brakowało Linijka z którą miałem problem, wystarczyło tylko tak zmienić: char odczyt[] = { packetBuffer[0], packetBuffer[1], '\0'}; THX
  2. Dziękuję za odpowiedź Co do linijki to gdzieś podpatrzone i próbowałem zastosować u mnie ale nie wyszło Nie muszą to być litery, taki sobie przykład wziąłem, zapewne nie potrzebie. trochę jaśniejsze, popróbuję
  3. Z tym podpinaniem bendę miał na uwadze void loop() { int cb = udp.parsePacket(); if (cb) { int read = udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE); Serial.print(packetBuffer); packetBuffer[read] = 0; char odczyt[] = { packetBuffer["A"], packetBuffer["V"], '\0'}; if (strcmp( odczyt, "A") == 0 ) { digitalWrite(4, LOW); jedenMillis = millis() + 500; dwaMillis = millis() + 600; trzyMillis = millis() + 600; delay(100); digitalWrite(5, LOW); delay(50); digitalWrite(0, LOW); } if (strcmp( odczyt, "V") == 0 ) { digitalWrite(4, LOW); jedenMillis = millis() + 500; trzyMillis = millis() + 600; czteryMillis = millis() + 600; delay(100); digitalWrite(2, LOW); delay(50); digitalWrite(0, LOW); } } if(millis() >= jedenMillis) { digitalWrite(4, HIGH); } if(millis() >= dwaMillis) { digitalWrite(5, HIGH); } if(millis() >= trzyMillis) { digitalWrite(0, HIGH); } if(millis() >= czteryMillis) { digitalWrite(2, HIGH); } } Takie moje próby nie przechodzi kompilacji na: char odczyt[] = { packetBuffer["A"], packetBuffer["V"], '\0'}; wyrzuca błąd: invalid types 'char [8192][const char [2]]' for array subscript i brakło mi pomysłów jak to ugryźć bo A/V bez " " też nie pomaga.
  4. Witam Podepnę cię pod ten temat gdyż mam mały problem i nie umiem sobie z nim poradzić W Arduino dopiero zaczynam raczkować więc proszę o łaskawe traktowanie Komunikuję Się między dwoma ESP, do klienta mam podłączone dwa przyciski i wysyłam dwie informacje: #include <ESP8266WiFi.h> #include <WiFiUdp.h> const char *ssid = "circuits4you"; const char *pass = "password"; unsigned int localPort = 2000; IPAddress ServerIP(192,168,4,1); IPAddress ClientIP(192,168,4,2); WiFiUDP udp; void setup(){ pinMode(4,INPUT_PULLUP); pinMode(5,INPUT_PULLUP); pinMode(16, OUTPUT); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); Serial.begin(9600); Serial.println(); WiFi.softAP(ssid, pass); Serial.println("Starting UDP"); udp.begin(localPort); Serial.print("Local port: "); Serial.println(udp.localPort()); } void loop(){ int cb = udp.parsePacket(); if (!cb) { if(digitalRead(4) == LOW) { udp.beginPacket(ClientIP, 2000); udp.write("A"); udp.endPacket(); digitalWrite(LED_BUILTIN, LOW); delay(200); digitalWrite(LED_BUILTIN, HIGH); } } if (!cb) { if(digitalRead(5) == LOW) { udp.beginPacket(ClientIP, 2000); udp.write("V"); udp.endPacket(); digitalWrite(LED_BUILTIN, LOW); delay(200); digitalWrite(LED_BUILTIN, HIGH); } } } Serwer odbiera informacje, w moim przypadku przykładowe litery A i V Do serwera mam podłączone kilka przekaźników i po odebraniu informacji wykonują daną sekwencję załączeń. #include <ESP8266WiFi.h> #include <WiFiUdp.h> const char *ssid = "circuits4you"; const char *pass = "password"; unsigned int localPort = 2000; unsigned long jedenMillis = 0; unsigned long dwaMillis = 0; unsigned long trzyMillis = 0; unsigned long czteryMillis = 0; unsigned long zwlokaMillis = 0; IPAddress ServerIP(192,168,4,1); IPAddress ClientIP(192,168,4,2); WiFiUDP udp; char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; void setup(){ pinMode(0,OUTPUT); digitalWrite(0, HIGH); pinMode(2,OUTPUT); digitalWrite(2, HIGH); pinMode(4,OUTPUT); digitalWrite(4, HIGH); pinMode(5,OUTPUT); digitalWrite(5, HIGH); pinMode(16,OUTPUT); digitalWrite(16, LOW); Serial.begin(9600); Serial.println(); WiFi.begin(ssid, pass); Serial.println(""); while (WiFi.status() != WL_CONNECTED) { digitalWrite(16, HIGH); delay(500); Serial.print("."); digitalWrite(16, LOW); delay(500); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); Serial.println("Starting UDP"); udp.begin(localPort); Serial.print("Local port: "); Serial.println(udp.localPort()); } void loop() { int cb = udp.parsePacket(); if (cb) { udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE); Serial.print(packetBuffer); digitalWrite(4, LOW); jedenMillis = millis() + 500; dwaMillis = millis() + 600; trzyMillis = millis() + 600; delay(100); digitalWrite(5, LOW); delay(50); digitalWrite(0, LOW); } if(millis() >= jedenMillis) { digitalWrite(4, HIGH); } if(millis() >= dwaMillis) { digitalWrite(5, HIGH); } if(millis() >= trzyMillis) { digitalWrite(0, HIGH); } } Łączenie przebiega w porządku i odbieranie informacji też, na serial porcie tak to wygląda: ⸮txW⸮H$48⸮$<⸮⸮⸮ ....... Connected to circuits4you IP address: 192.168.4.2 Starting UDP Local port: 2000 AAVVVVA Problem dotyczy - jak rozróżnić te informacje, żeby po wysłaniu i odebraniu A wykonać przykładowo powyższą sekwencję a po wysłaniu i odebraniu V inną sekwencję Nie umiem puki co sobie z typ poradzić Próbowałem przeczytać bufor i go rozpoznać ale nie wychodzi mi...
  5. Witam wszystkich Mam na imię Michał i dopiero zaczynam raczkować w temacie Arduino Dołączyłem do Was aby poszerzyć swoją wiedzę i czasami poprosić o małą pomoc lub podpowiedź Pozdrawiam
×
×
  • Utwórz nowe...