Hoe Intelligent Time-Lapse fotografie Arduino-gecontroleerde (3 / 4 stap)

Stap 3: De Code schrijven


Hier is mijn code.  Voel je vrij om te prutsen met de verschillende parameters te passen uw toepassing, en commentaar als u wilt mij om uit te leggen om het even wat.

De Arduino IDE vanaf arduino.cc installeren als u niet reeds hebt.  Open een nieuwe schets en plak deze code in.  Compileren en uploaden testen.

/*

Lichtgevoelig en verstelbare dynamische Time-Lapse fotografie

Dit programma en het circuit zijn ontworpen om te controleren van time-lapse fotografie
dat is de gebruiker controleerbaar en inspelen op ambient lichtniveaus.
De verlichting op de zonsopgang en zonsondergang fotoshoots kan soms moeilijk zijn
te anticiperen, dus in plaats daarvan terecht te komen met honderden volledig zwart
foto's, een fotoweerstand zintuigen lichtniveaus en dienovereenkomstig stopt of begint
de fotografie. Een potentiometer kan de gebruiker de vertraging tussen instellen
foto's en een meerdere cijfers 7-segment display toont de huidige
vertragingswaarde.

Dit circuit is ontworpen om te worden gebruikt met een infrarood externe sluitertijd. Ik
Dit ontworpen voor een Nikon D3100, maar elke andere DSLR met een externe internetserver, moeten
net zo goed werken. In dit circuit fungeert een LED momenteel als een stand-in voor
de externe sluiter, maar aan te passen voor de sluiter is slechts een kwestie te omzeilen
de knop op de afstandsbediening en de controle van het met de Arduino. Sinds het
is moeilijk te zeggen wanneer een infrarood zender wordt geactiveerd,
de 7-segment display knippert telkens wanneer een foto is genomen om de
gebruiker van de voortgang.

Aangezien veel time-lapse liefhebbers ook geïnteresseerd zijn in het toevoegen van een dynamische element
aan hun foto's, die ik opgenomen functionaliteit voor een servo gestuurde rig
waardoor de camera te draaien of pan over een scène.

Het circuit:
* Het 7-segment display wordt gecontroleerd door pin 2-8 en 10-12. Het display
werken met behulp van elk cijfer als een grond en elk segment als een positieve inbreng.
Bijvoorbeeld, als u wilt weergeven een segment A op het cijfer 3, zou de Arduino ingesteld pin 2,
welke besturingselementen segment A op hoog, en pin 12, oftewel de grond voor het cijfer 3,
op laag.

* De LED, externe sluiter, is verbonden met pin 13 en GND.

* De servo is aangesloten op de 5V en GND en een signaal ontvangt van pin 9.

* De fotoweerstand gebruikt in een spanning-delende circuit in combinatie met een 10kΩ
weerstand, en het wordt gelezen door pin A0.

* De potentiometer wordt gelezen door pin A1

Met dank aan:
FireCGun de Instructables post op "Arduino 4 digit 7 segment display"

December 9, 2013
door Holden Leslie-Bole

Ik verklaar deze code openbaar.

*/

#include < Servo.h > / / de servo-bibliotheek
Servo cameraServo; Een servo-object aangeduid als cameraServo maken
Const int potPin = a1 worden verkregen; Analoge pincode A1 te lezen van de potentiometer instellen
Const int photoresistorPin = A0; Analoge pincode A0 te lezen van de photoresistor instellen
int potValue = 0;
Initialiseren van de potValue, de variabele die de waarde van de potentiometer slaat, op nul
int photoresistorValue = 0;
Initialiseren van de photoresistorValue, de variabele die de waarde van de fotoweerstand slaat, op nul
int shutterDelay = 0; Deze variabele slaat de gebruiker-ingevoerd vertraging tussen foto 's
lange lastPicTime = 0; Het moment waarop de laatste foto is genomen
lange lastServoTime = 0; De tijd waarop de servo laatst bediend
lange timeLapseDuration = 900000;
Voor de kalibratie van de servo - de verwachte duur van de shoot (in milliseconden)
int servoPosition = 0; De servo's positie in graden

Deze sectie toewijst pincodes aan verschillende items op het scherm
Const int aPin = 2;
Const int bPin = 3;
Const int cPin = 4;
Const int dPin = 5;
Const int ePin = 6;
Const int fPin = 7;
Const int gPin = 8;
Const int GND1 = 10;
Const int GND2 = 11;
Const int GND3 = 12;

