ARDUINO photogate för hög hastighet fotografering (2 / 2 steg)
Steg 2: Krets och kod
Du kommer att behöva ladda ner och installera det följande biblioteket:
KODEN / /
#include < Wire.h >
#include < LiquidCrystal_I2C.h >
LiquidCrystal_I2C lcd (0x3f, 2, 1, 0, 4, 5, 6, 7, 3, positiv);
#include < IRremote.h >
#define RECV_PIN 4
IRrecv irrecv(RECV_PIN);
decode_results remote;
#define irLed 12 //ir ledde på stift 12
int knappen = 0; IR-knappen tracker
int fdel = 0; blixt utlösare dröjsmål
int pdel = 0; senaste flash utlösaren dröjsmål
int camb = 10000; kamera-lampa tid
int pcamb = 10000; förra kamera lampa tid
#define camt 10 //camera trigger pin
#define flash 8 //flash trigger-pin
int b = 0;
int x = 0; medan loop håll
int y = 0; medan loop counter
int z = 0; tryckknapp medan loop
int irt; IR-transistor värde
int pirt; senaste IR-transistor värdet
int irTrigger = 900; blixt utlösare tröskel
int pirTrigger = 900; senaste flash utlösaren tröskel
#define pButton 7 //push knappen på stift 7
#define lcdLight 6 //lcd bakgrundsbelysning på off stift 6
#define relä 9
void setup() {
Serial.BEGIN(9600); för att testa
LCD.BEGIN (16, 2); initiera lcd för 16 tecken 2 rader
LCD.Clear();
irrecv.enableIRIn(); Starta mottagaren
pinMode (irLed, produktionen);
pinMode (camt, produktionen);
pinMode (flash, OUTPUT);
pinMode (pButton, INPUT_PULLUP);
digitalWrite (irLed, hög);
pinMode(lcdLight,OUTPUT);
digitalWrite(lcdLight,HIGH);
pinMode(relay,OUTPUT);
}
void loop()
{
IRT=analogRead(a0); IR-transistor värde 4 testning
Serial.println(IRT);
digitalWrite(lcdLight,HIGH);
hålla lcd display rätt / / /
FDEL = begränsa (fdel, 0, 999);
om (fdel == 9 & & pdel == 10 || fdel == 99 & & pdel == 100)
{
LCD.Clear();
}
pdel = fdel;
Camb = begränsa (camb, 3000, 30000); 3-30 sec lampa tid
om (camb == 9500 & & pcamb == 10000)
{
LCD.Clear();
}
pcamb = camb;
irTrigger = begränsa (irTrigger, 100, 1022);
om (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 ("lampan TIMER:");
lcd.setCursor (11, 1);
LCD.Print(Camb);
Kontrollera för IR-indata / / /
om (irrecv.decode(&remote)) {
Serial.println(Remote.Value); Detta är för att kartlägga din fjärr / / /
kamera triger scenen / / /
om (remote.value == 1320368837)
{
LCD.Clear();
digitalWrite(lcdLight,LOW); Inaktivera lcd
digitalWrite(relay,HIGH);
Delay(1000);
digitalWrite (camt, hög); öppna kamerans slutare
x = 1;
medan (x == 1) / / håll för IR-ingången som utlöses
{
y = y + 1.
Delay(1);
IRT = analogRead(A0); Läs IR-transistor
Serial.println(IRT); för att testa
om (irt < irTrigger) / / triger blixten
{
Delay(FDEL);
digitalWrite (flash, hög);
Delay(20);
digitalWrite (flash, låg);
x = 0;
y = 0;
Delay(100);
digitalWrite (camt, låg);
Delay(1000);
digitalWrite(relay,LOW);
}
annars om (y > camb) //exit om inget händer
{
digitalWrite (camt, låg);
digitalWrite(relay,LOW);
x = 0;
y = 0;
}
}
}
IR-koder för att ändra variabler / / /
Flash dröjsmål / / /
annat if (remote.value == 1320358637)
{
FDEL = fdel + 1.
knappen = 1;
}
annat if (remote.value == 4294967295 & & knappen == 1)
{
FDEL = fdel + 1.
}
annat if (remote.value == 1320368327
)
{
FDEL = fdel - 1;
knappen = 2;
}
annat if (remote.value == 4294967295 & & knappen == 2)
{
FDEL = fdel - 1;
}
kamera lampa tid / / /
annat if (remote.value == 1320392807)
{
Camb = camb + 500.
knappen = 3;
}
annat if (remote.value == 4294967295 & & knappen == 3)
{
Camb = camb + 500.
}
annat if (remote.value == 1320360167)
{
Camb = camb - 500.
knappen = 4;
}
annat if (remote.value == 4294967295 & & knappen == 4)
{
Camb = camb - 500.
}
IR-UTLÖSARE / / /
annat if (remote.value == 1320401477)
{
irTrigger = irTrigger + 1.
knappen = 5;
}
annat if (remote.value == 4294967295 & & knappen == 5)
{
irTrigger = irTrigger + 1.
}
annat if (remote.value == 1320417287)
{
irTrigger = irTrigger - 1;
knappen = 6;
}
annat if (remote.value == 4294967295 & & knappen == 6)
{
irTrigger = irTrigger - 1;
}
hålla andra knappar från utlöser repeat / / /
annat
{
knappen = 0; återställa fjärr-knappen
}
irrecv.Resume(); Ta emot nästa värde
}
tryckknapp / / /
om (digitalRead(pButton) == låg)
{
LCD.Clear();
z = 1;
Delay(500);
medan (z == 1)
{
IRT = analogRead(A0); Läs IR-transistor
hålla LCD stabilt / /
om (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);
om (digitalRead(pButton) == låg)
{
z = 0;
LCD.Clear();
Delay(500);
bryta;
}
}
}
Hur snabb värdena ändras fördröja / / /
Delay(125);
}