El Código.
/* Este código es para usarlo con una cámara PTZ de JVC modelo KY-PZ100 en cualquiera de sus versiones y una placa de arduino Mega 2560.
En caso de ser Arduino el IR debe asignarse y conectarse al pin3
Con este código simplemente se envía la orden de posición a la cámara 1-6 via IR que es una de sus vías de control.
La propuesta es hacer una TV Radio con una simple cámara y con 4 sensores de audio (pos1-4) siendo la 5 y 6 utilizadas cuando existe la detección de más de uno de los sensores.
Hay que tener en cuanta que los cambios deben de disponer de un tiempo mínimo para que el espectador no se vuelva loco con los cambios de cámara , aquí se utiliza el mínimo recomendado.
En cámara se debe activar la función de memoria de imagen antes de cambio de esa forma se evita la visualización de los movimientos.
La cámara puede publicar directamente a You tube , Facebook etc la transmision se debe activar vía Menú, consola de control RM-LP100 o Web control
Para el envió de los codigos IR se utiliza la librería "IRremote.h"
IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
An IR LED must be connected to Arduino PWM Pin3 Mega pin 9.
Version 0.1 July, 2009
Copyright 2009 Ken Shirriff
http://arcfn.com
Para el LCD se han utilizado
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 16, 2);
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
#define Cam1 0xC305
#define Cam2 0xC385
#define Cam3 0xC345
#define Pos1 0xC360
#define Pos2 0xC3E0
#define Pos3 0xC310
#define Pos4 0xC390
#define Pos5 0xC350
#define Pos6 0xC3D0
// Define sensor pin
const int AudSensor1 = 5;
const int AudSensor2 = 6;
const int AudSensor3 = 7;
const int AudSensor4 = 8;
const int Ledout = 4;
// Define a variable for the button state
IRsend irsend;
LiquidCrystal_I2C lcd(0x27, 16, 2); // si no te sale con esta direccion puedes usar (0x3f,16,2) || (0x27,16,2) ||(0x20,16,2)
void setup()
{
Wire.begin();
lcd.begin(16, 2);
lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
//lcd.noBacklight();
Serial.begin(9600);
// Set Switch pin as Input
pinMode(AudSensor1, INPUT);
pinMode(AudSensor2, INPUT);
pinMode(AudSensor3, INPUT);
pinMode(AudSensor4, INPUT);
pinMode(Ledout, OUTPUT);
}
void loop() {
lcd.display();
// Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.
if ((digitalRead(AudSensor2)&& digitalRead(AudSensor3) == HIGH))
{ lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 2+3.");
lcd.setCursor(0, 1);
lcd.print("Posicion 5.");
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos5, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos5, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos5, 16, 0);
delay(2000);lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
// Si el sensor en pin5 y pin6 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.
else if ((digitalRead(AudSensor1)&& digitalRead(AudSensor2) == HIGH))
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 1+2 .");
lcd.setCursor(0, 1);
lcd.print("Posicion 6.");
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(2000);lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
// Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.
else if ((digitalRead(AudSensor2)&& digitalRead(AudSensor4) == HIGH))
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 2+4.");
lcd.setCursor(0, 1);
lcd.print("Posicion 6.");
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(2000);lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
// Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.
else if ((digitalRead(AudSensor3)&& digitalRead(AudSensor1) == HIGH))
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 3+1.");
lcd.setCursor(0, 1);
lcd.print("Posicion 6.");
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(2000);lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
// Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.
else if ((digitalRead(AudSensor3)&& digitalRead(AudSensor4) == HIGH))
{ lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 3+4.");
lcd.setCursor(0, 1);
lcd.print("Posicion 6.");
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(2000);lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
// Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.
else if ((digitalRead(AudSensor1)&& digitalRead(AudSensor4) == HIGH))
{ lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 1+4.");
lcd.setCursor(0, 1);
lcd.print("Posicion 6.");
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos6, 16, 0);
delay(2000);lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
else if (digitalRead(AudSensor1)== HIGH)
{
// Si el sensor en pin5 da alto escribe en serial monitor, enciende el led y envia 1er 2 do código IR por pin 9 PMW.
Serial.print("Enviando código Cámara 1, Posición 1 sen1 ");
Serial.print("\n");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 1.");
lcd.setCursor(0, 1);
lcd.print("Posicion 1.");
//irsend forma parte de la libreia IR cam y posicion esta definido al inicio.
irsend.sendJVC(Pos1, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos1, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos1, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos1, 16, 0);
delay(5000);lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
// Si el sensor en pin6 da alto escribe en serial monitor, enciende el led y envia 1er 2 do código IR por pin 9 PMW.
else if (digitalRead(AudSensor2) == HIGH){
Serial.print("Enviando código Cámara 1, Posición 2 sen2");
Serial.print("\n");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 2.");
lcd.setCursor(0, 1);
lcd.print("Posicion 2.");
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos2, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos2, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos2, 16, 0);
delay(5000);
lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}// Si el sensor en pin7 da alto escribe en serial monitor, enciende el led y envia 1er 2 do código IR por pin 9 PMW.
else if (digitalRead(AudSensor3) == HIGH)
{
Serial.print("Enviando código Cámara 1, Posición 3 sen3 ");
Serial.print("\n");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 3.");
lcd.setCursor(0, 1);
lcd.print("Posicion 3.");
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos3, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos3, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos3, 16, 0);
delay(5000);
lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
// Si el sensor en pin7 da alto escribe en serial monitor, enciende el led y envia 1er 2 do código IR por pin 9 PMW.
else if (digitalRead(AudSensor4) == HIGH)
{
Serial.print("Enviando código Cámara 1, Posición 4 sen4 ");
Serial.print("\n");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor 4.");
lcd.setCursor(0, 1);
lcd.print("Posicion 4.");
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos4, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos4, 16, 0);
delay(50);
irsend.sendJVC(Cam1, 16, 0);
delay(50);
irsend.sendJVC(Pos4, 16, 0);
delay(5000);
lcd.clear();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
else
{
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("** MACO ** ");
lcd.setCursor(0, 1);
lcd.print("JVC PTZ Audio Ctl");
}
}