Tijd Lapse Camera Robot (3 / 3 stap)

Stap 3: Code


/ * Proberen 1 voor camera mount
gebruik 2 servo's,
2 buttens die 2 functies hebben voor vergroten/verkleinen van tijd
2 knoppen met enkele functies voor het aanpassen van de verticale hoeken
LCD tijd en hoek weergeven
*/

de code van de bibliotheek omvatten:
#include

#include
#include
#include "RTClib.h"
#include

Servo myservoV; maken van servo-object om te bepalen van een servo
Servo myservoH; maken van servo-object om te bepalen van een servo

initialiseren van de bibliotheek met de nummers van de pennen van de interface
LiquidCrystal lcd (7, 2, 0, 4, 1, 6);
#define ledRed 3 / / ingang pin voor led achtergrondverlichting
#define ledGreen 5 / / ingang pin voor led achtergrondverlichting

Definiëren van de knop pinnen
#define UpBtnbuttonPin A1 / / analog input pin te gebruiken als een digitale input
#define DnBtnbuttonPin A2 / / analog input pin te gebruiken als een digitale input
#define VerbuttonPin A3 / / analog input pin te gebruiken als een digitale input
#define DnVerbuttonPin A4 / / analog input pin te gebruiken als een digitale input
#define StartbuttonPin A4 / / analog input pin te gebruiken als een digitale input

#define trigger 12 //trigger van de camera lijkt autofocus
#define focus 9 / / cammera focus, houdt het wakker tussen afbeeldingen en richt zich

Teller tijdvariabelen
unsigned long buttonPushCounter = 0; teller voor het aantal knooppersen
int buttonPushDisplayHr = 0;
int buttonPushDisplayMin = 0;
int buttonPushCounterMin = 0;
UpBtn varables
int UpBtnbuttonState = 0; huidige toestand van de knop
int UpBtnlastButtonState = 0; vorige status van de knop
DnBtn varables
int DnBtnbuttonState = 0; huidige toestand van de knop
int DnBtnlastButtonState = 0; vorige status van de knop

Start knop variabelen
int StartbuttonPushCounter = 0; teller voor het aantal knooppersen
int StartbuttonState = 0; huidige toestand van de knop
int StartlastButtonState = 0; vorige status van de knop
unsigned long Starttime = 0;
int buttonPushCounterStop = 0;
int startVal = 0;

UpVer varables
int VerbuttonState = 0; huidige toestand van de knop
int VerlastButtonState = 0; vorige status van de knop
int VerbuttonPushCounter = 0;
int DispAngV = 0;
zweven DispAngVa = 0;
zweven AngFloat = 0;
zweven valV = 0;

Servo variabelen
int valH = 0; Servo positie 1 tot en met 180
zweven valV = 0; Servo positie 1 tot en met 180
lange del unsigned = 0; pauze tussen posities
int angV = 0; hoek voor verticale servo
//========================================================
VOID Setup {}
de LCD's aantal kolommen en rijen instellen:
LCD.begin(16,2);
Serial.begin(9600);

lcd.setCursor (0, 0);
LCD.Print("time"); weergave temperaturen op het LCD-scherm
lcd.setCursor (0, 1);
LCD.Print ("00:00 00");

Set-knop invoer pin
pinMode (UpBtnbuttonPin, INPUT);
pinMode (DnBtnbuttonPin, INPUT);
pinMode (StartbuttonPin, INPUT);

pinMode (ledRed, INPUT);
pinMode (ledGreen, INPUT);

digitalWrite (UpBtnbuttonPin, hoge);
digitalWrite (DnBtnbuttonPin, hoge);
digitalWrite (StartbuttonPin, hoge);

Start servo 's
myservoV.attach(11); de servo op pin 9 hecht aan de servo-object
myservoH.attach(10); de servo op pin 9 hecht aan de servo-object
nul servo's om te beginnen
myservoV.write(95);
myservoH.write(90);

StartbuttonPushCounter = 0;

