Time Lapse kamera Robot (3 / 3 steg)
Steg 3: kod
/ * Försök 1 av kamerafästet
använda 2 servon,
2 buttens som har 2 funktioner för att öka/minska tid
2 knappar med gemensamma funktioner för att justera de vertikala vinklarna
LCD att Visa tid och vinkel
*/
inkludera bibliotek-koden:
#include
#include
#include
#include "RTClib.h"
#include
Servo myservoV; skapa objekt för att styra en servo servo
Servo myservoH; skapa objekt för att styra en servo servo
initiera bibliotek med numrerar av gränssnittet stiften
LiquidCrystal lcd (7, 2, 0, 4, 1, 6);
#define ledRed 3 / / insignal stift för led bakgrundsbelysning
#define ledGreen 5 / / insignal stift för led bakgrundsbelysning
Definiera knapp stiften
#define UpBtnbuttonPin A1 / / analog ingångsstift att använda som en digital ingång
#define DnBtnbuttonPin A2 / / analog ingångsstift att använda som en digital ingång
#define VerbuttonPin A3 / / analog ingångsstift att använda som en digital ingång
#define DnVerbuttonPin A4 / / analog ingångsstift att använda som en digital ingång
#define StartbuttonPin A4 / / analog ingångsstift att använda som en digital ingång
#define trigger 12 //trigger av kamera verkar autofokus
#define fokus 9 / / cammera fokus, håller den vaken mellan bilderna och fokuserar
Tid Counter variabler
osignerade långa buttonPushCounter = 0; räknaren för antal knapptryckningar
int buttonPushDisplayHr = 0;
int buttonPushDisplayMin = 0;
int buttonPushCounterMin = 0;
UpBtn varables
int UpBtnbuttonState = 0; aktuell status för knappen
int UpBtnlastButtonState = 0; tidigare tillstånd av knappen
DnBtn varables
int DnBtnbuttonState = 0; aktuell status för knappen
int DnBtnlastButtonState = 0; tidigare tillstånd av knappen
Start knappen variabler
int StartbuttonPushCounter = 0; räknaren för antal knapptryckningar
int StartbuttonState = 0; aktuell status för knappen
int StartlastButtonState = 0; tidigare tillstånd av knappen
osignerade långa Starttime = 0;
int buttonPushCounterStop = 0;
int startVal = 0;
UpVer varables
int VerbuttonState = 0; aktuell status för knappen
int VerlastButtonState = 0; tidigare tillstånd av knappen
int VerbuttonPushCounter = 0;
int DispAngV = 0;
flyta DispAngVa = 0;
flyta AngFloat = 0;
flyta med = 0;
servo variabler
int valH = 0; servo position 1 180
flyta med = 0; servo position 1 180
osignerade långa del = 0; paus mellan positioner
int angV = 0; vinkel för vertikala servo
//========================================================
void setup() {
Ange den LCD antal kolumner och rader:
LCD.BEGIN(16,2);
Serial.BEGIN(9600);
lcd.setCursor (0, 0);
LCD.Print("Time"); Visa temp på lcd
lcd.setCursor (0, 1);
LCD.Print ("00:00 00");
SET-knappen ingångsstift
pinMode (UpBtnbuttonPin, indata);
pinMode (DnBtnbuttonPin, indata);
pinMode (StartbuttonPin, indata);
pinMode (ledRed, ingång);
pinMode (ledGreen, ingång);
digitalWrite (UpBtnbuttonPin, hög);
digitalWrite (DnBtnbuttonPin, hög);
digitalWrite (StartbuttonPin, hög);
Start servon
myservoV.attach(11); tillmäter objektet servo servo på pin 9
myservoH.attach(10); tillmäter objektet servo servo på pin 9
noll servon att starta
myservoV.write(95);
myservoH.write(90);
StartbuttonPushCounter = 0;
kamera fäst grejer
pinMode (trigger, OUTPUT); Ange trger stiftet att starta han relay
digitalWrite (avtryckaren, låg). ställa in avtryckaren reläet till av
pinMode (fokus, OUTPUT); Ange trger stiftet att starta han relay
digitalWrite (fokus, låg); ställa in avtryckaren reläet till av
}
//========================================================================== LOOP
void loop() {
digitalWrite (ledGreen, 255);
Kolla startknappen---START-knappen
för nästa gång genom öglan
StartlastButtonState = StartbuttonState;
Läs det tryckknapp ingångsstiftet:
StartbuttonState = digitalRead(StartbuttonPin);
Jämför buttonState till sitt tidigare tillstånd
om (StartbuttonState! = StartlastButtonState) {
om staten har förändrats, öka räknaren
//
om (StartbuttonState == hög) {
om det aktuella läget är hög då knappen
wend från av till på:
om (StartbuttonPushCounter < 2) {
StartbuttonPushCounter ++;
StartTime = millis(); för komplicerat men fungerar bättre
}
}
}
Läs det tryckknapp ingångsstiftet:
UpBtnbuttonState = digitalRead(UpBtnbuttonPin);
Jämför buttonState till sitt tidigare tillstånd---upp knappen
om (UpBtnbuttonState! = UpBtnlastButtonState) {
om staten har förändrats, öka räknaren
om (UpBtnbuttonState == hög) {
om (buttonPushCounter < = 40)
om (startVal > 2)
om (StartbuttonPushCounter! = 2) {
buttonPushCounter = buttonPushCounter + 2.
}
}
}
Kolla ner knappen---ner knappen
för nästa gång genom öglan
DnBtnlastButtonState = DnBtnbuttonState;
Läs det tryckknapp ingångsstiftet:
DnBtnbuttonState = digitalRead(DnBtnbuttonPin);
Jämför buttonState till sitt tidigare tillstånd