Go Down

Topic: TouchOSC Fader control led arduino + ethernet shield? (Read 1 time) previous topic - next topic

Sep 29, 2013, 01:32 am Last Edit: Sep 29, 2013, 01:38 am by allancnfx Reason: 1
Não sei como fazer um fader controlar a intensidade de um led no arduino. Estou utilizando um código onde consigo acender um led via TouchOSC. Mas queria poder controlar a intensidade do led pelo TouchOSC. Não sei como fazer o Arduino ler os argumentos de 0-255 do Fader do TouchOSC e jogar nas porta PWM do arduino.


alguma ajuda?



Code: [Select]
#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
 
}





Em vez de digitalWrite, usas analogWrite(). Tens é de ver os pinos que suportam PWM.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Exato, o código acima é apenas um exemplo para ligar um led, no caso para controlar o led tenho que usar a função analogWrite, mas eu não estou conseguindo ler os valores que chegam do slider do TouchOSC e enviar para os pinos PWM.

Então o teu problema é com a biblioteca... não é com o PWM.

Nunca trabalhei com isso, logo não sou grande ajuda. :(
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Ok, tudo bem! já tentei ler o que vinha dos argumentos do slider e imprimir na serial print, mas só aparecem os valores 0. Vejo tantos exemplos na internet do controle de luz e RGB , mas todos utilizando Processing, Arduino e o Protocolo OSC, Porém, só quero utilizar o Arduino e o Ethernet Shield. Acionar a luzes tá beleza, mas na hora de controlar a intensidade eu empaco nisso!
Mas vlw pela ajuda...

Esperando Soluções ainda! :D

leonane

Alguém sabe como configurar o touchosc para acessar pela internet, ou seja, fora de casa?

Tenho o arduino e um shield ethernet e ja testei utilizando web server e funciona perfeitamente, tanto internamente como externamente. Já quando vou utilizar o touchosc nao funciona...

A imagem mostra as configurações em que estou colocando nele.






HugoPT

Tens de ter esses Ports configurados no teu router a fazer o portforward para o teu ip interno.Tens isso feito?
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

leonane

Eu configurei conforme as imagens abaixo.

Criei um virtual server com o nome de Automação Residencial e habilitei com a porta 8000 (mesma porta usada no touchosc).

Depois eu configurei o DNS para todo vez que eu entrar com o endereço leonane.zapto.org ele redirecionar para o endereço 192.168.0.99 do arduino.

É isso msm??

Go Up