LoginSignup
2
1

More than 5 years have passed since last update.

M5Stack GrayでGボウルを表示する

Last updated at Posted at 2019-03-16

M5Stack GrayにはMPU9250という9軸センサ(それぞれ3軸の加速度、ジャイロ、磁気)が搭載されています。これを利用してモータースポーツなどで見かけるGボウルを描画します。

I2Cを初期化してMPU9250用のインスタンスを作ります。

from machine import I2C
from mpu9250 import MPU9250

i2c = I2C(sda=21, scl=22)
sensor = MPU9250(i2c)

値を取得してループしながら描画します。

x, y = 0, 0

while True:
    ax, ay, az = sensor.acceleration

    # オリジナルのX軸は左が正の値なので反転
    ax = ax * -1  

    # 前回描画したボールを削除
    lcd.circle(x, y, 5, lcd.BLACK, lcd.BLACK)

    # Gボウルを描画
    lcd.circle(160, 120, 110, lcd.WHITE)
    lcd.circle(160, 120, 55, lcd.WHITE)
    lcd.line(50, 120, 270, 120, lcd.WHITE)
    lcd.line(160, 10, 160, 230, lcd.WHITE)

    # ボールを描画
    x = int(ax * (55 / 10)) + 160
    y = int(ay * (55 / 10)) + 120
    lcd.circle(x, y, 5, lcd.RED, lcd.RED)

    time.sleep_ms(20)

サンプルコードはこちら。
https://github.com/key/playground-m5stack/blob/master/mpu9250_gbowl/main.py

課題

  • 再描画時のチラツキ
    • XOR取って必要な部分だけ再描画するとちらつきが無くなると思います
    • (VRAM直接ポチポチしてた頃にやってたような古典的な対応)
  • 加速度センサのノイズ
    • ローパスフィルタや移動平均などを使ってならすと良いかも知れません
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1