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);
}
Tags:
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!!
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por