Go Down

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

allancnfx

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
 
}





bubulindo

Em vez de digitalWrite, usas analogWrite(). Tens é de ver os pinos que suportam PWM.
This... is a hobby.

allancnfx

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.

bubulindo

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

Nunca trabalhei com isso, logo não sou grande ajuda. :(
This... is a hobby.

allancnfx

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.






hugo007

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