Const int shutterPin = 13; pin 13 zal de sluiter controleren
int num; Het nummer dat is ingevoerd door de potentiometer
int dig2Value = 0;
int dig3Value = 0;
int brightnessDelay = 3; Een vertraging van willekeurige hoeveelheid waarmee de helderheid van het display

Deze methode één keer uitvoeren wanneer Arduino begint
VOID Setup
{
cameraServo.attach(9); De servo toewijzen aan pin 9
cameraServo.write(0); Initialiseren van de servo op 0
Instellen van de display en de sluitertijd pennen voor uitvoer
pinMode (aPin, uitvoer);
pinMode (bPin, OUTPUT);
pinMode (cPin, OUTPUT);
pinMode (dPin, OUTPUT);
pinMode (ePin, OUTPUT);
pinMode (fPin, OUTPUT);
pinMode (gPin, OUTPUT);
pinMode (GND1, uitvoer);
pinMode (GND2, uitvoer);
pinMode (GND3, uitvoer);
pinMode (shutterPin, OUTPUT);
Serial.begin(9600); Dit is een nuttig beetje van code om in te houden voor het debuggen en testen
}

Deze methode continu draaien
void loop
{
unsigned long currentTime = millis(); Nagaan hoe lang de Arduino heeft geweest lopende
potValue = analogRead(potPin); Lees de potentiometer en sla het in potValue
num = kaart (potValue, 0, 1023, 99, 0); Het uitvoerbereik aanpassen aan de vertraging aanpassen
shutterDelay = num * 1000;
Aangezien de Arduino natuurlijke tijdmeting in milliseconden, zet dit num
in een vertraging tussen foto's in milliseconden
dig2Value = num / 10; Geheel getal PST-bestanden gebruiken om dig2Value de tientallen cijfer
dig3Value = num - (dig2Value * 10); Rekenkundige die levert de cijfers

De gronden ingesteld op hoog
digitalWrite (GND1, hoge);
digitalWrite (GND2, hoge);
digitalWrite (GND3, hoge);

Een d voor vertraging op cijfer één weergeven
digitalWrite (GND1, laag); Zet hem op
d(); Zie methode nietig d()
delay(brightnessDelay); Wachten tot 3 ms zodat je kunt zien
digitalWrite (GND1, hoge); Zwenking op vandoor

digitalWrite (GND2, laag);
Number(dig2Value); Zie number(int i) methode
delay(brightnessDelay);
digitalWrite (GND2, hoge);

digitalWrite (GND3, laag);
Number(dig3Value); Zie number(int i) methode
delay(brightnessDelay);
digitalWrite (GND3, hoge);

servoPosition = cameraServo.read();
Set de servoPosition wat is op dit moment is in graden

photoresistorValue = analogRead(photoresistorPin); Lees de photoresistor
if(photoresistorValue > 100)
Probeer verschillende waarden voor dit. Ik koos voor 100 alleen gebaseerd op experimenten.
{
Als (currentTime - lastPicTime > shutterDelay)
Beoordelen of de ontspanvertraging is verstreken sinds de laatste schermopname
{
De foto
digitalWrite (shutterPin, hoge);
lastPicTime = currentTime;
delay(200);
digitalWrite (shutterPin, laag);
}

Beoordelen van de servo-activiteit
Als (currentTime - lastServoTime > timeLapseDuration/180 & & servoPosition < 180)
{
servoPosition ++;
cameraServo.write(servoPosition); Verplaatsen van de servo
lastServoTime = currentTime;
}
}
}

Deze methode gebruikt switch/case notatie om te roepen de methoden voor de cijfers in antwoord op een geheel getal invoeren
VOID number(int i) {}
switch(i) {}
geval 1: one();
breken;
geval 2: two();
breken;
Case 3: three();
breken;
geval 4: four();
breken;
geval 5: five();
breken;
kast 6: six();
breken;
geval 7: seven();
breken;
geval 8: eight();
breken;
zaak 9: nine();
breken;
standaard: zero();
breken;
}
}

Deze methode geeft de d voor vertraging
VOID d()
{
digitalWrite (aPin, laag);
digitalWrite (bPin, hoge);
digitalWrite (cPin, hoge);
digitalWrite (dPin, hoge);
digitalWrite (ePin, hoge);
digitalWrite (fPin, laag);
digitalWrite (gPin, hoge);
}

