Stap 2: Circuit en code
U zult moeten downloaden en installeren van de bibliotheek van het volgende:
DE CODE / /
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
LiquidCrystal_I2C lcd (0x3f, 2, 1, 0, 4, 5, 6, 7, 3, positieve);
#include < IRremote.h >
#define RECV_PIN 4
IRrecv irrecv(RECV_PIN);
decode_results externe;
#define irLed 12 //ir leidde op pin 12
int knop = 0; IR knop tracker
int fdel = 0; flash trigger vertraging
int pdel = 0; laatste flash trigger vertraging
int woon = 10000; camera lamp tijd
int pcamb = 10000; laatste keer dat camera lamp
#define camt 10 //camera trigger pin
#define flash 8 //flash trigger pin
int b = 0;
int x = 0; terwijl lus greep
int y = 0; terwijl lus teller
int z = 0; drukknop while lus
int de irt; IR transistor waarde
int pirt; laatste ir transistor waarde
int irTrigger = 900; flash trigger drempel
int pirTrigger = 900; laatste flash trigger drempel
#define pButton 7 //push knop op pin 7
#define lcdLight 6 //lcd terug licht op uit pin 6
#define Relais 9
VOID Setup {}
Serial.begin(9600); voor het testen
LCD.begin (16, 2); initialiseren van het LCD-scherm voor 16 tekens 2 lijnen
LCD.Clear();
irrecv.enableIRIn(); Start de ontvanger
pinMode (irLed, OUTPUT);
pinMode (camt, OUTPUT);
pinMode (flash, uitvoer);
pinMode (pButton, INPUT_PULLUP);
digitalWrite (irLed, hoge);
pinMode(lcdLight,OUTPUT);
digitalWrite(lcdLight,HIGH);
pinMode(relay,OUTPUT);
}
void loop
{
IRT=analogRead(a0); IR transistor waarde 4 testen
Serial.println(IRT);
digitalWrite(lcdLight,HIGH);
houden lcd vertoning juiste / / /
fdel = beperken (fdel, 0, 999);
Als (fdel == 9 & & pdel == 10 || fdel == 99 & & pdel == 100)
{
LCD.Clear();
}
pdel = fdel;
woon = beperken (woon, 3000, 30000); 3-30 sec lamp tijd
Als (woon == 9500 & & pcamb == 10000)
{
LCD.Clear();
}
pcamb = woon;
irTrigger = beperken (irTrigger, 100, 1022);
Als (irTrigger == 999 & & pirTrigger == 1000)
{
LCD.Clear();
}
pirTrigger = irTrigger;
LCD data / / /
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 ("lamp TIMER:");
lcd.setCursor (11, 1);
LCD.Print(Camb);
selectievakje voor ir input / / /
Als (irrecv.decode(&remote)) {}
Serial.println(Remote.Value); Dit is voor het toewijzen van uw externe / / /
camera triger fase / / /
Als (remote.value == 1320368837)
{
LCD.Clear();
digitalWrite(lcdLight,LOW); lcd uitschakelen
digitalWrite(relay,HIGH);
delay(1000);
digitalWrite (camt, hoge); Open camera sluiter
x = 1;
terwijl (x == 1) / / hold voor ir drempel worden geactiveerd
{
y = y + 1;
delay(1);
Metro = analogRead(A0); Lees ir transistor
Serial.println(IRT); voor het testen
Als (irt < irTrigger) / / de flits triger
{
delay(fdel);
digitalWrite (flash, hoge);
vertraging(20);
digitalWrite (flash, laag);
x = 0;
y = 0;
delay(100);
digitalWrite (camt, laag);
delay(1000);
digitalWrite(relay,LOW);
}
anders als (y > woon) //exit als er niets gebeurt
{
digitalWrite (camt, laag);
digitalWrite(relay,LOW);
x = 0;
y = 0;
}
}
}
IR-codes voor het veranderen van variabelen / / /
Flash vertraging / / /
else if (remote.value == 1320358637)
{
fdel = fdel + 1;
knop = 1;
}
else if (remote.value == 4294967295 & & knop == 1)
{
fdel = fdel + 1;
}
else if (remote.value == 1320368327
)
{
fdel = fdel - 1;
knop = 2;
}
else if (remote.value == 4294967295 & & knop == 2)
{
fdel = fdel - 1;
}
camera lamp tijd / / /
else if (remote.value == 1320392807)
{
woon = woon + 500;
knop = 3;
}
else if (remote.value == 4294967295 & & knop == 3)
{
woon = woon + 500;
}
else if (remote.value == 1320360167)
{
woon = woon - 500;
knop = 4;
}
else if (remote.value == 4294967295 & & knop == 4)
{
woon = woon - 500;
}
IR TRIGGER / / /
else if (remote.value == 1320401477)
{
irTrigger = irTrigger + 1;
knop = 5;
}
else if (remote.value == 4294967295 & & knop == 5)
{
irTrigger = irTrigger + 1;
}
else if (remote.value == 1320417287)
{
irTrigger = irTrigger - 1;
knop = 6;
}
else if (remote.value == 4294967295 & & knop == 6)
{
irTrigger = irTrigger - 1;
}
voorkomen dat andere knoppen triggering herhalen / / /
anders
{
knop = 0; externe resetknop
}
irrecv.resume(); De volgende waarde ontvangen
}
drukknop / / /
Als (digitalRead(pButton) == laag)
{
LCD.Clear();
z = 1;
delay(500);
terwijl (z == 1)
{
Metro = analogRead(A0); Lees ir transistor
LCD stabiel te houden / /
Als (irt < 9 & & pirt > 10 || irt < 99 & & pirt > 100 || irt < 999 & & pirt > 1000)
{
LCD.Clear();
}
pirt = metro;
lcd.setCursor (2, 0);
LCD.Print ("metro MONITOR:");
lcd.setCursor(6,1);
LCD.Print("#");
lcd.setCursor (7, 1);
LCD.Print(IRT);
delay(500);
Als (digitalRead(pButton) == laag)
{
z = 0;
LCD.Clear();
delay(500);
breken;
}
}
}
hoe snel waarden veranderen vertragen / / /
delay(125);
}