?

一只光敏電阻玩轉“小恐龍”游戲

2020-11-28 07:53謝作如林淼焱
中國信息技術教育 2020年21期
關鍵詞:光敏電阻代碼藍牙

謝作如 林淼焱

自從在上一期發表了《換個思路挑戰“小恐龍”游戲》后,陸續接到一些朋友的反饋。這里說的“小恐龍”游戲指Chrome瀏覽器在出現無網絡連接時提供的小游戲,只要按下空格鍵,一只小恐龍就會在沙漠中狂奔,玩家需要操控小恐龍跳躍到空中,以躲避仙人掌、翼龍等迎面而來的障礙物。在瀏覽器地址欄輸入chrome://dino/,聯網狀態下也可以玩這個游戲(如圖1)。

朋友的反饋大致分為兩類:一類是表揚,認為筆者的確提供了一個有趣的編程主題;另一類是提供新的方案,說還有更加好玩的自動控制游戲的方案。這里提供的“好玩”方案,一般指設計一個自動化裝置,俗稱物理“外掛”。而這些方案中,都用到了一個核心器件——能檢測光線的傳感器。

● 自動化裝置的原理

“小恐龍”游戲的規則很簡單,就是當障礙物來了,就跳起躲避。換成代碼如圖2所示。

上一期我們采用的方案是用Python的pyautogui庫“截屏”,再借助PIL庫識別目標區域的顏色。這一次我們換個好玩的方式來識別。因為游戲中屏幕只有兩種顏色,一種是白色的背景,另一種是灰色的障礙物,用光線傳感器剛好可以區分。

光線傳感器的核心器件是光敏電阻。一開始想讓傳感器貼近屏幕,就想直接用光敏電阻,而不是用現成的傳感器。只不過筆者最近忙著上信息技術課,來創客空間少了,好不容易找到了光敏電阻,卻怎么也找不到合適的電阻。為什么要找電阻?因為需要自制一個傳感器的檢測裝置。如圖3中的電路R1和R2形成一個分壓電路,在input端可以測出R2兩端的電壓,而這一電壓是由R2受到的光照強度決定的。

因為找不到合適的電阻,只好采用現成的光線傳感器。DF的光線傳感器用PT550環保型光敏二極管,雖然沒有辦法緊密貼著屏幕,但是因為其檢測的光線角度非常小,所以效果很好。

● 裝置方案之一:借助Arduino感知光線

確認了核心器件后,我們用的第一種方案,就是找一塊Arduino作為讀取傳感器信息的終端。那么pinpong庫就派上用場了,代碼如圖4所示。

是不是覺得代碼太簡單了?其實原理就這么簡單,無非是一句條件判斷。這里的40是怎么算出來的?這需要測試,受屏幕的亮度決定。

用雙面膠將傳感器固定在屏幕上,如圖5所示。細心調整一下位置,就是這么簡單的代碼,玩好居然可以獲得上千分。但是翼龍一過來就擋不住了,除非上下移動,或者要兩個以上的光線傳感器。

● 裝置方案之二:用Leonardo模擬鍵盤

在調試Arduino方案的過程中,我們又想到了另一種方案。創客空間里有好幾塊Arduino Leonardo板子(如圖6),都是上一屆學生做人機互動作品買的。相對Arduino UNO來說,Leonardo的特點是可以模擬為鼠標和鍵盤,即USB-HID(Universal Serial Bus-Human Interface Device)設備。如果把UNO換成Leonardo,那么就不用Python代碼來模擬鍵盤的按鍵動作了——Leonardo可以直接輸出按鍵信息。

方案的更換不用在硬件上做太多改變,傳感設備不用動,只要換一下控制板。只不過Python代碼要換成Arduino IDE了。Leonardo的程序代碼如圖7所示。

是不是覺得代碼依然很簡單?這就是開源硬件的魅力了,經過創客們的不斷迭代,編程的門檻越來越低,代碼越來越簡潔。

這個裝置的測試效果和上一個方案差不多,但是部署起來方便,Leonardo即插即用,打開瀏覽器就能測試,在任何計算機都可以使用。因為刷寫了上述代碼的Leonardo,對計算機說就是一個標準的鍵盤設備。

● 裝置方案之三:用掌控板模擬藍牙鍵盤

在測試Leonardo時,我們忽然想起掌控板又有了新功能,可以模擬為藍牙鍵盤鼠標了。翻了翻教程,發現非常簡單,于是我們又找出掌控板,下載了最新版的mPython。

因為掌控板上有光線傳感器,測試了一下,效果也挺好。我們拆除了原來的傳感器,直接將掌控板貼在屏幕上來使用。代碼還是一樣簡單,如圖8所示。

需要提醒的是,默認情況下mPython沒有加載藍牙庫。通過“擴展”-“添加”,選擇“藍牙(測試)”這個庫,如圖9所示。

刷入代碼后,掌控板就是一個藍牙鍵盤了。讓計算機添加藍牙設備,就能找到這個名為“mpy_hid”(名稱在代碼中可以改)的設備。具體過程如圖10和圖11所示。

這次的測試就更加完美了,因為掌控板自帶光線傳感器,不用另外接。掌控板和計算機也不用接線,非常清爽。我們選擇用“掌控寶”來供電,只要用膠帶固定一下位置,就能看著游戲在不斷加分。

● 多種裝置方案的比較和反思

當我們第一次展示控制游戲這種有趣的案例時,有網友說這是游戲“外掛”,有“作弊”的嫌疑。其實“外掛”是被游戲玩壞的一個名詞。在創客圈子中,我們會稱之為創客作品。很多人熱衷于制作各種有趣的自動化裝置,讓用戶體會技術的價值。甚至連物聯網、智能家居技術的最早案例,都可以追溯到這種有趣的裝置。

算上第一期使用的方案,我們先后使用了四種方案來實現自動挑戰“小恐龍”游戲,后三種都是用了光敏電阻。從使用便捷的角度看,用掌控板最方便,但從技術含量上看,還是第一種方案最難,涉及圖像的識別。設計方案來挑戰“小恐龍”游戲,其實可以作為一個值得推薦的項目式學習的案例。項目主題源于生活又具有不斷優化的特點,寓教于樂,學生在探索過程中需要學習很多知識,編程能力在探索過程中得到提高。

猜你喜歡
光敏電阻代碼藍牙
幫你輕松找到AirPods的神奇工具
神秘的代碼
光敏電阻的特性研究
一周機構凈增(減)倉股前20名
重要股東二級市場增、減持明細
橡塑保溫管切割臺的輸送帶控制電氣線路改造
太陽能跟蹤系統的研究
無線連接的飛躍 藍牙技術4.2揭密
近期連續上漲7天以上的股
藍牙4.0落地加速
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合