02 PocketCard內建功能介紹

(2021/04/28)

這教材是暑假國小【妖怪手錶程式創客營】中,首先先認識我們所使用的PocketCard開發板,本單元為PocketCard所有內建元件及感測器的介紹,本單元結束後,就可以進入手錶的設計了!

一、按鍵的功能

  • PocketCard有兩個按鍵

    • A鍵:腳位為GPIO14

    • B鍵:腳位為GPIO25

  • 取得按鍵按下時的數位值

    • 利用OLED顯示其值

      • 測試結果:

      • A鍵未按下時,其值為1

      • A鍵按下後,其值為0

  • 按A鍵顯示【開心】、按B鍵顯示【生氣】、按A+B鍵顯示【淡定】圖案

    • 利用上一篇介紹過的登月小車內建圖案

    • 其實,吉哥積木已建置好按A鍵、按B鍵、按A+B鍵等按鍵積木了,下面直接利用其吉哥積木來完成

    • 這些按鍵已設定在背景執行,不用放在【重複執行】積木內(如上),如果放在【重複執行】積木內(如下)也沒關係

二、RGB LED的功能

  • PocketCard的背後(A鍵後方)有一顆RGB LED燈

    • 連接的腳位為GPIO12

    • 此RGB LED燈的格式為WS2812B(燈條格式)

  • 剛好在法蘭斯的登月小車中找到可用的積木,但利用這積木,目前可以亮燈,但亮燈的顏色與設定的顏色不同

  • 讓RGB LED燈亮隨機顏色

  • 按A鍵亮燈、按B鍵滅燈

三、光敏電阻的功能

  • PocketCard有兩個光敏電阻

    • 光敏電阻A:位於A鍵下方,其連接的腳位為GPIO39 (類比腳位),這個位置比較特別,不知有何用意?

    • 光敏電阻B:位於B鍵上方(右上方),其連接的腳位為GPIO36 (類比腳位)

  • 取得光敏電阻的類比值

      • 註:若用全型的冒號則不會顯示

    • 測試結果發現:

      • 類比值介於0~4095間

      • 越亮時,其值越大

      • 越暗時,其值越小

    • 同樣,也可用吉哥積木

  • 天黑請開燈

    • 天黑時,在屏幕顯示【晚上】,並點亮背後的RGB LED燈

    • 天亮時,在屏幕顯示【白天】,並關閉背後的RGB LED燈

四、量測溫度的功能

  • PocketCard有一個溫度感測器

    • 溫度感測器:位於A鍵上方(左上角),其連接的腳位為GPIO34 (類比腳位)

  • 取得目前溫度

    • 由於取得的類比值還要經過換算,所以直接取吉哥積木來使用

  • 天熱請開扇

    • 按A鍵增加【設定溫度】1度

    • 按B鍵減少【設定溫度】1度

    • 當【環境溫度】大於【設定溫度】時,啟動電扇 (點亮LED燈),屏幕顯示ON

    • 當【環境溫度】小於【設定溫度】時,關閉電扇 (關閉LED燈),屏幕顯示OFF

五、蜂鳴器的功能

  • PocketCard有一個蜂鳴器

    • 蜂鳴器:位於背後(剛好在A鍵後方),其連接的腳位為GPIO26

  • 頻率表如下

  • 播放全家便利商店入店時的音樂

    • 簡譜:3 1 5(低音) 1 / 2 5~ 2 / 3 2 5(低音) 1

    • 一樣使用吉哥積木

      • 方法一:

        • 方法二:

          • 上述積木不會停止聲音,所以自己加上停止聲音的積木,包括最後也要!

          • 上述積木沒有加上播放長度的設定,所以自己加上等待時間,一般1拍是0.5秒。

    • 將音樂結合內建圖案,還滿好玩的

六、九軸感測器(MPU9250)的功能

  • Web:Bit在MPU9250的介紹,很清楚 https://webbit.webduino.io/tutorials/doc/zh-tw/education/board/mpu9250.html

    • 加速度計主要偵測 x、y 和 z 三軸直線移動時「瞬間」加速度變化

    • 陀螺儀則是偵測旋轉時「瞬間」的角度變化

    • 姿態角度 ( roll、pitch、yaw )主要透過加速度計和陀螺儀的數值

    • 磁力計可以偵測所在磁場的變化 ( 主要是針對地球磁場 )

  • PocketCard有一個九軸感測器(MPU9250)

    • 九軸感測器(MPU9250):位於背後,其連接的腳位為I2C腳位(SCL:GPIO22、SDA:GPIO21)

    • 剛好吉哥有做此感測器的相關積木

  • XYZ方向表示

  • 顯示九軸的資料

    • 顯示加速度三軸的值

      • 顯示加速度三軸的值

      • 顯示陀螺儀三軸的值

      • 如果把這三者放在一起寫程式,原本會有如下的錯誤,但劉正吉老師看到我的貼文,馬上解決此問題!

      • 程式 (mpu9250)

  • 如何表示【向前翻轉】、【向後翻轉】、【向左翻轉】、【向右翻轉】

    • 觀察加速度的三軸的值

      • 當板子平放時:x、y、z的值約為0、0、1

      • 向前翻轉到垂直時:x、y、z的值約為0、-1、0,所以當y的值小於-0.5時,代表向前翻轉

      • 向後翻轉到垂直時:x、y、z的值約為0、1、0,所以當y的值大於0.5時,代表向後翻轉

      • 向左翻轉到垂直時:x、y、z的值約為-1、0、0,所以當x的值小於-0.5時,代表向左翻轉

      • 向右翻轉到垂直時:x、y、z的值約為1、0、0,所以當x的值於-0.5時,代表向右翻轉

    • 程式