PLEN:bit には、いろいろな動き(モーション)が最初から組み込まれていて、プログラムで選択してモーション再生ができます。
モーションの種類には、基本モーション、サッカーモーション、ダンスモーションがあります。
ランダムに動きを指定したい時とかは、上記の方法だと扱いにくいですよね。モーション番号で指定する方法もあります。
ここで指定するモーション番号は、以下の通り。
| モーション番号 | モーション |
| 0 | 左ステップ |
| 1 | 前ステップ |
| 2 | 右ステップ |
| 3 | えっへん |
| 4 | おじき |
| 5 | こくはく |
| 6 | ハグ |
| 7 | はくしゅ |
| 8 | ハイタッチ |
| 10 | 箱をふる |
| 11 | 箱を高くとる |
| 12 | 箱を低くとる |
| 13 | 箱をうけとる |
| 14 | 箱をあげる |
| 15 | 箱をわたす |
| 16 | 箱をなげる |
| 17 | 箱をおとす |
| 18 | 箱をおく |
| 20 | 左ディフェンス |
| 21 | ドリブル |
| 22 | 右ディフェンス |
| 23 | 左キック |
| 24 | ダッシュ |
| 25 | 右キック |
| 26 | 左パス |
| 27 | パスちょうだい |
| 28 | 右パス |
| 30 | ダンス左ステップ |
| 31 | ダンス前ステップ |
| 32 | ダンス右ステップ |
| 33 | ダンスポーズ |
| 34 | ダンスアップダウン |
| 35 | ダンスくねくね |
| 36 | ダンス後ろステップ |
| 37 | ダンスおじぎ |
| 38 | ダンスツイスト |
| 70 | 前に進む |
| 71 | 左に回る |
| 72 | 右に回る |
| 73 | 後ろに進む |
| 41 | 腕をパタパタする |
途中、連番になっていない部分もあるので気を付けて。41から70の空きが謎ですね。
いろんなモーションを見てみたいので、モーションを選んで実行するプログラムを作りました。
Bボタンでモーションを選択して、Aボタンで選択されているモーションを再生します。(モーション再生時に目が光ります!)
選択されているモーション番号は、LEDでわかるようにしました。LED 1行目が10の位、LED 2行目と3行目が 1の位になります。
Bボタンを押すごとに、1個ずつ番号が増えていき、41まで行くと0に戻ります。(なので、70台のモーションは見れないです。)
A+Bボタンで、リセットです。モーション番号0に戻ります。
Bボタン押したときに、該当番号のモーションが無い場合は、再生されません。
モーション再生後は、初期の素立ち状態に戻ります。サーボに負荷がかかったまま終わるモーションがあったので、戻るようにしました。
JavaScript に切り替えたのがこちら。日本語変数は、そのまま変数名になるのか…。
let _1の位 = 0
let _10の位 = 0
let motionNo = 0
input.onButtonPressed(Button.A, function () {
plenbit.eyeLed(plenbit.LedOnOff.On)
basic.pause(2000)
basic.showIcon(IconNames.Heart)
plenbit.motion(motionNo)
plenbit.eyeLed(plenbit.LedOnOff.Off)
plenbit.servoInitialSet()
})
input.onButtonPressed(Button.B, function () {
motionNo += 1
if (motionNo >= 42) {
motionNo = 0
}
setLed()
})
function setLed() {
basic.showLeds(`
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
`)
_10の位 = Math.trunc(motionNo / 10)
led.plot(_10の位, 0)
_1の位 = motionNo - _10の位 * 10
if (_1の位 < 5) {
led.plot(_1の位, 1)
} else {
led.plot(_1の位 - 5, 2)
}
}
input.onButtonPressed(Button.AB, function () {
motionNo = 0
setLed()
})
motionNo = 0
setLed()
これで好きなモーションを再生し放題!





