在Day 24:口紅裡的樹莓派密碼中,你是一個大學生。而你的大學室友們打算拉你一起偷偷潛入女生宿舍送宵夜。你跟眼鏡仔一起破解女生宿舍的門禁系統,但眼鏡仔出包了,還觸發了門禁系統的保護機制──女生宿舍的GPIO迷宮。
你、眼鏡仔、毛帽哥三人開始分開找線索,想要找到這個房間隱藏的電路板,之後再用它來欺騙門禁系統。結果你在化妝包裡找到一個口紅USB。你們把它插到電腦上,發現裡面有三個檔案。
rw-r--r-- 1 pi pi 1024 Oct 9 22:40 welcome.txt
-rw-r--r-- 1 pi pi 2048 Oct 9 22:41 myraspberry.jpg
-rwxr-xr-x 1 pi pi 512 Oct 9 22:42 script.py
你們首先打開myraspberry.jpg
,發現是大漂亮的外拍照。照片裡面還有一雙奇怪的手拿著一串樹莓。看來,『樹莓』是一個提示,你們要找到那個神奇樹莓。
你們接著打開welcome.txt
,發現一段文字。
嘿,看來你們已經發現這是我做的GPIO的迷宮了。你們一定很好奇我把電路板藏在哪裡吧?給你們一個提示,試著用GPIO來控制這個的房間裡的裝置,就可以找到那個藏有電路板的裝置。如果你們順利找到,就可以用這張電路板來解開門禁系統,我會在出口等你們。如果你們找不到,就看不到我,而且還有警衛會來找你們哦~
你們接著打開script.py
,發現是一段Python程式碼。程式碼如下:
import RPi.GPIO as GPIO # 導入Raspberry Pi GPIO模組
import time # 導入time模組
GPIO.setmode(GPIO.BCM) # 設定GPIO模組模式為BCM
GPIO.setup(17, GPIO.OUT) # 設定GPIO17接腳為輸出模式
for i in range(10): # 重複10次
GPIO.output(17, GPIO.HIGH) # 讓GPIO17接腳輸出高電位,點亮LED燈
time.sleep(1) # 暫停1秒
GPIO.output(17, GPIO.LOW) # 讓GPIO17接腳輸出低電位,熄滅LED燈
time.sleep(1) # 暫停1秒
GPIO.cleanup() # 清除GPIO接腳的設定
「這段程式碼是用來幹嘛的?」你跟毛帽哥問眼鏡仔。
「這是用來操控GPIO接腳的。GPIO接腳就像是樹莓派的手和腳,可以讓它跟其他的東西連接起來,像是燈泡、開關、感應器等等。它還可以發出或接收高低電壓訊號,就像是樹莓派和其他東西之間溝通的語言。」眼鏡仔解釋,「這就是為了要讓樹莓派學會這種語言,才能和外部零件(LED燈、按鈕、感測器……等)溝通。」
「那設定GPIO模組模式為BCM要幹嘛?」
「用這種方法,就可以讓樹莓派可以用晶片上的編號來控制GPIO接腳(直接使用BCM GPIO編號來指定接腳)。這樣比較方便,不用記住每個接腳的位置。」
「接下來呢?」
「接下來要開始設定接腳模式,這可以讓樹莓派控制外部零件。這些接腳都已經被連接到某個裝置,所以就把他設定為輸出模式。這就像是樹莓派對外部零件溝通,叫它們做事。」
「那我們現在要執行嗎?應該不會有什麼奇怪的東西跑出來吧?」
你們終於下定決心執行程式,然後發現房間裡面有一個小小的紅色LED燈在閃。那個LED燈就在盆栽裡面,看起來像是一棵樹莓。