Todas as Discussões Marcadas 'ArdOSC' - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T01:34:26Zhttps://labdegaragem.com/forum/topic/listForTag?tag=ArdOSC&feed=yes&xn_auth=noArduino Enc28J60 + TouchOSCtag:labdegaragem.com,2015-05-19:6223006:Topic:4420222015-05-19T23:59:14.699ZThomaz Dias de Freitashttps://labdegaragem.com/profile/ThomazDiasdeFreitas
<p>Boa noite pessoal!</p>
<p>Estou tentando enviar um comando para meu Arduino a partir do programa TouchOSC(Android) através do adaptador de rede Enc28J60.</p>
<p>Sei que consegui conectar na rede corretamente devido a testes de acesso através do Enc28J60.</p>
<p>Colocando alguns prints no código constatei que não estou recebendo nenhuma mensagem válida do TouchOSC, para compilar acabei jogando uma porrada de declaração de biblioteca, meu erro pode estar aí. Segue o código caso alguém possa me…</p>
<p>Boa noite pessoal!</p>
<p>Estou tentando enviar um comando para meu Arduino a partir do programa TouchOSC(Android) através do adaptador de rede Enc28J60.</p>
<p>Sei que consegui conectar na rede corretamente devido a testes de acesso através do Enc28J60.</p>
<p>Colocando alguns prints no código constatei que não estou recebendo nenhuma mensagem válida do TouchOSC, para compilar acabei jogando uma porrada de declaração de biblioteca, meu erro pode estar aí. Segue o código caso alguém possa me ajudar:</p>
<p></p>
<p>#include <SPI.h><br/>#include <Ethernet.h><br/>#include <etherShield.h><br/>#include <ETHER_28J60.h><br/>#include <ArdOSC.h></p>
<p>static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};<br/>static uint8_t ip[4] = {192, 168, 1, 5};<br/>static uint16_t port = 1000;</p>
<p>OSCServer server;<br/>ETHER_28J60 ethernet;</p>
<p>void setup(){ <br/> ethernet.setup(mac, ip, port);<br/> server.begin(port); <br/> server.addCallback("/ard/luz",&func1);<br/>OSC "/ard/ledPin"<br/>Serial.begin(9600);<br/>pinMode(2,OUTPUT);<br/>digitalWrite(2,0); <br/>}</p>
<p>void loop(){<br/> Serial.println("Rodei mas não OSC");<br/> if (server.aviableCheck()>0){<br/> Serial.println("OSC executado!");}<br/> delay (5000);<br/>}</p>
<p>void func1(OSCMessage *_mes){<br/> digitalWrite(2,1);<br/> delay (5000);<br/> digitalWrite(2,0); <br/>}</p> LED 100w Controle por biblioteca ArdOSC e Encoder Rotativo incremental.tag:labdegaragem.com,2014-07-30:6223006:Topic:3715472014-07-30T21:57:54.101ZLucas Pereira Fodorhttps://labdegaragem.com/profile/LucasPereiraFodor
<p>Pessoal, fiz um código usando a biblioteca ArdOSC, um Ethernet Shield, Arduino Uno, e um Encoder.</p>
<p>O código me da controle do brilho do led tanto pelo iPhone(app TouchOSC) quanto pelo encoder ligado ao Arduino. Com tela do fader aberta, recebo informação de quando o encoder gira e o estado atual do led, e posso alterar pelo celular tbm o brilho.</p>
<p></p>
<p>Preciso de uma ajuda, quem já usou Power LED de 100w? quero usar com meu projeto, com meu código, mas não sei por onde…</p>
<p>Pessoal, fiz um código usando a biblioteca ArdOSC, um Ethernet Shield, Arduino Uno, e um Encoder.</p>
<p>O código me da controle do brilho do led tanto pelo iPhone(app TouchOSC) quanto pelo encoder ligado ao Arduino. Com tela do fader aberta, recebo informação de quando o encoder gira e o estado atual do led, e posso alterar pelo celular tbm o brilho.</p>
<p></p>
<p>Preciso de uma ajuda, quem já usou Power LED de 100w? quero usar com meu projeto, com meu código, mas não sei por onde começar.</p>
<p>Sei que trabalham em voltagem de uns 30v e precisam de um módulo e tal... como faz as ligações ?<br/>Segue meu código... se souberem algo para melhorar ele, aceito dicas tbm!<br/><br/><code></p>
<p></p>
<p>#include <SPI.h><br/>#include <Ethernet.h><br/>#include <ArdOSC.h> //inclui blibioteca ArdOSC</p>
<p>byte myMac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; //define MAC para shield Ethernet<br/>byte myIp[] = { 192, 168, 1, 177 }; //define IP da central automação<br/>byte destIp[] = { 192, 168, 1, 101 }; // define qual dispositivo mobile controla<br/>int serverPort = 8000; //define a porta de recepção do comando OSC<br/>int destPort= 9000; //define a porta de envio do comando OSC<br/>int ledPin = 5; //define a porta do arduino associada ao led <br/>int flag = 0; //variavel para valor dos argumentos OSC<br/>const int encoderPinA = 2; // encoder input channel A<br/>const int encoderPinB = 3; // encoder input channel B<br/>int previousState = 0;<br/>int value = 0; <br/>const int stepSize = 5; //meu encoder eh de 24 pulsos por volta, a resolução é muito baixa! esse valor ajuda com mais incremento por pulso</p>
<p>OSCServer server; //inicializa o servidor OSC (serviço que trata a recepção de mensagem OSC)<br/>OSCClient client; //inicializa o cliente OSC (serviço que trata o envio de mensagem OSC)</p>
<p>void setup(){ <br/> Ethernet.begin(myMac ,myIp); //inicializa a interface ethernet<br/> server.begin(serverPort); //inicializa o servidor OSC definindo a porta de RX<br/> //set callback function & oscaddress<br/> server.addCallback("/ard/ledPin",&func1); //define que a rotina "func1" será executada para o comando OSC "/ard/ledPin"<br/> Serial.begin(19200);<br/> pinMode(ledPin, OUTPUT); //define a porta digital 5 (ledPin) do Arduino como saida<br/> pinMode( encoderPinA , INPUT_PULLUP );<br/> pinMode( encoderPinB , INPUT_PULLUP );<br/>}</p>
<p><br/>/*encoder tem 3 pinos: A,B,GND</p>
<p>Pelo A e pelo B é que sabe a posiçao atual e para qual sentido ele girou<br/>Tanto A qnt B te dão o um valor de 0 e 1</p>
<p>Exemplo:<br/>A | B | Leitura <br/>1 | 1 | 3<br/>1 | 0 | 2<br/>0 | 1 | 1<br/>0 | 0 | 0</p>
<p>Logo podemos programar para:<br/>Se o estado anterior era 11, e agora é 10. Quer dizer que o encoder girou no sentido horário<br/>Ou simplesmente<br/>Se o estado anterior era 11, e agora é 10. Incremente em +1 a varialvel Y*/</p>
<p><br/>void loop(){<br/> if(server.aviableCheck()>0){ //verifica se existe alguma mensagem OSC disponível para leitura<br/> // Serial.println("alive! "); <br/> }<br/> uint8_t currentState = ( digitalRead( encoderPinA ) << 0 ) | ( digitalRead( encoderPinB ) << 1 );<br/> if ( <br/> ( ( previousState == 3 ) & ( currentState == 2 ) ) | <br/> ( ( previousState == 2 ) & ( currentState == 0 ) ) | <br/> ( ( previousState == 0 ) & ( currentState == 1 ) ) | <br/> ( ( previousState == 1 ) & ( currentState == 3 ) ) ) {<br/> if ( value <= ( 255 - stepSize ) ) { <br/> value += stepSize; <br/> }<br/> } <br/> else if ( <br/> ( ( previousState == 1 ) & ( currentState == 0 ) ) |<br/> ( ( previousState == 0 ) & ( currentState == 2 ) ) |<br/> ( ( previousState == 2 ) & ( currentState == 3 ) ) |<br/> ( ( previousState == 3 ) & ( currentState == 1 ) ) ) {<br/> if ( value >= stepSize ) {<br/> value -= stepSize; <br/> } <br/> }<br/> <br/> if ( previousState != currentState ) { //sempre que altera a posiçao...<br/> analogWrite( ledPin , value ); //...deve mudar o valor pwm do ledPin...<br/> previousState = currentState; //...e atualizar o estado atual para anterior, ficando pronto para proximas leituras...<br/> OSCMessage txMes; //cria uma nova menssagem OSC<br/> //setar destino d mensagem, ip e desport<br/> txMes.setAddress( destIp ,destPort); //define o endereço e porta do destino da mensagem OSC<br/> txMes.beginMessage("/ard/ledPin"); //define comando OSC<br/> txMes.addArgFloat(value); //define no estado do led que será enviado no argumento OSC para ANDROID/iOS<br/> client.send(&txMes); //envia mensagem OSC para atualizar novo estado do led 1 no ANDROID/iOS<br/> }<br/>}</p>
<p>void func1(OSCMessage *_mes){ //rotina que trata comando OSC "/ard/ledPin" recebido do ANDROID/iOS<br/> int value=(int)_mes->getArgFloat(0); //armazena em "value" o argumento do comando OSC "/ard/ledPin"<br/> analogWrite(ledPin, value); //muda estado da porta digital 5 (ledPin) conforme argumento OSC recebido<br/> OSCMessage txMes; //cria uma nova menssagem OSC<br/> //setar destino d mensagem, ip e desport<br/> txMes.setAddress(destIp,destPort); //define o endereço e porta do destino da mensagem OSC<br/> txMes.beginMessage("/ard/ledPin"); //define comando OSC<br/> txMes.addArgFloat(flag); //define no estado do led que será enviado no argumento OSC para ANDROID/iOS<br/> flag = value;<br/> client.send(&txMes); //envia mensagem OSC para atualizar novo estado do led 1 no ANDROID/iOS<br/>}</p>
<p></p>
<p><code></p>
<p></p>
<p>o layout do TouchOSC foi feito bem simples.</p>
<p>Acho que é meu primeiro tópico no forum... desculpa qlqr coisa!</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/1802474425?profile=original" target="_self">CONFERIR_Aut_ArdOsc_2014_07_29_a.ino</a><a href="http://storage.ning.com/topology/rest/1.0/file/get/1802474590?profile=original" target="_self"><img width="750" src="http://storage.ning.com/topology/rest/1.0/file/get/1802474590?profile=RESIZE_1024x1024" width="750" class="align-full"/></a></p>