Rubyクラスライブラリ リファレンス

1. 使用方法

Rubyプログラムで rbbit.rbを requireメソッドでロードすることにより、
micro:bit用に提供されたクラスライブラリ(Rbbit::Microbitクラス)を使うことができるようになります。
    require 'rbbit'
requireのあと、Rbbit:Microbitのインスタンスを生成し
各インスタンスメソッドを呼び出していく形でプログラミングをおこないます。
    require 'rbbit'
    mb = Rbbit::Microbit.new("COM5")
    mb.led_on
    mb.close

2. メソッド一覧

項番 分類 メソッド名 概要
1 コンストラクタ Rbbit::Microbit.new インスタンスの生成
2 LED led_on LEDの点灯
3 LED led_off LEDの消灯
4 LED led_turn LEDの点灯状態反転
5 LED led_puts 文字列の表示
6 LED led_show パターンの表示
7 サウンド sound_play 音の出力
8 サウンド sound_rest 休符
9 サウンド sound_volume 音量の設定
10 サウンド sound_tempo 音の長さの設定
11 制御 mainloop 繰り返し処理
12 制御 break 繰り返し処理の終了
13 制御 wait スリープ
14 制御 close 通信の切断
15 制御 reset リセット
16 イベントハンドラ on_press_a Aボタンが押されたときにブロックを実行
17 イベントハンドラ on_release_a Aボタンが離されたときにブロックを実行
18 イベントハンドラ on_press_b Bボタンが押されたときにブロックを実行
19 イベントハンドラ on_release_b Bボタンが離されたときにブロックを実行
20 その他 button_down? ボタンの押下状態の取得
21 その他 port シリアルポート(デバイス)の取得

3. メソッド詳細仕様

特異メソッド

Rbbit::Microbit.new(serialport = nil)

概要
Microbitクラスのインスタンスを生成します。
引数
名前 内容 備考
serialport micro:bitが接続されている
シリアルポート(デバイス)
省略した場合は
環境変数「MB_PORT」の値が参照されます。
使用例
# シリアルポート「COM5」の micro:bitを操作するためのインスタンスを生成します
mb = Rbbit::Microbit.new("COM5")

# 環境変数「MB_PORT」に設定されているポート(デバイス)の
# micro:bitを操作するためのインスタンスを生成します
mb = Rbbit::Microbit.new

インスタンスメソッド

led_on(x = nil, y = nil)

別名(エイリアス)
on
概要
micro:bitの LEDを点灯させます。
引数
名前 内容 備考
x LEDの x位置(0~4)
x, yを省略した場合は
すべての LEDを点灯させます。
y LEDの y位置(0~4)
x, yを省略した場合は
すべての LEDを点灯させます。
使用例
mb.led_on(4, 4)        # => いちばん右下にある LEDを点灯させます
mb.led_on              # => すべての LEDを点灯させます
mb.on                  # => すべての LEDを点灯させます

led_off(x = nil, y = nil)

別名(エイリアス)
off
概要
micro:bitの LEDを消灯させます。
引数
名前 内容 備考
x LEDの x位置(0~4)
x, yを省略した場合は
すべての LEDを消灯させます。
y LEDの y位置(0~4)
x, yを省略した場合は
すべての LEDを消灯させます。
使用例
mb.led_off(0, 0)        # => いちばん左上にある LEDを消灯させます
mb.led_off              # => すべての LEDを消灯させます
mb.off                  # => すべての LEDを消灯させます

led_turn(x, y)

別名(エイリアス)
turn
概要
micro:bitの LEDを点灯状態を反転させます。(点灯→消灯 / 消灯→点灯)
引数
名前 内容 備考
x LEDの x位置(0~4)
y LEDの y位置(0~4)
使用例
mb.led_turn(2, 2)        # => 中心にある LEDを点灯または消灯させます
mb.turn(2, 2)            # => 中心にある LEDを点灯または消灯させます

led_puts(str)

別名(エイリアス)
puts
概要
micro:bitの LEDに文字列を表示させます。
引数
名前 内容 備考
str 表示させる文字列 半角英数記号のみ指定可能です。
使用例
mb.led_puts("Hello")        # => "Hello"という文字列を表示させます
mb.puts("123@")             # => "123@"という文字列を表示させます

