TrueNoob141
New member
При отправке по UDP с одинаковыми интервалами (пробовал 40ms - 200ms) пакеты по 24 байта либо пропускаются, либо идут с задержкой, но более вероятно происходит краш, т.к. мигает LED, а код подразумевает это только в `setup()`
Примечательно что с подключенным кабелем проблем нет.
Использую ESP32 DEVKIT V1 WROOM 32, которая передает цифровые сигналы на L298N.
Пример передаваемых данных: jx0000jx1000jy10.5LED000
Почему это происходит?
Примечательно что с подключенным кабелем проблем нет.
Использую ESP32 DEVKIT V1 WROOM 32, которая передает цифровые сигналы на L298N.
Пример передаваемых данных: jx0000jx1000jy10.5LED000
C++:
#include <WiFi.h>
#include <WiFiUdp.h>
#define ENA 23
#define IN1 22
#define IN2 21
#define ENB 4
#define IN3 19
#define IN4 18
#define LED_BUILTIN 2
const int udpPort = 7001;
const char* ssid = ...;
const char* password = ...;
WiFiUDP udp;
char packetBuffer[50];
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600);
while(!Serial){delay(100);}
WiFi.begin(ssid, password);
WiFi.setSleep(false);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
udp.begin(udpPort);
}
void loop(){
int packetSize = udp.parsePacket();
if (packetSize)
{
IPAddress remoteIp = udp.remoteIP();
int len = udp.read(packetBuffer, 255);
if (len > 0) {
packetBuffer[len] = 0;
// Serial.println(packetBuffer);
}
String udp_packet_sent = packetBuffer;
String val_vel = udp_packet_sent.substring(12,18);
val_vel = val_vel.substring(3,6);
float val_vel_f = val_vel.toFloat();
val_vel_f = val_vel_f - 0.5;
if (val_vel_f < -0.1) { back(); }
else if (val_vel_f > 0.1) { forward(); }
else { stop(); }
}