Hur man gör Arduino-kontrollerade Intelligent Time-Lapse fotografering (3 / 4 steg)

Steg 3: Skriva koden



Här är min kod. Känn dig fri att mixtra med olika parametrar som passar din ansökan, och kommentera om du vill ha mig att förklara något.

Installera Arduino IDE från arduino.cc om du inte redan har den. Öppna upp en ny skiss och klistra in denna kod i. Sammanställa det, ladda upp den och testa den.

/*

Ljuskänsligt och justerbar dynamiska Time-Lapse fotografi

Detta program och krets är utformade för att styra fotografering i tidsintervaller
Det är användaren kontrollerbar och lyhörd för omgivande ljuset nivåer.
Belysning på Soluppgång och solnedgång foto skott kan ibland vara svårt
för att förutse, så istället för att hamna med flera hundra helt svart
bilder, ett fotomotstånd sinnen ljusnivåer och därmed slutar eller börjar
fotografin. En potentiometer gör att användaren kan ställa in väntetiden mellan
fotografier och en multi digit seven-segment display visar aktuellt
dröjsmål värde.

Denna krets är utformad att användas med en infraröd fjärrutlösare. Jag
för detta en Nikon D3100, men någon annan DSLR med en fjärrkontroll bör
fungera lika bra. I denna krets fungerar en LED för närvarande som ersättare för
fjärrutlösare, men anpassa den för slutaren är bara en fråga om förbi
knappen på fjärrkontrollen och styra det med Arduino. Eftersom det
svårt att avgöra när en IR-sändare är aktiverad,
sju segment display blinkar varje gång en bild tas att informera den
användare av dess framsteg.

Eftersom många time-lapse entusiaster är intresserade av att lägga ett dynamiska element
till deras skott ingår jag funktioner för en servo-kontrollerade rigg
som kan ge kameran att rotera eller panorera över en scen.

Krets:
* Sju-segmentet displayen styrs av stift 2-8 och 10-12. Displayen
fungerar med varje siffra som en grund och varje segment som positiva bidrag.
Till exempel vill visa ett segment A på siffran 3, skulle Arduino ange pin 2,
som kontrollerar segmentet A till hög och pin 12, som är grunden för siffra 3,
till låg.

* Den LED, eller fjärrutlösare, är ansluten till stift 13 och GND.

* Servo är ansluten till 5V och GND och tar emot en signal från stift 9.

* Den fotomotstånd används i en spänning-dividera krets i samband med en 10kΩ
motstånd, och det läses av pin A0.

* Potentiometern läses av pin A1

Tack:
Firecgun's Instructables post på "Arduino 4 siffrig 7 segment display"

Den 9 december, 2013
av Holden Leslie-Bole

Jag förklarar denna kod allmän egendom.

*/

#include < Servo.h > / / Include servo biblioteket
Servo cameraServo; Skapa ett servo objekt kallas cameraServo
CONST int potPin = A1; Ställa in analoga pin A1 att läsa potentiometern
CONST int photoresistorPin = A0; Ställa in analoga pin A0 att läsa fotomotstånd
int potValue = 0;
Initiera potValue, den variabel som lagrar värdet potentiometer, noll
int photoresistorValue = 0;
Initiera photoresistorValue, den variabel som lagrar värdet fotomotstånd, noll
int shutterDelay = 0; Denna variabel lagrar användar-matas in fördröjningen mellan bilder
lång lastPicTime = 0; Den tid som den sista bilden togs
lång lastServoTime = 0; Tiden som servo senast drivs
lång timeLapseDuration = 900000;
För servo kalibrering - den förväntade tiden för fotograferingen (i millisekunder)
int servoPosition = 0; Servo är position i grader

Detta avsnitt tilldelar pin-koder till olika objekt på displayen
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. stift 13 kommer att kontrollera slutaren
int num; Numret som angetts av potentiometern
int dig2Value = 0;
int dig3Value = 0;
int brightnessDelay = 3; En försening av godtycklig kvantitet som styr bildskärmens ljusstyrka

