Ir ao conteúdo
  • Cadastre-se

Programa arduino


Avelar Neco

Posts recomendados

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);
}
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...