Hola, tengo dos proyectos independientes y básicamente se trata de lo mismo, ambos sirven para controlar un par de interruptores electrónicos, en uno a través de bluetooth y en el otro a través de un modulo de RF de 433 Mhz. Los dos funcionan bien sin problemas ni nada.
Ahora quiero darles una vuelta de tuerca y mi pregunta es saber si es posible implementar los dos sistemas funcionando juntos en la misma placa, o sea, poder utilizar a la misma vez el bluetooth o el RF.
Claro que puedes.
Es lo mismo que hacerlo manual y alguno de los dos sistemas, lo comento como para que lo pruebes. El tema siempre es que un sistema no debe ser prioritario sobre el otro.
Si BT (Bluetooth) dice OPEN solo hará un OPEN si estaba cerrado. Lo mismo para la operación inversa.
Si RF (433Mhz) hace lo mismo, tendrá el mismo comportamiento.
Asi que ambos accionan sobre una variable que es la que realmente controla el funcionamiento de tu carga electrica.
Traducido por si aún no he sido claro.
Una acción es solo eso, el cambio de lo que estaba a un estado nuevo y nada mas. No mantiene el estado.
Si por BT o RF le dices 1 (abrir) o 0 (cerrar) y será como una accion instantánea para la variable pero ésta, si mantendrá su estado y por ende la carga electrica quedará con la orden que has dado.
De ese modo el sistema queda esperando nuevos cambios.
LUCES_GARAGE_BT_FINAL.ino (1.9 KB)
LUCES_GARAJE_RF_2_Fases_independientes.ino (2.2 KB)
Muchas gracias. Aqui he subido los dos proyectos, uno con BT y otro con RF, los dos sirven para lo mismo, encender y apagar una luz que he puesto en mi plaza de garaje y permitir a un enchufe tener corriente o nó, en el caso del BT la señal la envio a través de una app para iPhone y en el caso de RF con un mando de aliexpress y al cual he averiguado la frecuencia y va en ele código. Ahora toca romperme la cabeza y ver la forma de unir los dos códigos.
Moderdador:
No lo tomes a mal pero el foro ahora no tiene limites como antes para visualizar códigos.
Por favor, súbelos de modo que se vean ambos. ya se que solo hay que descargarlos pero te aconsejo que siempre pongas los códigos visibles para lograr respuestas inmediatas.
No se si se subirán así o de otro modo, el caso es que aquí las he subido como he podido.
[LUCES_GARAGE_BT]
/*
- programa para controlar una luz y un enchufe en mi plaza de garage mediante BlueTooth
*/
#include <SoftwareSerial.h>
#include <ArduinoBlue.h>
const unsigned long BAUD_RATE = 9600;
//const int LUZ_PIN = 4;
const int LUZ_PIN = 12; //CONECTAR EN PIN DIGITAL, NO ANALOGICO
const int LUZ_DATO = 11; //CONECTAR EN PIN DIGITAL, NO ANALOGICO
const int ENCHUFE_PIN = 3; //CONECTAR EN PIN DIGITAL, NO ANALOGICO
const int ENCHUFE_DATO = 4; //CONECTAR EN PIN DIGITAL, NO ANALOGICO
// The bluetooth tx and rx pins must be supported by software serial.
// Visit https://www.arduino.cc/en/Reference/SoftwareSerial for unsupported pins.
// Bluetooth TX -> Arduino D8
// Bluetooth RX -> Arduino D7
const int BLUETOOTH_TX_PIN = 8;
const int BLUETOOTH_RX_PIN = 7;
SoftwareSerial bluetooth(BLUETOOTH_TX_PIN, BLUETOOTH_RX_PIN);
ArduinoBlue phone(bluetooth); // pass reference of bluetooth object to ArduinoBlue constructor.
int button;
bool luzOn;
bool enchufeOn;
void setup() {
// Start serial communications.
// The baud rate must be the same for both serials.
Serial.begin(BAUD_RATE);
bluetooth.begin(BAUD_RATE);
// delay just in case bluetooth module needs time to "get ready".
delay(100);
// Declare LED pins as output pins
pinMode(LUZ_PIN, OUTPUT);
pinMode(ENCHUFE_PIN, OUTPUT);
pinMode(LUZ_DATO, OUTPUT);
pinMode(ENCHUFE_DATO, OUTPUT);
}
void loop() {
button = phone.getButton();
if (button == 0) {
if (luzOn) {
digitalWrite(LUZ_PIN, LOW);
digitalWrite(LUZ_DATO, LOW);
luzOn = false;
}
else {
digitalWrite(LUZ_PIN, HIGH);
digitalWrite(LUZ_DATO, HIGH);
luzOn = true;
}
}
else if (button == 1) {
if (enchufeOn) {
digitalWrite(ENCHUFE_PIN, LOW);
digitalWrite(ENCHUFE_DATO, LOW);
enchufeOn = false;
}
else {
digitalWrite(ENCHUFE_PIN, HIGH);
digitalWrite(ENCHUFE_DATO, HIGH);
enchufeOn = true;
}
}
}
[LUCES_GARAGE_RF]
/*
Programa para encender y apagar las luces y des/conectar un enchufe en mi plaza
de garage mediante un mando de RadioFrecuencia de 433Mhz.
*/
// Pin de DATA del receptor al pin 2 del arduino para hacer las interrupciones
// Pin Vcc del receptor al pin de 5v de arduino
// Pin GND del reeceptor al pin GND de arduino
// El pin 2 sirve tanto para la parte de la luz como para la del enchufe
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup()
{
pinMode(10,OUTPUT); // Declaro el pin 13 como salida. Va a la entrada de señal de la luz
pinMode(11,OUTPUT); // Declaro el pin 11 como salida. led ON luz
pinMode(12,OUTPUT); // Declaro el pin 12 como salida. led ON enchufe
pinMode(13,OUTPUT); // Declaro el pin 13 como salida. Va a la entrada de señal del enchufe
Serial.begin(9600);
mySwitch.enableReceive(1); // 2 opcciones: El 0, va al pin 2 ó el 1, va al pin 3 de arduino como RX
// Te hace una interrupción en el pin 2. Ahí es donde conectamos el Receptor
}
void loop()
{
if (mySwitch.available())
{
long int value = mySwitch.getReceivedValue(); // Leemos las interrupciones
// Metemos el codigo leido en el value
if (value == 0 )
{
Serial.println("Error de codigo");
}
else
{
Serial.print("Codigo recibido");
Serial.println(value);
}
// Compara dato recibido
if (value == 5806433) // Valor del Boton A Mando 1
if ( value == 10925985) // Valor del Boton A Mando 2
{
digitalWrite(13,HIGH);
Serial.println("Led ON"); // Envio al PC el codigo
Serial.println("BOTON A");
}
// Led del enchufe. Se conecta al pin 12
{
digitalWrite(12,HIGH);
Serial.println("Led ON"); // Envio al PC el codigo
Serial.println("BOTON A");
}
// Compara dato recibido
if (value == 5806434) // Valor del Boton B Mado 1
if (value == 10925986) // Valor del Boton B Mando 2
{
digitalWrite(13,LOW);
Serial.println("Led OFF"); // Envio al PC el codigo
Serial.println("BOTON B");
}
{
digitalWrite(12,HIGH);
Serial.println("Led OFF"); // Envio al PC el codigo
Serial.println("BOTON B");
}
// Compara dato recibido
if (value == 5806440) // Valor del Boton C Mando 1
if (value == 10925992) // Valor del Boton C Mando 2
{
digitalWrite(10,HIGH);
Serial.println("Led ON"); // Envio al PC el codigo
Serial.println("BOTON C");
}
// Led de la ilunimación. Se conecta al pin 11
{
digitalWrite(11,HIGH);
Serial.println("Led ON"); // Envio al PC el codigo
Serial.println("BOTON C");
}
// Compara dato recibido
if (value == 5806436) // Valor del Boton D Mando 1
if (value == 10925988) // Valor del Boton C Mando 2
{
digitalWrite(10,LOW);
Serial.println("Led OFF"); // Envio al PC el codigo
Serial.println("BOTON D");
}
{
digitalWrite(11,HIGH);
Serial.println("Led OFF"); // Envio al PC el codigo
Serial.println("BOTON D");
}
}
else
{
mySwitch.resetAvailable();
}
}
Moderador:
Lee las normas y edita tus dos post, y además que esten debidamente identados.
Usa el autoformato del IDE.
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.