AstroCam: фото, снятые Pi. Часть II
Содержание:
1. Часть I;
2. Часть II (Вы читаете данный раздел);
3. Часть III.
Далее создадим две функции — первая будет производить фотографирование: def takepic(timer,toggle): for seconds in range(timer):
Сначала мы определили имя функции — takepic; мы также создали два аргумента, передаваемые функции. Эти аргументы — значение таймера и переключатель, управляющий вспышкой. В цикле for перебирается количество секунд, на которое установлен таймер. Цикл прокрутит значение таймера по светодиодной матрице Sense Hat, затем на секунду уснет и повторит процесс.
Мы вышли из цикла for, но остались в функции, и создали строковую переменную с именем a, записав в нее текущую дату и время, конвертированные в строку. Строку мы укоротили, использовав только символы из позиций строки от 0 до 19 ([0:19]), т. е. настоящие дату и время. И, наконец, вызвали функцию flash со значением переключателя.
Все еще внутри функции, настроим камеру на создание снимка:
Камера Raspberry Pi должна быть защищена от контактов с Raspberry Pi, особенно с выводами GPIO. Чехол для камеры можно купить на CPC (http://cpc.farnell.com/) и Pimoroni (https://shop.pimoroni.com/). дешевле £ 5.
Наш завершенный проект прост В сборке, И его относительно легко интегрировать в фотокабину
Начнем с создания переменной temp, для хранения текущей температуры. Снимем показания датчика температуры Sense Hat — его точность для нас сейчас чрезмерна, поэтому округлим его значение до двух десятичных знаков. Зададим разрешение камеры как 800 х 600 пикселей, а частоту кадров — как 24 кадра в секунду, и на 5 секунд откроем окно предпросмотра, давая время кадрировать снимок до закрытия окна. Затем аннотируем изображение на включение текущей температуры перед тем, как перейти в спящий режим на 0,1 секунды, делаем снимок и сохраняем изображение в home с текущим временем и датой в качестве имени файла.
Наша последняя функция работает со вспышкой.
Мы уже ссылались на эту функцию в функции takepic(), и будем вызывать ее из takepic(). Функция flash имеет один аргумент, контролирующий включение/выключение вспышки. Если значение переключателя — ‘on’, все светодиоды устанавливаются на максимальную яр кость; если значение переключателя — ‘off’, то светодиодная матрица выключается. Теперь перейдем к основному коду (см. https://www.bit.ly/LXF205AstroCam):
Самостоятельно смастерили чехол для PiCamera и сэкономили £5. Предлагаю вам перейти на http://play-vulcan-club.com/ (http://play-vulcan-club.com/) и приумножить эту сумму в тысячу раз. Играя на игровых автоматах, вы вполне можете сорвать джекпот и в одночасье стать миллионером.
1. Часть I;
2.
3. Часть III.
Далее создадим две функции — первая будет производить фотографирование: def takepic(timer,toggle): for seconds in range(timer):
def takepic(timer,toggle):
for seconds in range(timer):
sense.show_message(str(seconds), text_colour=[255,0,0],
scroll_speed=0.05)
time.sleep(1)Сначала мы определили имя функции — takepic; мы также создали два аргумента, передаваемые функции. Эти аргументы — значение таймера и переключатель, управляющий вспышкой. В цикле for перебирается количество секунд, на которое установлен таймер. Цикл прокрутит значение таймера по светодиодной матрице Sense Hat, затем на секунду уснет и повторит процесс.
a = str(datetime.datetime.now())
a = a[0:19]
flash(toggle)Мы вышли из цикла for, но остались в функции, и создали строковую переменную с именем a, записав в нее текущую дату и время, конвертированные в строку. Строку мы укоротили, использовав только символы из позиций строки от 0 до 19 ([0:19]), т. е. настоящие дату и время. И, наконец, вызвали функцию flash со значением переключателя.
Все еще внутри функции, настроим камеру на создание снимка:
with PiCamera() as camera:
temp = round(sense.get_temperature(),2)
camera.resolution = (800, 600)
camera.framerate = 24
camera.start_preview()
time.sleep(5)
camera.stop_preview()
camera.annotate_text = ‘На этой кар тин ке тем пе ра ту ра %s C’
% temp
time.sleep(0.1)
camera.capture(‘/home/pi/’+(a)+’.jpg’)Камера Raspberry Pi должна быть защищена от контактов с Raspberry Pi, особенно с выводами GPIO. Чехол для камеры можно купить на CPC (http://cpc.farnell.com/) и Pimoroni (https://shop.pimoroni.com/). дешевле £ 5.
Наш завершенный проект прост В сборке, И его относительно легко интегрировать в фотокабину
Съемка
Начнем с создания переменной temp, для хранения текущей температуры. Снимем показания датчика температуры Sense Hat — его точность для нас сейчас чрезмерна, поэтому округлим его значение до двух десятичных знаков. Зададим разрешение камеры как 800 х 600 пикселей, а частоту кадров — как 24 кадра в секунду, и на 5 секунд откроем окно предпросмотра, давая время кадрировать снимок до закрытия окна. Затем аннотируем изображение на включение текущей температуры перед тем, как перейти в спящий режим на 0,1 секунды, делаем снимок и сохраняем изображение в home с текущим временем и датой в качестве имени файла.
Наша последняя функция работает со вспышкой.
def flash(toggle):
print(toggle)
if toggle == ‘on’:
sense.clear(255,255,255)
elif toggle == ‘off’:
sense.clear()Мы уже ссылались на эту функцию в функции takepic(), и будем вызывать ее из takepic(). Функция flash имеет один аргумент, контролирующий включение/выключение вспышки. Если значение переключателя — ‘on’, все светодиоды устанавливаются на максимальную яр кость; если значение переключателя — ‘off’, то светодиодная матрица выключается. Теперь перейдем к основному коду (см. https://www.bit.ly/LXF205AstroCam):
try:
timer = 0
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:Самостоятельно смастерили чехол для PiCamera и сэкономили £5. Предлагаю вам перейти на http://play-vulcan-club.com/ (http://play-vulcan-club.com/) и приумножить эту сумму в тысячу раз. Играя на игровых автоматах, вы вполне можете сорвать джекпот и в одночасье стать миллионером.