Time Lapse caméra Robot (3 / 3 étapes)

Étape 3: Code

/ * Essayez 1 de monture de la caméra
utiliser 2 servos,
2 Butts disposant de 2 fonctions pour augmentation/réduction de temps
2 boutons avec des fonctions simples pour ajuster les angles verticaux
Écran LCD pour afficher et l’angle
*/

inclure le code de bibliothèque :
#include

#include
#include
#include « RTClib.h »
#include

Servo myservoV ; Créez l’objet servo pour contrôler un servo
Servo myservoH ; Créez l’objet servo pour contrôler un servo

initialiser la bibliothèque avec les numéros des broches interface
Innovente lcd (7, 2, 0, 4, 1, 6) ;
#define ledRed 3 / / entrée de broche pour le rétro-éclairage led
#define ledGreen 5 / / entrée de broche pour le rétro-éclairage led

Définir les broches de bouton
#define UpBtnbuttonPin A1 / / analogique pin d’entrée à utiliser comme une entrée numérique
#define DnBtnbuttonPin A2 / / analogique pin d’entrée à utiliser comme une entrée numérique
#define VerbuttonPin A3 / / analogique pin d’entrée à utiliser comme une entrée numérique
#define DnVerbuttonPin A4 / / analogique pin d’entrée à utiliser comme une entrée numérique
#define StartbuttonPin A4 / / analogique pin d’entrée à utiliser comme une entrée numérique

#define déclencheur 12 //trigger de caméra semble de mise au point automatique
#define focus 9 / / cammera mise au point, il empêche de dormir entre les images et met l’accent

Variables de compteur de temps
unsigned long buttonPushCounter = 0 ; compteur pour le nombre de touches
int buttonPushDisplayHr = 0 ;
int buttonPushDisplayMin = 0 ;
int buttonPushCounterMin = 0 ;
UpBtn varables
int UpBtnbuttonState = 0 ; état actuel de la touche
int UpBtnlastButtonState = 0 ; état antérieur du bouton
DnBtn varables
int DnBtnbuttonState = 0 ; état actuel de la touche
int DnBtnlastButtonState = 0 ; état antérieur du bouton

variables de bouton de démarrage
int StartbuttonPushCounter = 0 ; compteur pour le nombre de touches
int StartbuttonState = 0 ; état actuel de la touche
int StartlastButtonState = 0 ; état antérieur du bouton
unsigned long Starttime = 0 ;
int buttonPushCounterStop = 0 ;
int startVal = 0 ;

UpVer varables
int VerbuttonState = 0 ; état actuel de la touche
int VerlastButtonState = 0 ; état antérieur du bouton
int VerbuttonPushCounter = 0 ;
int DispAngV = 0 ;
float DispAngVa = 0 ;
float AngFloat = 0 ;
flotteur valV = 0 ;

variables de servo
valH int = 0 ; position du servo 1 à 180
flotteur valV = 0 ; position du servo 1 à 180
unsigned long del = 0 ; faire une pause entre les positions
angV int = 0 ; angle vertical servo
//========================================================
void setup() {}
mis en place nombre de l’écran LCD de colonnes et de lignes :
LCD.Begin(16,2) ;
Serial.Begin(9600) ;

lcd.setCursor (0, 0) ;
LCD.Print("Time") ; temp d’affichage sur l’écran lcd
lcd.setCursor (0, 1) ;
LCD.Print ("00:00 00") ;

Broche d’entrée bouton Set
pinMode (entrée, UpBtnbuttonPin) ;
pinMode (entrée, DnBtnbuttonPin) ;
pinMode (entrée, StartbuttonPin) ;

pinMode (ledRed, entrée) ;
pinMode (ledGreen, entrée) ;

digitalWrite (UpBtnbuttonPin, élevé) ;
digitalWrite (DnBtnbuttonPin, élevé) ;
digitalWrite (StartbuttonPin, élevé) ;

Début servos
myservoV.attach(11) ; attache le servo sur la broche 9 à l’objet de servo
myservoH.attach(10) ; attache le servo sur la broche 9 à l’objet de servo
zéro servos pour commencer
myservoV.write(95) ;
myservoH.write(90) ;

StartbuttonPushCounter = 0 ;

trucs de caméra attachée
pinMode (déclencheur, sortie) ; définir la broche trger pour commencer il a relais
digitalWrite (détente, faible) ; le relais de déclenchement pour de la valeur
pinMode (focus, sortie) ; définir la broche trger pour commencer il a relais
digitalWrite (focus, faible) ; le relais de déclenchement pour de la valeur
}

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

void loop() {}

digitalWrite (ledGreen, 255) ;

vérifier le bouton Démarrer---bouton Démarrer

pour la prochaine fois dans la boucle
StartlastButtonState = StartbuttonState ;
lire la broche d’entrée bouton poussoir :
StartbuttonState = digitalRead(StartbuttonPin) ;
comparer le buttonState à son état antérieur
Si (StartbuttonState! = StartlastButtonState) {}
Si l’État a changé, incrémenter le compteur
//
Si (StartbuttonState == HIGH) {}
Si l’état actuel est haut puis sur le bouton
Wend d’off à on :
Si (StartbuttonPushCounter < 2) {}
StartbuttonPushCounter ++ ;
StartTime = millis() ; compliqué mais fonctionne mieux

}
}
}