led_show(pattern)

別名(エイリアス)
show
概要
micro:bitの LEDを指定したパターンで点灯させます。
引数
名前 内容 備考
pattern 点灯させるパターン 5×5の二元配列に
1(点灯) / 0(消灯)をセットして指定します。
使用例
pattern1 = [
             [1, 1, 1, 1, 1],
             [1, 0, 0, 0, 1],
             [1, 0, 0, 0, 1],
             [1, 0, 0, 0, 1],
             [1, 1, 1, 1, 1]
           ]
mb.led_show(pattern1)     # => "□"のようなパターンで LEDを点灯させます
mb.show(pattern1)         # => "□"のようなパターンで LEDを点灯させます

sound_play(freq, beat)

別名(エイリアス)
play
概要
指定した周波数の音を指定した長さで鳴らします。(要スピーカー装着)
引数
名前 内容 備考
freq 周波数を表すシンボル 指定できるシンボルの一覧

:C3 ... 低い「ド」
:Cs3 ... 低い「ド#」
:D3 ... 低い「レ」
:Ds3 ... 低い「レ#」
:E3 ... 低い「ミ」
:F3 ... 低い「ファ」
:Fs3 ... 低い「ファ#」
:G3 ... 低い「ソ」
:Gs3 ... 低い「ソ#」
:A3 ... 低い「ラ」
:As3 ... 低い「ラ#」
:B3 ... 低い「シ」

:C4 ...「ド」
:Cs4 ...「ド#」
:D4 ...「レ」
:Ds4 ...「レ#」
:E4 ...「ミ」
:F4 ...「ファ」
:Fs4 ...「ファ#」
:G4 ...「ソ」
:Gs4 ...「ソ#」
:A4 ...「ラ」
:As4 ...「ラ#」
:B4 ...「シ」

:C5 ... 高い「ド」
:Cs5 ... 高い「ド#」
:D5 ... 高い「レ」
:Ds5 ... 高い「レ#」
:E5 ... 高い「ミ」
:F5 ... 高い「ファ」
:Fs5 ... 高い「ファ#」
:G5 ... 高い「ソ」
:Gs5 ... 高い「ソ#」
:A5 ... 高い「ラ」
:As5 ... 高い「ラ#」
:B5 ... 高い「シ」
:C6 ... さらに高い「ド」
beat 音の長さ
4.0 ... 4拍分の長さ
2.0 ... 2拍分の長さ
1.0 ... 1拍分の長さ
0.5 ... 1/2拍分の長さ
0.25 ... 1/4拍分の長さ
0.125 ... 1/8拍分の長さ
上記未満 ... 1/16拍分の長さ

記載されている値以外を指定した場合は、
時間の短い方の区分として扱われます。

なお、1拍分の長さは
「sound_tempo=」メソッドで
指定することができます。
使用例
mb.sound_play(:C4, 1.0)     # => 「ド」の音を1拍分鳴らします
mb.play(:A4, 0.5)           # => 「ラ」の音を1/2拍分鳴らします

sound_rest(beat)

別名(エイリアス)
rest
概要
指定した長さの休符を入れます。
引数
名前 内容 備考
beat 音の長さ
4.0 ... 4拍分の長さ
2.0 ... 2拍分の長さ
1.0 ... 1拍分の長さ
0.5 ... 1/2拍分の長さ
0.25 ... 1/4拍分の長さ
0.125 ... 1/8拍分の長さ
上記未満 ... 1/16拍分の長さ

記載されている値以外を指定した場合は、
時間の短い方の区分として扱われます。

なお、1拍分の長さは
「sound_tempo=」メソッドで
指定することができます。
使用例
mb.sound_rest(1.0)     # => 1拍分の休符を入れます
mb.rest(0.5)           # => 1/2拍分の休符を入れます

sound_volume=(v)

別名(エイリアス)
volume=
概要
音量を設定します。
引数
名前 内容 備考
v 音量(0~255) デフォルト値は 127
使用例
mb.sound_volume = 64     # => 音量を 64に設定します
mb.volume = 255          # => 音量を 255に設定します

sound_tempo=(bpm)

