曾有報道說,一些電腦愛好者根據光電鼠標的工作原理,將其改造成手持掃描儀來使用。當然,這樣的改造工作涉及操作系統及設備的知識,超出一般學生的能力范圍。但或許,我們可以嘗試利用光電鼠標做出其他好玩的“小發明”。本文列出一些簡單而有趣的實驗,所需要的材料僅僅是USB接口的光電鼠標、USB延長線、橡皮筋、硬紙板、手電筒、電視遙控器以及一個可視化的軟件開發環境。大膽想象一下,假如移動的不是鼠標,而是其他什么東西,那就能做出——
遙控繪圖板:找一個光束集中的手電筒,距光電鼠標的底部有一定距離,朝著光電鼠標的底部感光元件劃過,結果怎么樣呢?屏幕上的鼠標移動了。如此一來,就能編寫程序,實現用手電筒遙控畫畫的功能了。以Visual Basic為例,可在窗體的鼠標移動事件中添加畫線代碼:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form1.line –(X,Y)
End Sub
想想看,能用手電筒做出一個視頻播放遙控器嗎?如果把手電筒換成一個真正的電視遙控器,又會有怎么樣的結果呢?
射擊游戲機:為什么豐富多彩的電腦游戲可能會抹殺孩子們的想象力呢?原因之一是,電腦游戲太容易獲得了,且游戲規則也都已制定得很完善,孩子們根本不需要自己開動腦筋去尋找樂趣。下面的例子,可為孩子們提供了一個自己創造樂趣的機會。用光電鼠標、手電筒以及幾行簡單的代碼,DIY一個射擊游戲機。最簡單的做法是,取多根橡皮筋連成串并拴住光電鼠標,使其持續搖擺。以VB為例,在窗體上建立文本框,賦Text屬性為0,然后在窗體的鼠標移動事件中添加代碼:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1.Text = Str(Val(Text1.Text) + 1)
End Sub
Text1.Text中所顯示的就是中靶次數,可是這樣的代碼遠不及完美,因為玩家可通過持續的光照來模擬“連發”效果從而得到高分,這就需要大家一起來動腦筋完善代碼、細化游戲規則了。
跳躍記錄器:做一個厚度恰好與鼠標相同,長度和寬度稍大于鼠標的紙盒子,把鼠標放進紙盒子中然后掛在身上。編寫代碼,記錄下不同時間段鼠標的感應情況,使其成為一個最簡單的跳躍記數器。下圖描繪的,是筆者通過在窗體中繪制線條,記錄下的7次跳躍,線條越是密集,說明震動幅度越大。以Visual Basic為例,需要在Form_MouseMove事件與Timer1_Timer事件中添加代碼。代碼僅寥寥數行,大家能否自己完成呢?

假如跳躍是均勻的,那么統計跳躍次數的程序代碼也相當簡單。但也可以由此實驗作為深入研究的起點,探討更有難度的問題。例如,怎么樣計算非均勻跳躍次數呢?
大家有沒有想出更多好玩的裝置呢?例如,無線計步器、條形碼輸入器,或者紅外報警器?未必一定去做,但是值得思考一下可行性與大致的設計思路。(答案在本期找)