/*---------------------------------------------------------------------------------------------
Send integers '0' or '1' to the address "/led" to turn on/off the LED
Open Sound Control (OSC) library for the ESP8266/ESP32
https://github.com/CNMAT/OSC/tree/master
In Wokwi gateway, made forwarding of ports UDP
/Users/MacBookII/Desktop/wokwigw-darwin --forward udp:5555:10.13.37.2:5555 ; exit;
Sintaxis: --forward udp:[Puerto del localhost]:10.13.37.2:[Puerto del simulador] ; exit;
--------------------------------------------------------------------------------------------- */
#include <WiFi.h>
#include <OSCMessage.h>
char ssid[] = "Wokwi-GUEST"; // your network SSID (name)
char pass[] = ""; // your network password
WiFiUDP Udp; // A UDP instance to let us send and receive packets over UDP
const IPAddress outIp(192,168,1,23); // remote IP of your computer
const unsigned int outPort = 4444; // remote port to receive OSC
const unsigned int localPort = 5555; // local port to listen for OSC packets (actually not used for sending)
const int portPin = 35;
int potValor = 0;
int potValorAnterior = 0;
//LED
int pin_led = 15;
// Options
int update_rate = 16;
void setup() {
pinMode(pin_led, OUTPUT);
Serial.begin(115200);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(250);
digitalWrite(pin_led, HIGH);
Serial.print(".");
delay(250);
digitalWrite(pin_led, LOW);
Serial.print("/");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Starting UDP");
Udp.begin(localPort);
Serial.print("Local port: ");
Serial.println(localPort);
}
void ledtoggle(OSCMessage &msg) {
switch (msg.getInt(0)) {
case 0:
digitalWrite(pin_led, LOW);
Serial.println("APAGADO");
break;
case 1:
digitalWrite(pin_led, HIGH);
Serial.println("ENCENDIDO");
break;
}
}
void receiveMessage() {
OSCMessage inmsg;
int size = Udp.parsePacket();
if (size > 0) {
while (size--) {
inmsg.fill(Udp.read());
}
if (!inmsg.hasError()) {
inmsg.dispatch("/led", ledtoggle);
}
//else { auto error = inmsg.getError(); }
}
}
void loop() {
receiveMessage();
delay(update_rate);
}