Buenos días, yo estoy realizando un proyecto con el modulo Rf 433Mhz, este controlara el prendido y el apagado de 4 lámparas. este proyecto debe ser programado por un arduino nano, cuando se oprime el botón, el modulo rf enviara la señal al arduino y después este pasara al relé para asi prender la lámpara, pero cuando trato se demora mucho y a veces no sirve. lo que deseo saber es que si mis conexiones estan bien, la alimentación. Las resistencias son de 10K, el transistor que estoy usando es el BC547 y los relé son de 5V y yo también estoy usando un led para probar que si funciona el circuito al final del relé.
Muchas Gracias
// Led del pin soldado en placa arduino
const byte ledPin = 13;
// Conexion de verify tx: (PIN3 --> INT1)
const byte vtRem = 3;
const byte vtRemInt = 1;
// Conexion de entradas A B C D
const byte keyB_D = 4;
const byte keyB_C = 5;
const byte keyB_B = 6;
const byte keyB_A = 7;
// Conexion de Leds A B C D
const byte ledA = 8;
const byte ledB = 9;
const byte ledC = 10;
const byte ledD = 11;
// Estado de cada Led inicializados a OFF.
boolean statusLedA = false;
boolean statusLedB = false;
boolean statusLedC = false;
boolean statusLedD = false;
void setup() {
// Configuracion de Leds como salidas.
pinMode(ledPin, OUTPUT);
pinMode(ledA, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(ledC, OUTPUT);
pinMode(ledD, OUTPUT);
// Configuracion de teclas como entradas.
pinMode(keyB_A, INPUT);
pinMode(keyB_B, INPUT);
pinMode(keyB_C, INPUT);
pinMode(keyB_D, INPUT);
// Activamos el PULL-UP de Verify Tx para tener más estabilidad.
pinMode(vtRem, INPUT_PULLUP);
// Activamos la interrupción (Ya podemos leer el mando)
attachInterrupt(vtRemInt, keyBRead, RISING);
}
void loop() {
// El Led soldado en placa está apagado mientras no se pulsa ningún botón.
digitalWrite(ledPin, LOW);
}
//Rutina de interrupcion para leer el teclado
void keyBRead() {
// Deshabilitamos las interrupciones para evitar que el usuario vuelva a pulsar antes de que de tiempo a leer el teclado.
noInterrupts();
// Encendemos el LED de la placa arduino para mostrar al usuario que se ha recibido algo.
digitalWrite(ledPin, HIGH);
// Si tenemos estado ALTO en el pin de la tecla A, significa que esta se ha pulsado, si no, pasamos a comprobar B y asi sucesivamente.
if(digitalRead(keyB_A) == HIGH){
// En este caso que hemos recibido A, conmutamos el valor del led A
statusLedA = !statusLedA;
digitalWrite(ledA, statusLedA);
}
if(digitalRead(keyB_B)== HIGH){
statusLedB = !statusLedB;
digitalWrite(ledB, statusLedB);
}
if(digitalRead(keyB_C)== HIGH){
statusLedC = !statusLedC;
digitalWrite(ledC, statusLedC);
}
if(digitalRead(keyB_D)== HIGH){
statusLedD = !statusLedD;
digitalWrite(ledD, statusLedD);
}
delay(250);
interrupts();
}
[/code ]