lire la broche d’entrée bouton poussoir :
UpBtnbuttonState = digitalRead(UpBtnbuttonPin) ;

comparer le buttonState à son état précédent---touche UP
Si (UpBtnbuttonState! = UpBtnlastButtonState) {}
Si l’État a changé, incrémenter le compteur
Si (UpBtnbuttonState == HIGH) {}
Si (buttonPushCounter < = 40)
Si (startVal > 2)
Si (StartbuttonPushCounter! = 2) {}
buttonPushCounter = buttonPushCounter + 2 ;
}
}
}

vérifier le bouton---bouton vers le bas
pour la prochaine fois dans la boucle
DnBtnlastButtonState = DnBtnbuttonState ;
lire la broche d’entrée bouton poussoir :
DnBtnbuttonState = digitalRead(DnBtnbuttonPin) ;
comparer le buttonState à son état antérieur
Si (DnBtnbuttonState! = DnBtnlastButtonState) {}
Si l’État a changé, incrémenter le compteur
Si (DnBtnbuttonState == HIGH) {}
Si l’état actuel est haut puis sur le bouton
Wend d’off à on :

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

BUTTS POUR ANGLE VERTICAL---VER ANG BOUTON
lire la broche d’entrée bouton poussoir :
VerbuttonState = digitalRead(VerbuttonPin) ;

comparer le buttonState à son état précédent---SERVO vers le haut
Si (VerbuttonState! = VerlastButtonState) {}
Si l’État a changé, incrémenter le compteur
Si (VerbuttonState == HIGH) {}
Si (buttonPushCounter < = 40)
Si (startVal > 2)
Si (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) ;
}
}
}

Difficulté à démarrer à partir de vlue de 1------début bnt actions
Si (StartbuttonPushCounter! = 2) {}
(StartbuttonPushCounter = StartbuttonPushCounter) ;
}

else {}
(StartbuttonPushCounter = 5)
calculer les délais pour boucle horzontal
del = 200 ;
del = buttonPushCounter * 1500 ;
calculer l’angle par pix pour servo vertical
angV = 1 ; départ à 60 degrés aller à 0
commencer à boucle
servo() ;
startVal ++ ;
StartbuttonPushCounter = 2 ;

}

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

enregistrer les États du bouton
UpBtnlastButtonState = UpBtnbuttonState ;
DnBtnlastButtonState = DnBtnbuttonState ;
StartlastButtonState = StartbuttonState ;
VerlastButtonState = VerbuttonState ;

afficher l’heure---affichage de l’heure
buttonPushDisplayHr = (buttonPushCounter) / 4 ;

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

calculer l’angle vertical---

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

truble shoot === pousse mal

Serial.println(StartTime) ;

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

--aller à servo après démarrage btn---aller à servo
Si (StartbuttonPushCounter! = 1) {}
lcd.setCursor (0, 0) ;
LCD.Print ("RUNNING") ;
servo() ;
}
else {}
Montrer combien de minutes
lcd.setCursor (3, 1) ;
LCD.Print (buttonPushDisplayMin) ;

Afficher le nombre d’heures
Si (buttonPushDisplayHr < 10) {}
lcd.setCursor (1, 1) ;
LCD.Print (buttonPushDisplayHr) ;
lcd.setCursor (0, 1) ;
LCD.Print ("0") ;
}
else {}
lcd.setCursor (0, 1) ;
LCD.Print (buttonPushCounter) ;
}
Séparateur de spectacle
lcd.setCursor (2, 1) ;
LCD.Print (":") ;

montrer les chefs d’accusation
lcd.setCursor (11, 0) ;
LCD.Print (« ANGLE ») ;

}

}

fin de boucle === boucle se termine

BOUCLE boucle---

void servo() / / mouvements du servo
{
déplacer le servo à la position suivante
Si (valH > = 174) {}
lcd.setCursor (0, 1) ;
LCD.Print ("tout fait");}
else {}

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

Val = carte (val, 50, 300, 0, 179) ; redimensionnez-la pour l’utiliser avec le servo (valeur comprise entre 0 et 180)
myservoH.write(valH) ; définit la position du servo selon la valeur à l’échelle
myservoV.write(valV) ; définit la position du servo selon la valeur à l’échelle

déclencheur de l’appareil photo---CAMMERA STUFF
digitalWrite (focus, HIGH) ;
retarder (1000) ;
digitalWrite (focus, faible) ;
digitalWrite (détente, haute) ;
retarder (1000) ;
digitalWrite (détente, faible) ;

délai jusqu'à ce qu’il est temps pour la position suivante, en utilisant des temps de l’horloge serait mieux
besoin de 10 dels car arduino est gâcher le grand nombre même avec une variable long unsinged
Delay(del) ;
lcd.setCursor (6, 1) ;
LCD.Print (valV) ;
}
}

Articles Liés

Time-lapse Pan & Tilt Robot

