Paso 2: Circuito y código
Usted necesitará descargar e instalar la biblioteca siguiente:
EL CÓDIGO / /
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
LiquidCrystal_I2C lcd (0x3f, 2, 1, 0, 4, 5, 6, 7, 3, positivo);
#include < IRremote.h >
#define RECV_PIN 4
Irrecv(RECV_PIN) de IRrecv;
decode_results remota;
#define irLed //ir 12 led en el pin 12
botón int = 0; perseguidor del botón ir
fdel int = 0; retardo de disparo de Flash
pdel int = 0; último retardo de disparo de flash
int camb = 10000; tiempo de bulbo de cámara
pcamb int = 10000; última vez de bulbo de cámara
#define camt 10 //camera pasador de gatillo
#define flash 8 pasador de gatillo //flash
int b = 0;
int x = 0; mientras que asimiento del lazo
int y = 0; mientras contador de bucle
int z = 0; botón y lazo
int irt; valor de transistor ir
pirt int; último valor de transistor ir
int irTrigger = 900; umbral de disparo Flash
int pirTrigger = 900; último umbral de disparo de flash
#define //push p 7 botón de pin 7
#define lcdLight 6 //lcd luz trasera de perno 6
#define relé 9
void setup() {}
Serial.Begin(9600); para la prueba
LCD.Begin (16, 2); inicializar el lcd de 16 caracteres 2 líneas
LCD.Clear();
irrecv.enableIRIn(); Inicio del receptor
pinMode (irLed, salida);
pinMode (camt, salida);
pinMode (flash, salida);
pinMode (p, INPUT_PULLUP);
digitalWrite (irLed, HIGH);
pinMode(lcdLight,OUTPUT);
digitalWrite(lcdLight,HIGH);
pinMode(relay,OUTPUT);
}
void loop()
{
IRT=analogRead(a0); ir transistor valor 4 pruebas
Serial.println(IRT);
digitalWrite(lcdLight,HIGH);
mantener lcd pantalla correcta / / /
fdel = restringir (fdel, 0, 999);
Si (fdel == 9 & & pdel == 10 || fdel == 99 & & pdel == 100)
{
LCD.Clear();
}
Pdel = fdel;
camb = restringir (camb, 3000, 30000); tiempo de bulbo de 3-30 seg.
Si (camb == 9500 & & pcamb == 10000)
{
LCD.Clear();
}
pcamb = camb;
irTrigger = restringir (irTrigger, 100, 1022);
Si (irTrigger == 999 & & pirTrigger == 1000)
{
LCD.Clear();
}
pirTrigger = irTrigger;
LCD datos / / /
lcd.setCursor (0, 0);
LCD.Print("del:");
lcd.setCursor (4, 0);
LCD.Print(fdel);
lcd.setCursor (8, 0);
LCD.Print("IRT:");
lcd.setCursor (12, 0);
LCD.Print(irTrigger);
lcd.setCursor (0, 1);
LCD.Print ("temporizador de la bombilla:");
lcd.setCursor (11, 1);
LCD.Print(camb);
Busque ir entrada / / /
Si (irrecv.decode(&remote)) {}
Serial.println(Remote.Value); Esto es para el mapeo de tu control remoto / / /
cámara triger etapa / / /
Si (remote.value == 1320368837)
{
LCD.Clear();
digitalWrite(lcdLight,LOW); Apagar la pantalla lcd
digitalWrite(relay,HIGH);
Delay(1000);
digitalWrite (camt, HIGH); obturador de cámara abierta
x = 1;
mientras que (x == 1) / / hold para que ir umbral desencadenar
{
y = y + 1;
Delay(1);
IRT = analogRead(A0); leer ir transistor
Serial.println(IRT); para la prueba
Si (irt < irTrigger) / / Trigueros el flash
{
Delay(fdel);
digitalWrite (flash, alto);
Delay(20);
digitalWrite (flash, baja);
x = 0;
y = 0;
Delay(100);
digitalWrite (camt, LOW);
Delay(1000);
digitalWrite(relay,LOW);
}
else if (y > camb) //exit si no pasa nada
{
digitalWrite (camt, LOW);
digitalWrite(relay,LOW);
x = 0;
y = 0;
}
}
}
Códigos de infrarrojos para cambiar las variables / / /
retraso Flash / / /
else if (remote.value == 1320358637)
{
fdel = fdel + 1;
botón = 1;
}
else if (remote.value == 4294967295 & & botón == 1)
{
fdel = fdel + 1;
}
else if (remote.value == 1320368327
)
{
fdel = fdel - 1;
botón = 2;
}
else if (remote.value == 4294967295 & & botón == 2)
{
fdel = fdel - 1;
}
cámara bulbo tiempo / / /
else if (remote.value == 1320392807)
{
camb = camb + 500;
botón = 3;
}
else if (remote.value == 4294967295 & & botón == 3)
{
camb = camb + 500;
}
else if (remote.value == 1320360167)
{
camb = camb - 500;
botón = 4;
}
else if (remote.value == 4294967295 & & botón == 4)
{
camb = camb - 500;
}
IR GATILLO / / /
else if (remote.value == 1320401477)
{
irTrigger = irTrigger + 1;
botón = 5;
}
else if (remote.value == 4294967295 & & botón == 5)
{
irTrigger = irTrigger + 1;
}
else if (remote.value == 1320417287)
{
irTrigger = irTrigger - 1;
botón = 6;
}
else if (remote.value == 4294967295 & & botón == 6)
{
irTrigger = irTrigger - 1;
}
mantener los botones de disparo repetición / / /
otra cosa
{
botón = 0; control remoto botón de reinicio
}
irrecv.resume(); Recibir el siguiente valor
}
botón / /
Si (digitalRead(pButton) == LOW)
{
LCD.Clear();
z = 1;
Delay(500);
mientras que (z == 1)
{
IRT = analogRead(A0); leer ir transistor
mantener estable el LCD / /
Si (irt < 9 & & pirt > 10 || irt < 99 & & pirt > 100 || irt < 999 & & pirt > 1000)
{
LCD.Clear();
}
PIRT = irt;
lcd.setCursor (2, 0);
LCD.Print ("IRT MONITOR:");
lcd.setCursor(6,1);
LCD.Print("#");
lcd.setCursor (7, 1);
LCD.Print(IRT);
Delay(500);
Si (digitalRead(pButton) == LOW)
{
z = 0;
LCD.Clear();
Delay(500);
rotura;
}
}
}
Cómo cambian valores rápidos demora / / /
Delay(125);
}