Deze methode geeft de cijfers een
VOID one()
{
digitalWrite (aPin, laag);
digitalWrite (bPin, hoge);
digitalWrite (cPin, hoge);
digitalWrite (dPin, laag);
digitalWrite (ePin, laag);
digitalWrite (fPin, laag);
digitalWrite (gPin, laag);
}

Deze methode geeft het cijfer twee
VOID two()
{
digitalWrite (aPin, hoge);
digitalWrite (bPin, hoge);
digitalWrite (cPin, laag);
digitalWrite (dPin, hoge);
digitalWrite (ePin, hoge);
digitalWrite (fPin, laag);
digitalWrite (gPin, hoge);
}

Deze methode geeft het cijfer 3
VOID three()
{
digitalWrite (aPin, hoge);
digitalWrite (bPin, hoge);
digitalWrite (cPin, hoge);
digitalWrite (dPin, hoge);
digitalWrite (ePin, laag);
digitalWrite (fPin, laag);
digitalWrite (gPin, hoge);
}

Deze methode geeft het cijfer vier
VOID four()
{
digitalWrite (aPin, laag);
digitalWrite (bPin, hoge);
digitalWrite (cPin, hoge);
digitalWrite (dPin, laag);
digitalWrite (ePin, laag);
digitalWrite (fPin, hoge);
digitalWrite (gPin, hoge);
}

Deze methode geeft het cijfer vijf
VOID five()
{
digitalWrite (aPin, hoge);
digitalWrite (bPin, laag);
digitalWrite (cPin, hoge);
digitalWrite (dPin, hoge);
digitalWrite (ePin, laag);
digitalWrite (fPin, hoge);
digitalWrite (gPin, hoge);
}

Deze methode geeft het cijfer zes
VOID six()
{
digitalWrite (aPin, hoge);
digitalWrite (bPin, laag);
digitalWrite (cPin, hoge);
digitalWrite (dPin, hoge);
digitalWrite (ePin, hoge);
digitalWrite (fPin, hoge);
digitalWrite (gPin, hoge);
}

VOID seven()
{
digitalWrite (aPin, hoge);
digitalWrite (bPin, hoge);
digitalWrite (cPin, hoge);
digitalWrite (dPin, laag);
digitalWrite (ePin, laag);
digitalWrite (fPin, laag);
digitalWrite (gPin, laag);
}

Deze methode geeft het cijfer acht
VOID eight()
{
digitalWrite (aPin, hoge);
digitalWrite (bPin, hoge);
digitalWrite (cPin, hoge);
digitalWrite (dPin, hoge);
digitalWrite (ePin, hoge);
digitalWrite (fPin, hoge);
digitalWrite (gPin, hoge);
}

Deze methode geeft het cijfer negen
VOID nine()
{
digitalWrite (aPin, hoge);
digitalWrite (bPin, hoge);
digitalWrite (cPin, hoge);
digitalWrite (dPin, hoge);
digitalWrite (ePin, laag);
digitalWrite (fPin, hoge);
digitalWrite (gPin, hoge);
}

Deze methode geeft het cijfer nul
VOID zero()
{
digitalWrite (aPin, hoge);
digitalWrite (bPin, hoge);
digitalWrite (cPin, hoge);
digitalWrite (dPin, hoge);
digitalWrite (ePin, hoge);
digitalWrite (fPin, hoge);
digitalWrite (gPin, laag);
}

Gerelateerde Artikelen

Arduino module voor time-lapse fotografie

Arduino module voor time-lapse fotografie

er zijn al vele instructables op time-lapse fotografie.Een gemakkelijke manier te doen tijd lapse fotografie is aan te passen van een oude foto-apparaat door de draden op de hoofdknop voor het lassen.Hier is een instructable tonen hoe dit te doen:Kli
Time Lapse fotografie met RPI en Pi Camera

Time Lapse fotografie met RPI en Pi Camera

Hey guys, hoe bent u?. Dit weekend is bijzonder, zoals de nieuwe RPI 3 is uitgebracht met meer macht verwerkingsmogelijkheden en om te leren kennen het capaciteiten er niets goed is als een echte project op het testen.Ik ben een amateur fotograaf en
Time-Lapse fotografie

Time-Lapse fotografie

