Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 29 additions & 28 deletions Hardware_control/timelapse.py
Original file line number Diff line number Diff line change
@@ -1,39 +1,40 @@
from picamera import PiCamera
import RPi.GPIO as GPIO
from time import sleep
import time
import datetime
import os
import sys
import time
import datetime

from RPi import GPIO
from shutil import copyfile
from picamera import PiCamera

GPIO.setmode(GPIO.BOARD)
GPIO.setup(29, GPIO.OUT)

camera = PiCamera()


# Parameters for the user to modify
# Basic settings
if len(sys.argv)==5:
folder = str(sys.argv[1]) # e.g. Timelapse
filename = str(sys.argv[2]) # e.g. im_exp1
interval = int(sys.argv[3]) # wait time in seconds e.g. 1800
steps = int(sys.argv[4]) # number of images e.g 200
if len(sys.argv) == 5:
folder = str(sys.argv[1]) # e.g. Timelapse
filename = str(sys.argv[2]) # e.g. im_exp1
interval = int(sys.argv[3]) # wait time in seconds e.g. 1800
steps = int(sys.argv[4]) # number of images e.g 200
else:
print ("Required parameters: folder name, filename, interval (secs), number of steps.")
print("Required parameters: folder name, filename, interval (secs), number of steps.")
sys.exit()

print('folder = ' + folder + '\nfilename = ' + filename +
'\ninterval = ' + str(interval) + ' sec'+ '\nsteps = '+ str(steps))
print(f'folder = {folder}')
print(f'filename = {filename}')
print(f'interval = {interval} sec')
print(f'steps = {steps}')

# make the folder if it doesn't exist
if os.path.exists(folder) == False:
if not os.path.exists(folder):
os.mkdir(folder)

# Minimal camera settings
camera.resolution=(960,720)
camera.ISO=400
camera.resolution = (960,720)
camera.ISO = 400
camera.framerate = 1 # frames/sec, determines the max shutter speed
camera.shutter_speed = 200000 # exposure time in microsecs
camera.exposure_mode = 'off' #'fixedfps'
Expand All @@ -44,14 +45,14 @@
# -------------------------------------------------------------
# These are other possible parameters to change, depending on experiment:
#camera.analog_gain = 1
#camera.digital_gain=1
#camera.digital_gain = 1
#camera.brightness = 50
#camera.sharpness = 0
#camera.contrast = 0 # useful to take reduce the background
#camera.saturation = 0
#camera.exposure_compensation=0
#camera.image_effect='none'
#camera.color_effects=None
#camera.exposure_compensation = 0
#camera.image_effect = 'none'
#camera.color_effects = None
#camera.framerate = 0.01
#camera.exposure_speed

Expand All @@ -64,26 +65,26 @@
for i in range(steps):

t1 = time.time()
print('Cycle ' + str(i))
print(f'Cycle {i}')

# turn the LEDs on
GPIO.output(29,GPIO.HIGH)

datestr = datetime.datetime.now().strftime("%Y-%m-%d-%H_%M_%S")
fname = os.path.join(folder, datestr + "_" + filename + "_%04d.jpg"%(i))
fname = os.path.join(folder, f'{datestr}_{filename}_{i:04}.jpg')
camera.capture(fname)

#turn the LEDs off
# turn the LEDs off
GPIO.output(29,GPIO.LOW)

elapsed = time.time()-t1
elapsed = time.time() - t1

# print some relevant information
print('Elapsed cycle time: ' + str(elapsed))
print('Effective camera shutter speed :' + str(camera.shutter_speed) + '\n')
print(f'Elapsed cycle time: {elapsed}')
print(f'Effective camera shutter speed: {camera.shutter_speed} \n')
# if the effective shutter speed doesnt coincide with the one you set,
# you must modify the camera.framerate parameter.

sleep(interval-elapsed) ## waiting time between cycles
time.sleep(interval-elapsed) ## waiting time between cycles

GPIO.cleanup()