- Sun Sep 18, 2016 3:56 am
#55318
That's exactly what I meant... LEDs to show when packets are sent and received.
Here is what I have so far (see code below). The led stuff is commented out (mainly) because as soon as I include it, the LEDs don't do what they should, and the board resets...
Code: Select all#include <ESP8266WiFi.h>
#include <WiFiUDP.h>
# define MIDI_EN 17
int ledReceive = 5;
int ledSend = 8;
unsigned int UDPPort = 9000; // local port to listen on
char packetBuffer[255]; //buffer to hold incoming packet
char ReplyBuffer[] = "Hell Yes!!"; // a string to send back
WiFiUDP Udp;
void setup() {
//pinMode(ledReceive, OUTPUT);
//pinMode(ledSend, OUTPUT);
pinMode(MIDI_EN, OUTPUT);
digitalWrite(MIDI_EN, HIGH);
WiFi.mode(WIFI_AP);
Serial.begin(115200);
WiFi.softAP("UB-753");
Udp.begin(UDPPort);
Serial.println();
Serial.println("Started Access Point - Local ip: 192.168.4.1");
delay(50);
digitalWrite(ledSend, HIGH);
delay(700);
digitalWrite(ledSend, LOW);
digitalWrite(ledReceive, HIGH);
delay(700);
digitalWrite(ledReceive, LOW);
digitalWrite(ledSend, HIGH);
delay(50);
digitalWrite(ledSend, LOW);
delay(50);
digitalWrite(ledSend, HIGH);
delay(50);
digitalWrite(ledSend, LOW);
delay(50);
digitalWrite(ledSend, HIGH);
delay(50);
digitalWrite(ledSend, LOW);
delay(50);
digitalWrite(ledSend, HIGH);
delay(50);
digitalWrite(ledSend, LOW);
delay(50);
digitalWrite(ledSend, HIGH);
delay(50);
digitalWrite(ledSend, LOW);
delay(50);
digitalWrite(ledSend, HIGH);
delay(50);
digitalWrite(ledSend, LOW);
delay(100);
digitalWrite(ledReceive, HIGH);
delay(50);
digitalWrite(ledReceive, LOW);
delay(50);
digitalWrite(ledReceive, HIGH);
delay(50);
digitalWrite(ledReceive, LOW);
delay(50);
digitalWrite(ledReceive, HIGH);
delay(50);
digitalWrite(ledReceive, LOW);
delay(50);
digitalWrite(ledReceive, HIGH);
delay(50);
digitalWrite(ledReceive, LOW);
delay(50);
digitalWrite(ledReceive, HIGH);
delay(50);
digitalWrite(ledReceive, LOW);
delay(50);
digitalWrite(ledReceive, HIGH);
delay(50);
digitalWrite(ledReceive, LOW);
delay(1400);
//number of flashes below = Rev Number...
digitalWrite(ledSend, HIGH);
delay(700);
digitalWrite(ledSend, LOW);
delay(700);
digitalWrite(ledSend, HIGH);
delay(700);
digitalWrite(ledSend, LOW);
delay(700);
digitalWrite(ledSend, HIGH);
delay(700);
digitalWrite(ledSend, LOW);
delay(700);
digitalWrite(ledSend, HIGH);
delay(700);
digitalWrite(ledSend, LOW);
//End of Rev Number flashes...
//number of flashes below = Rev Number after decimal
delay(500);
digitalWrite(ledReceive, HIGH);
delay(700);
digitalWrite(ledReceive, LOW);
delay(700);
digitalWrite(ledReceive, HIGH);
delay(700);
digitalWrite(ledReceive, LOW);
}
void loop() {
String received_command = "";
// if there's data available, read a packet
int packetSize = Udp.parsePacket();
if (packetSize) {
Serial.print("Received packet of size ");
Serial.println(packetSize);
Serial.print("From ");
IPAddress remoteIp = Udp.remoteIP();
Serial.print(remoteIp);
Serial.print(", port ");
Serial.println(Udp.remotePort());
Serial.println("Local ip: 192.168.4.1");
// read the packet into packetBufffer
int len = Udp.read(packetBuffer, 255);
//if (len > 0) {
// packetBuffer[len] = 0;
// }
Serial.println("Contents:");
for (int i=1;i<=len;i++)
{
Serial.print(packetBuffer[i-1],HEX);
received_command = received_command + char(packetBuffer[i - 1]);
if (i % 32 == 0)
{
Serial.println();
}
else Serial.print(' ');
} // end for
Serial.println();
// send a reply, to the IP address and port that sent us the packet we received
Udp.beginPacket(Udp.remoteIP(), 9001);
Udp.write(ReplyBuffer);
Udp.endPacket();
}
} I suspect it's something fundamental, connected with the pins being dual purpose - any help would be much appreciated!
Below is screenshot of serial window showing reset message:-

And here is a screenshot of successful receipt of UDP packets:-