hacken van een oude digitale camera te nemen time-lapse foto reeksen is leuk en gemakkelijk. Helemaal u nood zit sommige fundamentele elektronica vaardigheden en een beetje geduld.Ik ben met behulp van een Arduino (Atmel168 ontwikkel bord) als de tim
Time-Lapse fotografie verwerking met behulp van GIMP

Time-Lapse fotografie verwerking met behulp van GIMP

na het nemen van enkele foto's van wolken buiten mijn huis, ik zag dat ze op bijna dezelfde richting. Bij het bekijken van hen in snelle opeenvolging, leek ze bijna een frame-voor-frame time-lapse animatie. Ik besloot om te zetten in een GIF-bestand
Pan & Zoom time lapse fotografie op de goedkope

Pan & Zoom time lapse fotografie op de goedkope

Time lapse fotografie is de kunst van de wereld op hoge snelheid te tonen. Ik heb interesse in het onlangs na het zien van een aantal fantastische tijd vervallen video's die pannen opgenomen, wat betekent dat de camera beweegt langzaam terwijl het ne
Ultieme gids voor Time Lapse fotografie

Ultieme gids voor Time Lapse fotografie

hier komt van een andere kwaliteit Rentube tutorial van Ritwika over time lapse fotografie. Dit is een tutorial van de fondsenwerving voor rennow.org, een openbare liefdadigheid te helpen kansarme ambachtslui rond de wereld. Als je deze video, overwe
Time lapse fotografie met een webcam

Time lapse fotografie met een webcam

In dit kleine ' ible ziek u tonen hoe je webcam gebruiken als een timelapse fotografie apparaat for... Nou bijna alles.Het programma ziek worden met behulp van de cam terwijl im weg, Flix, theres een manifestatie die er op de website heet.http://www.
Eenvoudige Camera Dolly voor Time-lapse fotografie

Eenvoudige Camera Dolly voor Time-lapse fotografie

Als een amateur fotograaf, ik geniet van fotograferen van het noorderlicht. Echter kunnen nog steeds beelden niet inhouden dat de dynamiek van de aurora. Om op te lossen dat probleem, besloten heb ik om een time-lapse video's van de lichten. Ze bleek
Crowd-sourced Time Lapse fotografie

Crowd-sourced Time Lapse fotografie

Dit project maakt gebruik van een goedkope teken en wat code om een menigte-sourced tijd vervallen afbeelding station die kan gaan overal een een teken kunt installeren. We (Nerds voor de natuur) bouwden dit voor gebruik op Mount Diablo State Park, t
Time-lapse met een camera, met behulp van Arduino

Time-lapse met een camera, met behulp van Arduino

Soms vind je jezelf in een situatie waar u wilt vangen situaties waar filmen zou volledig onpraktisch of zelfs onmogelijk. Voor die momenten is time-lapse fotografie een god-te sturen, totdat je je realiseert dat uw camera deed niet geleverd met die
Hoe te beeldhouwen een polymeer klei Fairy boomhut - time-lapse 4 X

Hoe te beeldhouwen een polymeer klei Fairy boomhut - time-lapse 4 X

Deze video is een hoe in time-lapse op 4 X de normale snelheid en is bedoeld voor degenen die enige ervaring hebben met beeldhouwen met polymeerklei en voor degenen die genieten van time-lapse. Een compleet instrument en aanbod lijst is op de video -
Lange termijn Time Lapse behuizing

Lange termijn Time Lapse behuizing

Ik heb een kans om het vangen van een bouwproject in ongeveer 8 maanden met behulp van time lapse fotografie. Ik heb een oude Canon G11 camera die ik gebruiken kan om vast te leggen van de tijdreeks komen te vervallen. De behuizing van dit prototype
Een time-lapse maken met een GoPro

Een time-lapse maken met een GoPro

Time-lapse fotografie is een uitstekende visuele goocheltruc. Wat neemt uren, dagen of weken te ontvouwen kan worden samengevat in seconden voor onze kijkplezier. Er zijn talloze manieren en middelen om het bereiken van een time-lapse maar waarschijn
De Always-Turning-Kaleidoscope-Time-Lapse-Photography

De Always-Turning-Kaleidoscope-Time-Lapse-Photography

dit is een grote, gemakkelijk project dat iedereen kan doen en leren van, omdat het gaat om de grondbeginselen van de drie grote dingen: fotografie, houtbewerking en elektronica. En wat is het, u vragen. Nou, zoals ze zeggen, een foto is meer dan dui