2017年8月12日 星期六

Micro:bit : 跳躍計數器

Arduino、Raspberry Pi 一直沒有玩透,相了好久的 BBC Micro:bit 一直沒敢再下手,最近剛好有人開團,忍不住還是買了一片來玩。

半張名片大小的 Micro:bit 除了小巧以外,論功能強大,當然是無法和 Arduino 或是 RPi 相比,但是它內建了 BLE 藍芽、accelerometer sensor、magnetometer sensor 和 5x5 的 LED 陣列,加上各種平臺的寫程式工具,操作起來更加親民,讓初學者可以很快的享受寫程式的成就感。拿到的第一天就讓我家老婆測試,那種在平板上隨便拉幾個程序積木塊,上載以後就能看到字串在 Micro:bit LED 上顯示的成就感,可以很明顯的由笑開懷的表情中感受到。

稍微了解 Micro:bit 的運作方式後,寫了一個跳躍計數器,讓小孩子玩一下。
跳躍計數器主要是利用 Micro:bit 內建的 accelerometer sensor 當感應器,如果偵測到有「震動」就將計數用的變數加一,最後再顯示「震動」多少次即可。

在 Micro:bit 的「JavaScript Blocks Editor」中
很直覺的以為偵測「震動」要用「Input」中的「on Shake」,不過測試的結果靈敏度並不好,後來將「Shake」改為「3g」,計數的值就和實際跳躍的次數差不多。

整個程式分為底下的幾個部份:

on start

程式啟動以後
  • 將記錄跳躍次數用的變數「total」歸零。
  • 將記錄在哪個時間點有跳躍的變數「shakeAt」設為目前的時間。
  • 顯示「GO」的字串。


on 3g

在 Micro:bit 的 accelerometer sensor 偵測達到 3g 的震動後:
  • 將跳躍計數的變數 total 加一。
  • 記錄現在的時間至數數 shakeAt。
  • 暫停 100 ms。


forever

在迴圈中測是一直不斷檢查和前一次的跳躍是不是已超過二秒(2000ms),超過兩秒,則判定為在跳躍終止,就顯示計數的值(total)。否則就只在 LED 陣列顯示一顆心的圖案。


A、B 按鈕

當按下 A按鈕後,將跳躍計數器的值歸零。

當按下 B按鈕後,顯示跳躍的次數。


將程式儲存並上載到 Micro:bit 中以後,我們就可以接上電池,實際跳跳看囉!底下是讓小孩子試玩的影片:



影片中是用小顆的行動電源,由 USB 供電。雖然這顆行動電源已經很小了,不過還是嫌重了一點。剛好前一陣子買了一排 LR44 的鈕扣電池,於是畫了一個可以裝兩顆 LR44 的簡單模型,利用 3D printer 印出來以後,加兩根導線及端子,改由 Micro:bit 的電池插槽供電,這樣子讓整個裝置輕量許多,可以直接放口袋中就好。不過,用兩顆 LR44 供電能玩多久則還需要觀察。

LR44 電池盒的模型在 Thingiverse 網站中可以下載得到,網址如下:






1 則留言:

  1. 雄老師您好:

    (對不起,因為您目前這個部落格找不到留言的地方,所以只好跑來這篇文章後留言。您另外gsyan888的部落格好像已多年未經營了。)

    我下載了「打包好的.zip」,不能執行。再依您的說明去下載了「Flash Player projector」,就可以玩了。
    雖然在遊戲畫面右下角有「text」可以變更字詞內容,但如果要直接在set檔內變更字詞,好像都不管用。又,如果要變更行、列數(格子數),去改gomoku_set檔裡面的行、列參數,然後存檔。執行後,格子數依新參數更改了,可是字詞全變成亂碼。我試了不動任何參數,只是將gomoku_set再存檔一次,五子棋的字詞也全部變成亂碼,請問該怎麼辦呢?我使用chrome、win8,不知這是否有影響? 包括對對碰也是發生同樣的情形。

    「打包好的.zip」解壓縮後,產生了5個文字檔(set檔),哪一個才是swf會去引用參數的檔?

    回覆刪除

 
© 2009. Design by Pocket