Ir ao conteúdo
  • Cadastre-se
Avelar Neco

Programa arduino

Recommended Posts

Baseados em post criei um programa para acionar 4 reles via rede ethernet com o App OSC, porém preciso entender dois fatos. 1º. Só consigo usar as portas 0 a 9, as portas 10 a 13 não aceita o comando, o que pode estar ocorrendo? 2º. Sempre que a placa é alimentada todos os 4 relés vão pra 1, como faço para que eles permaneça em 0 e só vão pra 1 quando enviado o comando? Abaixo o programa que estou usando:


#include <spi.h>
#include <ethernet.h>
#include <ardosc.h>

byte myMac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte myIp[] = { 192, 168, 1, 48 };
int serverPort = 8000;
int destPort= 9000;
int relePin = 6;
int relePin2 = 7;
int relePin3 = 8;
int relePin4 = 9;

int flag=0;
int flag2=0;
int flag3=0;
int flag4=0;

OSCServer server;
OSCClient client;

void setup(){

Ethernet.begin(myMac ,myIp);
server.begin(serverPort);

server.addCallback("/ard/relePin",&func1);
server.addCallback("/ard/relePin2",&func2);
server.addCallback("/ard/relePin3",&func3);
server.addCallback("/ard/relePin4",&func4);

pinMode(relePin, OUTPUT);
pinMode(relePin2, OUTPUT);
pinMode(relePin3, OUTPUT);
pinMode(relePin4, OUTPUT);

}

void loop(){

if(server.aviableCheck()>0){
}

}

void func1(OSCMessage *_mes){
int value=(int)_mes->getArgFloat(0);
digitalWrite(relePin,value);

OSCMessage txMes;

txMes.setAddress(_mes->getIpAddress(),destPort);
txMes.beginMessage("/ard/relePin");
txMes.addArgFloat(flag);

if(flag==1){
flag=0;
digitalWrite(relePin, HIGH);
}
else{
flag=1;
digitalWrite(relePin, LOW);
}

txMes.addArgInt32(flag);

client.send(&txMes);

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

OSCMessage txMes;

txMes.setAddress(_mes->getIpAddress(),destPort);
txMes.beginMessage("/ard/relePin2");
txMes.addArgFloat(flag2);

if(flag2==1){
flag2=0;
digitalWrite(relePin2, HIGH);
}
else{
flag2=1;
digitalWrite(relePin2, LOW);
}
}
void func3(OSCMessage *_mes){
int value=(int)_mes->getArgFloat(0);
digitalWrite(relePin3,value);

OSCMessage txMes;

txMes.setAddress(_mes->getIpAddress(),destPort);
txMes.beginMessage("/ard/relePin3");
txMes.addArgFloat(flag3);

if(flag3==1){
flag3=0;
digitalWrite(relePin3, HIGH);
}
else{
flag3=1;
digitalWrite(relePin3, LOW);
}
}
void func4(OSCMessage *_mes){
int value=(int)_mes->getArgFloat(0);
digitalWrite(relePin4,value);

OSCMessage txMes;

txMes.setAddress(_mes->getIpAddress(),destPort);
txMes.beginMessage("/ard/relePin4");
txMes.addArgFloat(flag4);

if(flag4==1){
flag4=0;
digitalWrite(relePin4, HIGH);
}
else{
flag4=1;
digitalWrite(relePin4, LOW);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×