Kör denna metod en gång när Arduino startar
void setup()
{
cameraServo.attach(9); Tilldela servo till pin 9
cameraServo.write(0); Initiera servo till 0
Ställa in displayen och slutartid stiften att produktionen
pinMode (aPin, OUTPUT);
pinMode (bPin, produktionen);
pinMode (cPin, produktionen);
pinMode (dPin, produktionen);
pinMode (ePin, produktionen);
pinMode (fPin, produktionen);
pinMode (gPin, produktionen);
pinMode (GND1, OUTPUT);
pinMode (GND2, OUTPUT);
pinMode (GND3, OUTPUT);
pinMode (shutterPin, produktionen);
Serial.BEGIN(9600); Detta är en användbar bit kod att hålla i för felsökning och testning
}

Kör denna metod kontinuerligt
void loop()
{
osignerade långa currentTime = millis(); Spåra hur länge Arduino har varit runnign
potValue = analogRead(potPin); Läs potentiometern och lagra den i potValue
NUM = karta (potValue, 0, 1023, 99, 0); Justera utdataområdet för att passa förseningen
shutterDelay = num * 1000;
Eftersom Arduinos naturliga time mätning är i millisekunder, konverterar detta num
i en fördröjning mellan bilder i millisekunder
dig2Value = num / 10; Använda heltal trunkering för att dig2Value TEN siffra
dig3Value = num - (dig2Value * 10); Aritmetiska som levererar de siffror

Ange skälen till hög
digitalWrite (GND1, hög);
digitalWrite (GND2, hög);
digitalWrite (GND3, hög);

Visa en d för försening på siffran en
digitalWrite (GND1, låg); Slå på den
d(); Se metod void d()
Delay(brightnessDelay); Vänta 3 ms så att du kan se det
digitalWrite (GND1, hög); Stänga av

digitalWrite (GND2, låg);
Number(dig2Value); Se number(int i) metod
Delay(brightnessDelay);
digitalWrite (GND2, hög);

digitalWrite (GND3, låg);
Number(dig3Value); Se number(int i) metod
Delay(brightnessDelay);
digitalWrite (GND3, hög);

servoPosition = cameraServo.read();
ServoPosition vara vad är för närvarande är i grader

photoresistorValue = analogRead(photoresistorPin); Läs fotomotstånd
IF(photoresistorValue > 100)
Prova olika värden för detta. Jag valde 100 bara baserat på experiment.
{
om (currentTime - lastPicTime > shutterDelay)
Bedöma om slutaren dröjsmål har förflutit sedan den senaste skärmdumpen
{
Ta bilden
digitalWrite (shutterPin, hög);
lastPicTime = currentTime;
Delay(200);
digitalWrite (shutterPin, låg);
}

Bedöma aktivitetens servo
om (currentTime - lastServoTime > timeLapseDuration/180 & & servoPosition < 180)
{
servoPosition ++;
cameraServo.write(servoPosition); Flytta servo
lastServoTime = currentTime;
}
}
}

Denna metod använder switch/fall notation för att anropa metoderna siffrorna i svar till ett heltal ingång
void number(int i) {
Switch(i) {
fall 1: one();
bryta;
fall 2: two();
bryta;
fall 3: three();
bryta;
fall 4: four();
bryta;
fall 5: five();
bryta;
mål 6: six();
bryta;
fall 7: seven();
bryta;
mål 8: eight();
bryta;
mål 9: nine();
bryta;
standard: zero();
bryta;
}
}

Denna metod visar d för försening
void d()
{
digitalWrite (aPin, låg);
digitalWrite (bPin, hög);
digitalWrite (cPin, hög);
digitalWrite (dPin, hög);
digitalWrite (ePin, hög);
digitalWrite (fPin, låg);
digitalWrite (gPin, hög);
}

Denna metod visas siffran en
void one()
{
digitalWrite (aPin, låg);
digitalWrite (bPin, hög);
digitalWrite (cPin, hög);
digitalWrite (dPin, låg);
digitalWrite (ePin, låg);
digitalWrite (fPin, låg);
digitalWrite (gPin, låg);
}

Denna metod visas siffran två
void two()
{
digitalWrite (aPin, hög);
digitalWrite (bPin, hög);
digitalWrite (cPin, låg);
digitalWrite (dPin, hög);
digitalWrite (ePin, hög);
digitalWrite (fPin, låg);
digitalWrite (gPin, hög);
}

Denna metod visas siffran tre
void three()
{
digitalWrite (aPin, hög);
digitalWrite (bPin, hög);
digitalWrite (cPin, hög);
digitalWrite (dPin, hög);
digitalWrite (ePin, låg);
digitalWrite (fPin, låg);
digitalWrite (gPin, hög);
}

