首頁 教育 STEM 樹莓派 × MICRO:BIT SELFIE 自拍站(四)

樹莓派 × MICRO:BIT SELFIE 自拍站(四)

組裝及測試的部分完成,與過往習作相同,今期是撰寫程式的部分。今次的程式碼較多,同學也可嘗試理解程式碼結構,首段是載入程式,接著是定義,然後是程式運行。現在就用上述概念,來撰寫今次的習作。

最後的步驟便是要編寫 Python 程式,使習作可以整合起來。在樹莓派中建立一個新的 Python 程式,檔案命名為 selfie.py 。

編寫 Python 程式進行拍攝

selfie.py 程式碼,並將下列編碼寫在檔案中:

[row][double_paragraph]

selfie.py 程式碼

[/double_paragraph][double_paragraph]

行數 1-4 : 載入所需要用的 Library ,當中包括 gpiozero、
picamera 、 PIL( Python Imaging Library 圖像處
理)、gmtime (提取時間資料)、及 strftime (將
時間資料轉化為字符串)。
 行數 5-7 : 建立一個新的 camera 物件, 尺寸設定為
800×400 像素,並開始進行預覽。
 行數 8-9 : 設定兩個按鈕,分別接駁到 GPIO20 及 GPIO21 ,
pull up 狀態設為「否」,因為在 gpiozero Library
中,GPIO 的狀態是預設為 pull up ,即處於高位。
我們需要先將這個狀態設定為「否」,這樣才配
合我們在較早前為 Micro:bit 編寫的控制方法。
 行數 10 : 建立道具相片 props 並且將 beard.png 載入。
 行數 11-14 : 建立一個新的圖層 pad ,其尺寸是按剛才載入的
相片 beard.png 而設定。在 PIL 的 Library 中,尺寸
的基本單位是 32×16 像素,然後進行 12 及 13 行的
操作。
 行數 15 : 將圖層 pad 放在圖像 props 之下,並以座標
( 0,0 )為基點。
 行數 16-18 : 將拍攝到的圖像和道具相片結合一起作預覽,透
明度設定為 58 圖層編號設定為 3 ,即是在拍攝圖
像之上層。
 行數 19-26 : 定義一個t akePhoto 的函數(讀者請注意,行數 20
至 22 是一整行編碼,不要將它換行輸入),當中
使用 gmtime 功能,取得時間資料,並將資料轉化
為字串,再加上路徑的資料,並儲存到 output 變量
中。最後將拍攝到的圖像和道具相片結合一起,
並儲存在 output 的路徑及其檔案名稱中。
 行數 26-27 : 定義一個 stop 的函數,可以令拍攝站停止運作。
 行數 28-29 : 當按鈕 btn_takePhoto 和 btn_stop 按下的時候,就
會分別呼叫 takePhoto 和 stop 的函數進行運作。

[/double_paragraph] [/row]

製作拍攝站支架

最後的階段是製作習作製作支架,為自拍站包裝一下。支架主要是用 2 吋 × 1 吋的木方建造出來,配合電鑽和螺絲,就能夠輕易地將整個支架裝嵌起來。

[row][double_paragraph]

跟著將顯示屏以倒轉的方式,固定在支架上,再將其他電線及藍莓派等的硬件放在顯示屏後面。

[/double_paragraph][double_paragraph]

完成習作的整個設計。

[/double_paragraph] [/row]

測試時,拍攝出來的合成照片。

總結

雖然在上述介紹的自拍站中,只有一張道具相片,但其實讀者可以建立一個道具相片庫,讓用家選擇不同的道具相片,為自己拍攝相片加上特色,讀者不妨自行到 raspberrypi.org ,就可以找到更加詳細的習作描述。另外,在操控方面,讀者亦可以自製不同款式的按鈕,再接駁至樹莓派的 GPIO ,製作簡單之餘亦可以發揮創客的精神。

Exit mobile version