spullen van de camera is gekoppeld
pinMode (trigger, uitvoer); de trger pincode instellen om te beginnen hij estafette
digitalWrite (trigger, laag); instellen van het doorsturen van de trigger aan van
pinMode (focus, uitvoer); de trger pincode instellen om te beginnen hij estafette
digitalWrite (focus, laag); instellen van het doorsturen van de trigger aan van
}

//========================================================================== LOOP

void loop {}

digitalWrite (ledGreen, 255);

controleren van de startknop---knop START

voor de volgende keer door de lus
StartlastButtonState = StartbuttonState;
Lees de drukknop invoer pin:
StartbuttonState = digitalRead(StartbuttonPin);
Vergelijk de buttonState om de vorige versie
Als (StartbuttonState! = StartlastButtonState) {}
Als de status is veranderd, de teller ophogen
//
Als (StartbuttonState == HIGH) {}
Als de huidige status hoog en de knop vervolgens is
wend van korting aan op:
Als (StartbuttonPushCounter < 2) {}
StartbuttonPushCounter ++;
StartTime = millis(); te ingewikkeld maar werkt beter

}
}
}

Lees de drukknop invoer pin:
UpBtnbuttonState = digitalRead(UpBtnbuttonPin);

Vergelijk de buttonState in de vorige staat---UP knop
Als (UpBtnbuttonState! = UpBtnlastButtonState) {}
Als de status is veranderd, de teller ophogen
Als (UpBtnbuttonState == HIGH) {}
Als (buttonPushCounter < = 40)
Als (startVal > 2)
Als (StartbuttonPushCounter! = 2) {}
buttonPushCounter = buttonPushCounter + 2;
}
}
}

Controleer knop---DOWN knop ingedrukt
voor de volgende keer door de lus
DnBtnlastButtonState = DnBtnbuttonState;
Lees de drukknop invoer pin:
DnBtnbuttonState = digitalRead(DnBtnbuttonPin);
Vergelijk de buttonState om de vorige versie
Als (DnBtnbuttonState! = DnBtnlastButtonState) {}
Als de status is veranderd, de teller ophogen
Als (DnBtnbuttonState == HIGH) {}
Als de huidige status hoog en de knop vervolgens is
wend van korting aan op:

Als (buttonPushCounter > = 1) {}
Als (startVal = 0)
Als (StartbuttonPushCounter! = 2) {}
buttonPushCounter = buttonPushCounter - 2;
}
}
}
}

BUTTENS VOOR VERTICALE HOEK---VER ANG KNOP
Lees de drukknop invoer pin:
VerbuttonState = digitalRead(VerbuttonPin);

Vergelijk de buttonState in de vorige staat---SERVO UP
Als (VerbuttonState! = VerlastButtonState) {}
Als de status is veranderd, de teller ophogen
Als (VerbuttonState == HIGH) {}
Als (buttonPushCounter < = 40)
Als (startVal > 2)
Als (VerbuttonPushCounter! = 4) {}
VerbuttonPushCounter = VerbuttonPushCounter + 1;
DispAngV = (VerbuttonPushCounter - 1) * 30;
lcd.setCursor (14, 1);
LCD.Print (DispAngV);
}
else {}
VerbuttonPushCounter = 1;
DispAngV = (VerbuttonPushCounter - 1) * 30;
lcd.setCursor (14, 1);
LCD.Print (DispAngV);
}
}
}

startknop beginnen bij vlue van 1------start bnt acties bevestigen
Als (StartbuttonPushCounter! = 2) {}
(StartbuttonPushCounter = StartbuttonPushCounter);
}

else {}
(StartbuttonPushCounter = 5)
berekenen van vertragingen voor horzontal servo lus
del = 200;
del = buttonPushCounter * 1500;
Bereken hoek per pix voor verticale servo
angV = 1; Start op 60 graden gaan op 0
Start servo lus
Servo();
startVal ++;
StartbuttonPushCounter = 2;

}

//---------------------------------------------------------

knopstatussen opslaan
UpBtnlastButtonState = UpBtnbuttonState;
DnBtnlastButtonState = DnBtnbuttonState;
StartlastButtonState = StartbuttonState;
VerlastButtonState = VerbuttonState;