Denna metod visas siffran fyra
void four()
{
digitalWrite (aPin, låg);
digitalWrite (bPin, hög);
digitalWrite (cPin, hög);
digitalWrite (dPin, låg);
digitalWrite (ePin, låg);
digitalWrite (fPin, hög);
digitalWrite (gPin, hög);
}

Denna metod visas siffran fem
void five()
{
digitalWrite (aPin, hög);
digitalWrite (bPin, låg);
digitalWrite (cPin, hög);
digitalWrite (dPin, hög);
digitalWrite (ePin, låg);
digitalWrite (fPin, hög);
digitalWrite (gPin, hög);
}

Denna metod visas siffran sex
void six()
{
digitalWrite (aPin, hög);
digitalWrite (bPin, låg);
digitalWrite (cPin, hög);
digitalWrite (dPin, hög);
digitalWrite (ePin, hög);
digitalWrite (fPin, hög);
digitalWrite (gPin, hög);
}

void seven()
{
digitalWrite (aPin, hög);
digitalWrite (bPin, hög);
digitalWrite (cPin, hög);
digitalWrite (dPin, låg);
digitalWrite (ePin, låg);
digitalWrite (fPin, låg);
digitalWrite (gPin, låg);
}

Denna metod visas siffran åtta
void eight()
{
digitalWrite (aPin, hög);
digitalWrite (bPin, hög);
digitalWrite (cPin, hög);
digitalWrite (dPin, hög);
digitalWrite (ePin, hög);
digitalWrite (fPin, hög);
digitalWrite (gPin, hög);
}

Denna metod visas siffran nio
void nine()
{
digitalWrite (aPin, hög);
digitalWrite (bPin, hög);
digitalWrite (cPin, hög);
digitalWrite (dPin, hög);
digitalWrite (ePin, låg);
digitalWrite (fPin, hög);
digitalWrite (gPin, hög);
}

Denna metod visas siffran noll
void zero()
{
digitalWrite (aPin, hög);
digitalWrite (bPin, hög);
digitalWrite (cPin, hög);
digitalWrite (dPin, hög);
digitalWrite (ePin, hög);
digitalWrite (fPin, hög);
digitalWrite (gPin, låg);
}

Se Steg
Relaterade Ämnen

Hur man gör en långsiktig time-lapse

ett enda, standard batteri i en DSLR-kamera kommer att räcka för att göra de flesta tid förfaller- men vad händer om du vill fånga en tidsinställd för en vecka, en månad eller en hel säsong medan att vara långt från någon källa till makt?Tja, för en...

Hur man gör Arduino konstant ladda

hur man gör arduino konstant nuvarande belastningSteg 1: Förbered din laptop och arduino Gå till arduino.cc och installera Arduino IDE jag rekommenderar dig att ladda ner version 1.6.5. .Steg 2: Sätt ihop Källa av mosfet går till marken. Rinna till 1...

Hur man skapar en Arduino kompatibel Bluetooth 4.0 modul

UPPDATERING: Låter göra robotar, mitt hem digital hackerspace, köptes av RobotShop. Jag vill inte gå in, men de nya ägarna förbjudit mig själv och de flesta veteran medlemmarna. Som sagt, de flesta av länkarna där kommer att brytas. Lyckligtvis kunde...

Hur man programmerar en Arduino Uno till Blink

