
Primero decir que encontré este post del foro pero no me soluciona. Al final se indica que era un problema del relé pero los mios funcionan perfectamente:
electronica-digital-microcontroladores- ... %2Dprueba).
En mi caso los relés solo funcionan en un ordenador (y he probado otros 2). Casi estoy seguro de que es un problema de alimentación pero aun así tengo dudas que os comento:


Lo que tengo montado se ve en las fotos. Tal y como está funciona perfecto porque tengo las dos placas Arduino UNO conectadas a un ordenador ASUS. El problema es que si conecto la placa que manda la señal de control al relé por el PIN11 en otro ordenador (probado en un Mac y un Dell), este no se activa. Tal y como está montado se activa cuando aprieto el primer botón de la protoboard, lo que se traduce en el receptor como un LOW en el PIN11.
Aunque me ha llevado su tiempo al final es un radioenlace sencillo. Usa dos módulos APC220.
CÓDIGO EMISOR
////////////////////////////////////////////////
// Simple APC220 Transmitter Arduino Code
// by
// Kaleb Hill
// 5/30/15
////////////////////////////////////////////////
const int ledPin = 13;
const int switchPin = 2;
int switchState = 0;
void setup()
{
Serial.begin(9600);
pinMode(switchPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop()
{
switchState = digitalRead(switchPin);
if(switchState == HIGH)
{
Serial.write(switchState);
Serial.flush();
digitalWrite(ledPin, LOW);
Serial.println(switchState);
delay(1);
}
else
{
Serial.write(switchState);
Serial.flush();
digitalWrite(ledPin, HIGH);
Serial.println(switchState);
delay(1);
}
}
CÓDIGO RECEPTOR
////////////////////////////////////////////////
// Simple APC220 Receiver Arduino Code
// by
// Kaleb Hill
// 5/30/15
////////////////////////////////////////////////
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
pinMode(11,OUTPUT);
}
void loop()
{ int Data;
if(Serial.available()>0){
Data = Serial.read();
Serial.flush();
}
switch ( Data ) {
case '0':
lowvalue();
break;
case '1':
highvalue();
break;
default :
break;
}
delay(1);
}
void lowvalue()
{
digitalWrite(13, LOW);
digitalWrite(11, LOW);
Serial.println("0");
}
void highvalue()
{
digitalWrite(13, HIGH);
digitalWrite(11, HIGH);
Serial.println("1");
}
Supongo que será un problema de corriente aunque a la vez no entiendo que pueda ser esto ya que el relé se activa al recibir un cero. ¿Será problema de la "masa" que proporciona el USB. Además, probé a alimentar el receptor con una pila de 9v y tampoco funciona. El relé no llega a activarse.
Para descartar problemas,, la alimentación del relé la estoy sacando de la placa emisora pero nada.
Eso, algo muy raro a mi entender. ¿Cómo puede ser que solo funcione en un ASUS? Además, en el proyecto final debo poder alimentar las dos placas en baterías y deberían ser pequeñas (portables). ¿Alguien me puede ayudar? Gracias!