Pessoal, o código abaixo está gerando um erro e não sei corrigi-lo, alguém pode me ajudar? (erro em anexo).

#include <SPI.h>
#include <Ethernet.h>
#include <ArdOSC.h>
byte myMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte myIp[] = {192, 168, 1, 10};
byte destIP[] = {192, 168, 1, 5};
int serverPort = 8000;
int destPort = 9000;
int led1Pin = 13;
int led2Pin = 12;
int sw1Pin = 3;
int sw2Pin = 2;
OSCServer server;
OSCClient client;

void setup(){
Ethernet.begin (myMac ,myIp);
server.begin (serverPort);
server.addCallback("/tog1",&func1);
server.addCallback("/tog2",&func2);
pinMode (led1Pin, OUTPUT);
pinMode (led2Pin, OUTPUT);
digitalWrite (sw1Pin, HIGH);
digitalWrite (sw2Pin, HIGH);
}

void loop(){
if (server.aviableCheck()>0){
}
if (digitalRead(sw1Pin)==LOW){
int state = digitalRead(led1Pin);
OSCMessage txMes;
txMes.setAddress(destIP,destPort);
txMes.beginMessage("/tog1");
txMes.addArgFloat(!state);
client.send(&txMes);
digitalWrite(led1Pin, !state);
delay(300);
}
if (digitalRead(sw2Pin)==LOW){
int state = digitalRead(led2Pin);
OSCMessage txMes;
txMes.setAddress(destIP,destPort);
txMes.beginMessage("/tog2");
txMes.addArgFloat(!state);
client.send(&txMes);
digitalWrite(led2Pin, !state);
delay(300);
}
void func1 (OSCMessage *_mes){
int value = (int)_mes->getArgFloat(0);
digitalWrite(led1Pin, value);
}
void func2(OSCMessage *_mes){
int value = (int)_mes->getArgFloat(0);
digitalWrite(led2Pin, value);
}

Exibições: 854

Anexos

Responder esta

Respostas a este tópico

Descobri meu erro. As funções devem ser declaradas fora do loop. Segue código corrigido:

#include <SPI.h>
#include <Ethernet.h>
#include <ArdOSC.h>
byte myMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte myIp[] = {192, 168, 1, 10};
byte destIP[] = {192, 168, 1, 5};
int serverPort = 8000;
int destPort = 9000;
int led1Pin = 13;
int led2Pin = 12;
int sw1Pin = 3;
int sw2Pin = 2;
OSCServer server;
OSCClient client;

void func1 (OSCMessage *_mes){
int value = (int)_mes->getArgFloat(0);
digitalWrite(led1Pin, value);
}
void func2(OSCMessage *_mes){
int value = (int)_mes->getArgFloat(0);
digitalWrite(led2Pin, value);
}

void setup(){
Ethernet.begin (myMac ,myIp);
server.begin (serverPort);
server.addCallback("/tog1",&func1);
server.addCallback("/tog2",&func2);
pinMode (led1Pin, OUTPUT);
pinMode (led2Pin, OUTPUT);
digitalWrite (sw1Pin, HIGH);
digitalWrite (sw2Pin, HIGH);
}

void loop(){
if (server.aviableCheck()>0){
}
if (digitalRead(sw1Pin)==LOW){
int state = digitalRead(led1Pin);
OSCMessage txMes;
txMes.setAddress(destIP,destPort);
txMes.beginMessage("/tog1");
txMes.addArgFloat(!state);
client.send(&txMes);
digitalWrite(led1Pin, !state);
delay(300);
}
if (digitalRead(sw2Pin)==LOW){
int state = digitalRead(led2Pin);
OSCMessage txMes;
txMes.setAddress(destIP,destPort);
txMes.beginMessage("/tog2");
txMes.addArgFloat(!state);
client.send(&txMes);
digitalWrite(led2Pin, !state);
delay(300);
}
}

Anderson, tambem demorei muito para achar o problema desse codigo.. Acredito que voce se espelhou no tutorial no site eletronlivre, correto ? No projeto original o led no caso pode ser acesso tanto pelo controle osc quanto pelo botão, e o status é atualizado no app.. Nesse codigo essa função não esta funcionando esta ? thomazferraz@hotmail.com

abraços, feliz natal

Olá Thomaz!

Exatamente, peguei no eletronlivre...agora está indo, mas quero implementar esta função do toque no botão ser reconhecido no app!

Abração e FELIZ 2014!!!

tambem estou tentando, mas não esta atualizando quando acionado pelo botão.. 

esse touchOsc é meio complicado ne!! kkk

Abraços e feliz 2014!!

Notei que estás usando os pinos 12 e 13 com um Shield Ethernet. Não está dando algum conflito, travando??

Uso um arduino Mega e o Ethernet Shield. Até agora nenhum conflito, porém parei de fazer testes com este código pois o app android que eu estava usando não é mais de graça.

Que tipo de conflito você tem?

Ok, entendei. pensei que estavas usando um UNO, por isso acreditei em possível conflito por utilizares os pinos 12 e 13.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço