Protocolo OSC (libery ArdOSC) para Automação Residencial

Alguém aqui já utilizou o protocolo OSC?

Estou utilizando Arduino + Ethernet Shield + Protocolo OSC para acionar uma Lampada ou mais.

Estou com uma duvida sobre a biblioteca ArdOSC.
Eu consegui fazer o exemplo disponibilizado neste site:

Lá tem a biblioteca e exmplos para seguir, mas ainda não descobri como controlar a intesidade de uma lampada com esta biblioteca.
Não sei como fazer o slider controlar a saída PWM do arduino, se alguem descobrir ficarei grato! Todos exemplos que achei utilizava Processing + Arduino + OSC, mas quero utilizar apenas com o meu Ethernet Shield e sei que é possivel fazer, mas ainda não sei como!

Aqui tem um video de acionamento de quatro lampadas via Processing + Arduino e OSC justo o que eu não queria :frowning:

estou utilizando como base este code aqui.

#include <SPI.h>
#include <Ethernet.h>
#include <ArdOSC.h>  //inclui blibioteca ArdOSC

byte myMac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};  //define MAC para shield Ethernet
byte myIp[]  = { 192, 168, 1, 177 };   //define IP da central automação
int  serverPort  = 8000;   //define a porta de recepção do comando OSC
int destPort= 9000;   //define a porta de envio do comando OSC
int ledPin =  9;   //define a porta do arduino associada ao led 

int flag=0;

OSCServer server;    //inicializa o servidor OSC (serviço que trata a recepção de mensagem OSC)
OSCClient client;    //inicializa o cliente OSC (serviço que trata o envio de mensagem OSC)

void setup(){ 
 
 Ethernet.begin(myMac ,myIp);   //inicializa a interface ethernet
 server.begin(serverPort);   //inicializa o servidor OSC definindo a porta de RX
 //set callback function & oscaddress
 server.addCallback("/ard/ledPin",&func1);  //define que a rotina "func1" será executada para o comando OSC "/ard/ledPin"
 
 pinMode(ledPin, OUTPUT);   //define a porta digital 9 (ledPin) do Arduino como saida
 
}
  
void loop(){
  
  if(server.aviableCheck()>0){   //verifica se existe alguma mensagem OSC disponível para leitura
 //    Serial.println("alive! "); 
  }
  
}


void func1(OSCMessage *_mes){  //rotina que trata comando OSC "/ard/led2" recebido do ANDROID
  int value=(int)_mes->getArgFloat(0);  //armazena em "value" o argumento do comando OSC "/ard/led2"
  digitalWrite(ledPin,value);   //muda estado da porta digital 9 (ledPin2) conforme argumento OSC recebido
  
  //create new osc message
  OSCMessage txMes;    //cria uma nova menssagem OSC
  
  //set destination ip address & port no
  txMes.setAddress(_mes->getIpAddress(),destPort);  //define o endereço e porta do destino da mensagem OSC
  txMes.beginMessage("/ard/ledPin");   //define comando OSC
  txMes.addArgFloat(flag);  //define no estado do led 2 que será enviado no argumento OSC para ANDROID
  
  if(flag==1){
    flag=0;
    digitalWrite(ledPin, LOW);
  }
  else{
    flag=1;
    digitalWrite(ledPin, HIGH);
  }
  txMes.addArgInt32(flag); 
  
  //send osc message
  client.send(&txMes);   //envia mensagem OSC para atualizar novo estado do led 1 no ANDROID
  
}