MBC IMU 陀螺儀 × EV3 Pybricks

三個步驟在 EV3 上用 MicroPython 讀陀螺儀

在 EV3 上寫 MicroPython 一定照這個順序:先匯入,再建立物件、幫陀螺儀取名字,最後才用這個名字去讀值。上面先選你用的是 Pybricks v4 還是 EV3 MicroPython v2,左邊一步一步做,右邊的程式會跟著長出來;轉動、抬高、搖晃模擬器裡的車子,就能看到程式會印出什麼。

你用的軟體:
1

匯入模組

陀螺儀在 EV3 上會被當成原廠陀螺儀,不用下載函式庫:用 Pybricks 內建的 LUMPDevice 直接讀它的「模式」(每個模式送回幾個數字)。

  1. 用 Chrome 打開 code.pybricks.com,照網站說明把 EV3 換成 Pybricks 韌體(EV3 版目前是 Beta)。
  2. EV3 先開機,再把陀螺儀插進感應器孔(開機那一下車子要靜止)。
  3. 新增一個程式,在最上面寫下面這幾行(右邊程式標 ① 的地方)。
2

建立物件:告訴程式插哪個孔

用 LUMPDevice 建立一個物件:告訴程式陀螺儀插在哪個孔,並幫它取個名字。之後讀值都是叫這個名字。

陀螺儀接在哪個孔?

孔位一定要寫成 Port.S1(不能只寫數字),所以第 1 步匯入了 Port。

3

讀值

寫法是「名字.read(模式)[第幾個]」:每個模式一次送回幾個數字,用 [0]、[1]… 拿第幾個(從 0 開始數)。同一個迴圈只用一種模式:EV3 每換一次模式要等約 0.5 秒。點一個讀值,程式和輸出會換成它的範例。

模擬感應器:左邊從上面看(航向),右邊從側面看(俯仰)。拖動拉桿、按按鈕,看右邊的輸出怎麼變

模擬畫面是示意:數值用畫面上車子的方向和角度換算,不是感應器裡面的演算法;實際讀值會有 1 度左右的跳動。EV3 接頭是唯讀的,Pybricks 不能叫感應器歸零,「歸零」按鈕在這裡等於拔插感應器重新開機(開機時航向 = 0);程式裡要歸零,用「程式開始時記下起點」那張卡的寫法。韌體版本 400 是示意值。

每個讀值的範例

完整範例


        

!


        

!


        

!

使用注意

  1. 拔線程式會停:這頁直接讀感應器的模式,沒有 MBC 函式庫幫忙,讀不到時會出現 OSError: [Errno 19] ENODEV,程式停下來(Pybricks v4 與 EV3 MicroPython v2 都一樣),要插回去再重新執行。小車要先把感應器插好再按執行。
  2. 同一個迴圈只用一種模式:EV3 每換一次模式要等約 0.5 秒。轉彎用模式 0(3D 航向),上坡判斷用模式 6(俯仰角),不要在同一個迴圈裡兩個都讀。
  3. 也可以用原廠陀螺儀寫法:感應器在 EV3 上會被當成原廠陀螺儀,網站的 EV3 新手範例 1~5 用 GyroSensor(Port.S1) 的 angle() 與 reset_angle(0)(Pybricks 的 angle() 讀到的是陀螺 1D 航向)。要讀俯仰角、角速度等新模式,就用這頁的 LUMPDevice/Ev3devSensor。
  4. 方向與歸零:右轉航向變大,轉一圈 = 360,會一直累加。開機那一下車子要靜止(開機時航向 = 0)。航向不準時拔掉感應器重插一次。模式 2~6 要感應器韌體 v4.0 以上。
  5. EV3 讀不到的值:磁力信任度、磁場干擾度、朝上的面、九軸原始值、校準命令只有 Arduino、mBlock、micro:bit 讀得到;EV3 上校準用感應器上的按鈕。