weergeven van de tijd---TIJDWEERGAVE
buttonPushDisplayHr = (buttonPushCounter) / 4;

buttonPushCounterMin = buttonPushCounter - (buttonPushDisplayHr * 4);
buttonPushDisplayMin = buttonPushCounterMin * 15;

Bereken hoek voor verticale---

DispAngVa = VerbuttonPushCounter -1;
AngFloat = DispAngVa / 2;

truble schieten === problemen schieten

Serial.println(StartTime);

lcd.setCursor (13, 1);
LCD.Print (StartbuttonPushCounter);
lcd.setCursor (9, 1);
LCD.Print (Starttime);

--Ga naar servo na start btn---Ga naar servo
Als (StartbuttonPushCounter! = 1) {}
lcd.setCursor (0, 0);
LCD.Print ("uitgevoerd");
Servo();
}
else {}
Hoeveel minuten weergeven
lcd.setCursor (3, 1);
LCD.Print (buttonPushDisplayMin);

Hoeveel uren weergeven
Als (buttonPushDisplayHr < 10) {}
lcd.setCursor (1, 1);
LCD.Print (buttonPushDisplayHr);
lcd.setCursor (0, 1);
LCD.Print ("0");
}
else {}
lcd.setCursor (0, 1);
LCD.Print (buttonPushCounter);
}
Toon seperator
lcd.setCursor (2, 1);
LCD.Print (":");

Toon graven
lcd.setCursor (11, 0);
LCD.Print ("hoek");

}

}

einde van de lus === lus eindigt

Servo lus---SERVO lus

VOID servo() / / servo bewegingen
{
servo verplaatsen naar volgende positie
Als (valH > = 174) {}
lcd.setCursor (0, 1);
LCD.Print ("All DONE");}
else {}

Als (valH < 3) {}
valV = 90 - DispAngV;
}
valH = valH + 3;
valV = valV + AngFloat;

Val = kaart (val, 300, 0, 50, 179); schaal om het te gebruiken met de servo (waarde tussen 0 en 180)
myservoH.write(valH); stelt u de positie van de servo volgens de geschaalde waarde
myservoV.write(valV); stelt u de positie van de servo volgens de geschaalde waarde

camera trigger---CAMMERA STUFF
digitalWrite (focus, hoge);
vertraging (1000);
digitalWrite (focus, laag);
digitalWrite (trigger, hoge);
vertraging (1000);
digitalWrite (trigger, laag);

vertraging totdat het is tijd voor de volgende positie, met behulp van klok keer zou beter zijn
10 dels nodig omdat arduino is messing up van de grote aantallen zelfs met een unsinged long-variabele
delay(del);
lcd.setCursor (6, 1);
LCD.Print (valV);
}
}

Gerelateerde Artikelen

Tijd Lapse Rover V2.0 voor eMotimo TB3

Tijd Lapse Rover V2.0 voor eMotimo TB3

Een van mijn favoriete DIY projecten was het bouwen van een time lapse rover voor de eMotimo TB3. Op het moment was het uniek in het feit dat niemand anders had een, op zijn minst van wat ik op het internet vinden kon. Dus niet beperkt tot een vaste
Tijd Lapse Rover voor eMotimo TB3

Tijd Lapse Rover voor eMotimo TB3

Tijd lapse beelden wordt steeds zeer populair en beweging van de toe te voegen aan de clips toegevoegd belang aan de eindresultaten. Met behulp van een eMotimo TB3 als de controller, was ik oorspronkelijk beperkt tot een 6 voet railsysteem voor de 3-
Afneembare auto mount voor time lapse camera.

Afneembare auto mount voor time lapse camera.

Hier is een film die ik heb gemaakt met de time lapse camera die zichtbaar is in de link hierboven.http://www.YouTube.com/watch?v=AWh46mqROkQDit instructable is min of meer een voortzetting van mijn tijd vervallen camera project. Het eerste wat dat i
Tijd lapse add-on aan een Rollei digicam

Tijd lapse add-on aan een Rollei digicam