I detta instructable, jag kommer att lära dig hur man programmerar och Arduino Uno blinka. Detta projekt är inte mycket avancerade och är bra för nybörjare.Steg 1: komponenter-Arduino Uno-Lysdioden lyser (valfritt)-Motstånd (behöver inte vara samma s...

Hur man gör Bluetooth kontrollerad lampa

Hej stötarna! Jag är tillbaka med en annan cool projekt från vår kanal "Att vara ingenjörer". Om du vill göra en enkel Bluetooth kontrollerad lampa men vet inte hur man startar, har så du kommit till rätt ställe. Låt oss gå vidare med det!Steg 1...

Hur man bygger en Arduino Uno på en skärbräda

Om du är som och mig och njuta av elektroniska byggprojekten då du kanske har arbetat med Arduino Uno. Arduino uno är den mest populära micro controller i serien och har en stor samling bibliotek vilket göra att arbeta med det mycket lätt. Så det sku...

Hur man styr en Arduino styrda robotarm av Dobot teamet

Vi säger alltid, Dobot är en hög precision, flera control desktop robotarm. I senaste instructables, har vi visat dig hög precision och funktionen desktop genom att bygga en laser cut och lödning Dobot arm. Detta instructable, vi kommer att försöka v...

Hur man överför Arduino sensordata till Blynk Server

Jag vet Arduino plattform för Sakernas Internet. Nyligen kommer WizArduino modul att tillkännages genom WIZnet.Så genomfört jag en firmware för Arduino av Ethernet SW ändring eftersom jag kan hantera en ursprungskod enkelt.Du kan veta status för utru...

Hur man bygger en Internet kontrollerad Mars Rover

detta Instructable kommer att förklara allt du behöver veta för att bygga en internet kontrolleras alla terräng robot. Här råkar modelleras på Mars nyfikenhet rover. Denna robot är kontrollerbar från valfri internet-ansluten enhet så att du kan kontr...

Hur man använder Arduino Mega 2560 som Arduino isp

när jag bygger min Atmega328p-pu på ett kretskort för min moped jag behövde bootload det.Eftersom jag har ingen extern behövde programmering utrustning jag använda min Arduino Mega 2560 som ArduinoISP ( http://arduino.cc/en/Tutorial/ArduinoISP ).Du b...

Hur man gör Arduino polisen ljus

krävs objekt:Arduino (helst)Dator till program Arduino8 lysdioder (helst högintensiv blå och röd)22AWG tråd för kopplingsdäck7 100 ohm motstånd (stift 13 inte behöver ett motstånd på Duemilanove)(valfritt) Skärbräda att göra anslutningar lättareLampo...

Hur man skapar en Arduino fjärrutlösare

i denna tutorial får du lära dig att skapa och kontrollera en Arduino fjärrutlösare för din favorit kamera.Denna tutorial ska show dig hur man programmerar arduino att fokusera kameran eller ta bilder automatiskt.Vad du behöver:En kamera: FZ200 till...

Hur man bygger en Arduino Powered Chess spela Robot

att döma av det stora antalet schack relaterade Instructables, jag tycker det är säkert att säga gemenskapen åtnjuter spelet. Det kan dock vara svårt, att hitta någon som spelar på samma nivå som du gör. Att lösa detta dilemma, och att öka min spela...

Hur man gör en realistisk ser månen fotografi i photoshop

i denna tutorial jag visar dig hur man gör en mycket övertygande photoshop-bild jag fick även ett fåtal människor att tro det var verkligt!Steg 1: Ritning månen! Gör nytt lager. Det månen och välj Elliptical Marquee Tool. Sedan göra urval av cirklaom...

Lär dig Time-lapse fotografering i nr tid platt

i detta Instructable kommer jag visa dig hur du gör din egen time-lapse video.Jag kommer också dela användbara tips som jag har lärt mig av erfarenheter.Här är en video av några av de tiden-förfaller som min vän och jag gjorde:Per Wikipedia gör fotog...

Time Lapse fotografering med RPI och Pi kamera

Hej killar, hur är du?. I helgen är speciell eftersom den nya RPI 3 släpps med mer makt processkapacitet och för att få veta det förmågor det är inget bra som att testa ett verkligt projekt på den.Jag är en amatörfotograf och för mig, ta bilder av na...

Time lapse fotografering med en webbkamera

i denna lilla "kompatibel Ill Visa dig hur du använder din webbkamera som en timelapse fotografering enhet för... väl precis vad som helst.Programmet Ill att använda för att styra cam samtidigt som im bort, kallas Flix, theres en demo ute på hemsidan...

Hur man styr en arduino bil via Bluetooth (för nybörjare)

Alla vet vi att Arduino är en utmärkt prototyping plattform, främst eftersom den använder ett eget programmeringsspråk och det finns en hel del extra otroliga komponenter som ger oss stora upplevelser.Vi kan integrera Arduino med differents sköldar e...

Hur man programmerar en Arduino accelerometer för motion kontroller

Rörelsestyrning är alltid något som har nått sin kulmen mitt intresse. Detta är särskilt så nyligen när jag upptäckte hur enkelt Arduino gör dem till programmet. När uppsättningen upp ordentligt denna kan lätt bli en awesome dörr som öppnas upp så må...