別名(エイリアス)
tempo=
概要
1拍分の音の長さを設定します。
引数
名前 内容 備考
bpm 1泊分の音の長さ(4~400) デフォルト値は 120

「1分間に何回拍子を打つか」という値のため
値が大きいほど1拍分の音の長さは短くなります。
使用例
mb.sound_tempo = 60     # => 1拍分の音の長さを 60に設定します(1分間に 60回の拍子を打つテンポ)
mb.tempo = 200          # => 1拍分の音の長さを 200に設定します(1分間に 200回の拍子を打つテンポ)

mainloop(&block)

概要
指定されたブロックをスリープを挟みながら繰り返し実行します。
引数
名前 内容 備考
&block 実行されるブロック mainloopを終了するには
breakメソッドをコールしてください。
使用例
mb.mainloop do                      # => 以下のブロックを繰り返し実行
  mb.turn(2, 2)                     # => 中心の LEDを点滅
  mb.break if mb.button_down?(:a)   # => Aボタンが押されたらループ終了
end

break

概要
mainloopによる繰り返し処理を終了させます。
引数
なし
使用例
mb.mainloop do                      # => 以下のブロックを繰り返し実行
  mb.turn(2, 2)                     # => 中心の LEDを点滅
  mb.break if mb.button_down?(:a)   # => Aボタンが押されたらループ終了
end

wait(ms)

概要
指定された時間だけ micro:bitをスリープさせます。
引数
名前 内容 備考
ms スリープさせる時間(ミリ秒)
使用例
mb.wait(1000)                      # => micro:bitを1秒スリープさせます

close(delay)

概要
micro:bitとの間のシリアル通信を切断します。
引数
名前 内容 備考
delay 通信を切断するまでの
遅延時間(ミリ秒)
macOSでは通信の切断時にブレーク信号が発生して
その瞬間に micro:bitがリセットされてしまうため、
切断までの遅延時間の設定ができるようになっています。
使用例
mb.close                      # => micro:bitとの通信をすぐに切断します
mb.close(3000)                # => micro:bitとの通信を3秒後に切断します

reset

概要
micro:bitをリセットします。
引数
なし
使用例
mb.reset                      # => micro:bitをリセットします

on_press_a(&block)

概要
Aボタンが押されたときに、指定されたブロックを実行します。
引数
名前 内容 備考
&block 実行されるブロック
使用例
mb.on_press_a do            # => Aボタンが押されたときに以下のブロックを実行
  mb.on                     # => すべての LEDを点灯
end

on_release_a(&block)

概要
Aボタンが離されたときに、指定されたブロックを実行します。
引数
名前 内容 備考
&block 実行されるブロック
使用例
mb.on_release_a do          # => Aボタンが離されたときに以下のブロックを実行
  mb.on                     # => すべての LEDを点灯
end

on_press_b(&block)

概要
Bボタンが押されたときに、指定されたブロックを実行します。
引数
名前 内容 備考
&block 実行されるブロック
使用例
mb.on_press_a do            # => Bボタンが押されたときに以下のブロックを実行
  mb.close                  # => 通信を切断
end

on_release_b(&block)

概要
Bボタンが離されたときに、指定されたブロックを実行します。
引数
名前 内容 備考
&block 実行されるブロック
使用例
mb.on_release_a do          # => Bボタンが離されたときに以下のブロックを実行
  mb.close                  # => 通信を切断
end

button_down?(button)

概要
指定されたボタンが押されている状態かどうかを返します。
引数
名前 内容 備考
button ボタンを表すシンボル
:a ... Aボタン
:b ... Bボタン
戻値
true ... 指定されたボタンが押されている
false ... 指定されたボタンが押されていない
使用例
puts mb.button_down?(:a)             # => Aボタンが押されていれば trueが表示されます
puts "B!" if mb.button_down?(:b)     # => Bボタンが押されていれば "B!"が表示されます

port

概要
接続しているポート(デバイス)を返します。
引数
なし
戻値
シリアルポート(デバイス)
使用例
# OSや接続状態に応じて "COM5", "/dev/tty.usbmodem14132", "/dev/ttyACM1"などが表示されます
puts mb.port

Link to GitHub