dit instructable ziet u hoe een time lapse module toevoegen aan een digitale camera van Rollei Compactline 52.Time-lapse betekent foto's zijn genomen op een bepaalde tijdsinterval. Het tijdsinterval is instelbaar over een breed bereik en het heeft ee
Tijd Lapse Batch Image manipulatie met behulp van Python

Tijd Lapse Batch Image manipulatie met behulp van Python

ik heb onlangs vond een koele Time Lapse app voor mijn telefoon, maar de bestanden moesten worden gedraaid en raakte een beetje te laten in een film. Ik schreef een Python-script om dat te doen, en ben die hier met u delen.Stap 1: Verzamel beelden ik
Lage begroting tijd vervallen camera met DigiSpark

Lage begroting tijd vervallen camera met DigiSpark

SLEUTELHANGER CAMERAEste proyecto tambien esta disponible nl Español haciendo clic aquiDeze diminute mini camera's werden gebouwd in meerdere formulieren zoals sleutelhangers, GOM pack, pen, sigarettenaansteker, enz. Allemaal in principe hebben een C
TIC! Één knop Time Lapse Camera Timer

TIC! Één knop Time Lapse Camera Timer

dit project is een timer één knop time-lapse camera in eerste instantie ontwikkeld voor mijn Canon 400D digitale SLR camera, maar het zou moeten werken met andere camera's.U kunt een externe switch kopen voor de Canon 400D, maar dat kost minstens $35
Draadloze camera robot

Draadloze camera robot

Hallo allemaalDeze robot kan communiceren met andere robotsDeze robot is gebruik volledig op vele manieren, stel dat uw kind is studie in zijn kamer zie je hem dat hij studeren of spelen Stel dat een gebouw waren viel en veel mensen wilt helpen deze
Tijd Lapse intervalmeter voor Canon camera's (geen programmering of grafische rekenmachine nodig)

Tijd Lapse intervalmeter voor Canon camera's (geen programmering of grafische rekenmachine nodig)

dit details hoe maak uw zeer eigen intervalmeter (tijdcontrole vervalt sluiterknop) voor een Canon SLR of een camera die kan worden gecontroleerd met een standaard 2.5mm plug. Het zal gelukkig geeft u een variabele tijdspanne van 1 seconde tot 1 uur.
Tijd Lapse voor Camera

Tijd Lapse voor Camera

Ik werd gevraagd om een tijd vervallen apparaat voor een camera van Sony die een IR-afstandsbediening heeft.Sorteren van de IR-codes geweest tijdrovend zijn als ik niet had gevonden deze uitstekende bibliotheek door Sebastian Setz.http://Sebastian.Se
Tijd Lapse met een Canon SX500-Camera IS

Tijd Lapse met een Canon SX500-Camera IS

Voor een paar jaar nu, ik ben dol op mijn Canon SX500 gegroeid-camera IS. Het is klein, lichtgewicht en vrij eenvoudig te gebruiken. Ik heb de laatste tijd echter al willen meer doen mee. Een van mijn favoriete video fascinaties is time lapse fotogra
Tijd lapse films

Tijd lapse films

een camera op de computer aansluiten en installeren van sommige gratis software voor het genereren van coole effecten uit scènes om je heen. Gewone evenementen geworden fascinerend als hun tijd wordt versneld. Bijvoorbeeld deze zonsopgang:Stap 1: De
Tijd Lapse intervalmeter voor spiegelreflexcamera's met 555 timer IC

Tijd Lapse intervalmeter voor spiegelreflexcamera's met 555 timer IC

dit instructable begon met mijn vorige camera hack camera hack om een remote shutter release te maken. Ik vond een 555 timer tutorial en realiseerde hoe groot het zou zijn om mijn foto's automatiseren en doe sommige time lapse fotografie. Ik ben niet
Weer bewijs tijd-tijdspanne Camera huisvesting

Weer bewijs tijd-tijdspanne Camera huisvesting

terwijl het nemen foto's van een onweer onlangs liep ik in het oude probleem van schieten van foto's en het omgaan met de weersomstandigheden. Meestal ik zou beide schieten door een raam of onder dekking tijdens regen maar dan heb ik de moeite van ee