Time-lapse Pan & Tilt Robot

Hey tout le monde ! Je suis de retour avec certains plus Lego Robotics. Ce Robot Lego Mindstorms peut automatiquement pan et tilt un iPhone en très petits incréments pour capturer étonnant moment-est caduque. J'ai eu l'idée pour cela après avoir vu l
TIC ! Un seul bouton Time Lapse caméra Timer

TIC ! Un seul bouton Time Lapse caméra Timer

ce projet est une minuterie d'un seul bouton caméra Time-lapse initialement développé pour mon Canon 400D reflex numérique, mais il devrait fonctionner avec d'autres appareils.Vous pouvez acheter un commutateur à distance pour Canon 400D, mais qui co
Time-lapse Photography

Time-lapse Photography

Hacking un vieil appareil de photo numérique pour prendre des séquences d'images de Time-lapse est facile et amusant. Tout ce dont vous avez besoin est certaines compétences électronique de base et un peu de patience.J'utilise un Arduino (Conseil de
Time Lapse Batch Image Manipulation à l’aide de Python

Time Lapse Batch Image Manipulation à l’aide de Python

j'ai trouvé récemment un cool Time Lapse app pour mon téléphone, mais les fichiers nécessaires pour être tourné et a touché un peu à les transformer en un film. J'ai écrit un script Python pour ce faire et qui partage avec vous ici.Étape 1: Collecte
Time Lapse vidéo pour des projets d’impression 3D

Time Lapse vidéo pour des projets d’impression 3D

Time lapse vidéo est un moyen génial pour montrer votre projet d'impression 3D et est excellent pour le haut des pages vues sur YouTube, médias sociaux, votre blog, etc..Toutefois, le laps de temps peut être très difficile, surtout pour des tirages q
Time Lapse avec un Canon SX500-IS caméra

Time Lapse avec un Canon SX500-IS caméra

Depuis quelques années maintenant, j'ai grandi friand de mon Canon SX500-est l'appareil photo. Il est petit, léger et assez simple à utiliser. J'ai dernièrement été cependant, vouloir faire plus avec elle. Un de mes préférées fascinations vidéo est p
Arroseuse Timer Time Lapse panoramique dispositif pour ou petite caméra GoPro

Arroseuse Timer Time Lapse panoramique dispositif pour ou petite caméra GoPro

si vous êtes dans la photographie, time-lapse ou des caméras GoPro, alors vous avez vu beaucoup de hacks panoramiques axée sur le sablier.  Aussi flottant autour les interwebs, mais pas aussi bien en évidence, sont des dispositifs similaires - mais e
Créer Time Lapse Video avec pcDuino3 USB Camera

Créer Time Lapse Video avec pcDuino3 USB Camera

Temps s'envole. Sa chute déjà. Nous aimerions créer un time lapse vidéo enregistrant les changements de saison lorsque l'arbre feuilles sont encore vertes pour les premières neiges du Colorado. Vidéo Time-lapse consiste en une série de photos qui son
Rapide et facile Electronic Time Lapse

Rapide et facile Electronic Time Lapse

c'est un peu court hack pour mon point et un appareil photo shoot. Je vais démonter mon appareil photo, de puiser dans l'obturateur/mise au point passe et puis leur fils jusqu'à un circuit minuterie réglable.Si vous avez vu mes dernières instructable
Time Lapse Rover V2.0 pour eMotimo TB3

Time Lapse Rover V2.0 pour eMotimo TB3

Un de mes projets DIY préférés construisait un rover de laps de temps pour l'eMotimo TB3. À l'époque, il était unique dans le fait que personne d'autre n'avait un, au moins de ce que j'ai pu trouver sur internet. Au lieu d'être limité à une longueur
Actobotics Time Lapse canal Slider mise à niveau

Actobotics Time Lapse canal Slider mise à niveau

Le Actobotics canal Slider Kit est une excellente façon d'obtenir de la motion pour time-lapse ou vidéo avec une petite caméra tels qu'une une GoPro. Depuis que je fais photographie laps de temps beaucoup plus que la production vidéo, j'ai voulu mett
Création d’un Time-lapse avec une GoPro

Création d’un Time-lapse avec une GoPro

Photographie en accéléré est un excellent tour de magie visuel. Ce qui prend des heures, des jours ou des semaines à se dérouler peut être condensée en secondes pour notre plus grand plaisir. Il y a d'innombrables moyens pour réaliser un Time-lapse,
LEGO Time Lapse Dolly

LEGO Time Lapse Dolly

J'ai voulu créer dolly Time-lapse pour mon appareil photo. Je ne voulais pas de rouler uniquement sur les pistes. Ainsi, le camion peut voyager, sur le terrain, sur un banc dans le parc, porapetu windows, etc...Etape 1: Construction J'ai utilisé des
Comment faire un long terme Time-lapse

Comment faire un long terme Time-lapse

une batterie unique et standard dans un appareil photo reflex numérique suffira pour faire la plupart de temps est caduque - mais, que se passe-t-il si vous voulez capturer un laps de temps pour une semaine, un mois ou une saison entière tout en étan