Pages: [1]   Go Down
Author Topic: TouchOSC Fader control led arduino + ethernet shield?  (Read 897 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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
  
}



« Last Edit: September 28, 2013, 06:38:39 pm by allancnfx » Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3219
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Em vez de digitalWrite, usas analogWrite(). Tens é de ver os pinos que suportam PWM.
Logged

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).

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3219
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Nunca trabalhei com isso, logo não sou grande ajuda. smiley-sad
Logged

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).

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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! smiley-grin
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.







* foto.PNG (49.49 KB, 640x960 - viewed 21 times.)
Logged

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1535
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tens de ter esses Ports configurados no teu router a fazer o portforward para o teu ip interno.Tens isso feito?
Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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??


* foto1.JPG (79.91 KB, 763x575 - viewed 26 times.)

* foto2.JPG (105.85 KB, 873x747 - viewed 22 times.)
Logged

Pages: [1]   Go Up
Jump to: