Skip to content

ライブラリ ​

AdventureBoard は、基板の部品をプログラムから使うためのライブラリです。 基板の /lib/adventure_board.rb と /lib/adventure_board/ に入っています。 コンソールの「▸ ライブラリのコードを見る」でも同じものが読めます。

ruby
require 'adventure_board'
GC.start

matrix = AdventureBoard.matrix     # 使う部品だけを取り出す

部品は、最初に取り出したときに読み込まれます。

取り出し方部品
AdventureBoard.matrixLED マトリクス
AdventureBoard.buttonsボタン
AdventureBoard.speakerスピーカー
AdventureBoard.status_ledステータス LED
AdventureBoard.grove_i2cGROVE1 の I2C
AdventureBoard.grove_link(role:)GROVE2 で基板どうしをつなぐ
AdventureBoard.grove_uartGROVE2 の UART

LedMatrix ​

16×16 の LED マトリクスです。

1 つずつ光らせる ​

座標は (1, 1) 〜 (16, 16)、明るさは 0〜255 です(見た目に比例するよう補正されます)。

命令動作
set(x, y, 明るさ = 255)1 つの明るさを決めます
clear全部消します
fill(明るさ = 255)全部を同じ明るさにします
showここまでの変更を LED に送ります。これを呼ぶまで光りません
brightness = 値全体の明るさの上限を決めます(0〜0x40、最初は 0x20)。上げると使用する電力が増えます

描く ​

座標は (0, 0) 〜 (15, 15) です。描いたあと blit で LED マトリクスに写し、show で送ります。

命令動作
clear_drawing描く場所を消します
set_pixel(x, y, 明るさ)点を描きます
draw_line(x1, y1, x2, y2, 明るさ)線を描きます
draw_rect(x, y, 幅, 高さ, 明るさ)四角の枠を描きます
draw_text(文字, x = 0, y = 0, font: "go16")文字を描きます。フォントは "go16"(ゴシック)"min16"(明朝)"go12" "min12" "maru12"(12 ドット)から選べます
pen = 明るさ明るさを省いたときと、文字の明るさを決めます
blit描いたものを LED ドライバにコピーします

Buttons ​

6 つのボタンです。名前は :up :down :left :right :a :b です。 チャタリングへの対応も含まれています。

命令応答
each_press { |name| ... }押されたボタンを古い順に 1 つずつ
take_press押されたボタンを 1 つ。無ければ nil
presses_waitingまだ取り出していない数
clear_presses覚えている押下状態を捨てます
pressed?(name)いま押されているか
pressedいま押されているボタンの一覧
any?どれか 1 つでも押されているか

Speaker ​

音をスピーカーで鳴らす機能です。この機能では音は 3 つまで重ねられます。

命令動作
reset音量・音色などを最初の状態に戻します。音を鳴らすプログラムの最初に呼びます
play_mml(mml, loop: false)MML の曲を鳴らします。配列で渡すと同時に鳴らします(3 つまで)。loop: true にすると、MML の $ の位置から最後までをくり返します($ が無いとくり返しません)
playing?曲が鳴っているか
stop止めます
note_on(番号, velocity: 100)1 音鳴らし始めます。60 が MML の o4 c(約 262Hz のド)です
note_off(番号)その音を止めます

MML の書き方は チュートリアル 5 を見てください。

StatusLed ​

USB の近くの緑の LED を操作します。

命令動作
on / off点灯・消灯
toggle点いていれば消し、消えていれば点けます
on?点いているか

GROVE ​

命令応答
AdventureBoard.grove_i2c(frequency: 100_000)GROVE1 の I2C(GPIO6 / GPIO7)。I2C のセンサなどに
AdventureBoard.grove_uart(baudrate: 115200)GROVE2 の UART(TX = GPIO28、RX = GPIO29)
AdventureBoard.grove_link(role: :a)GROVE2 で同じ基板どうしをつなぎます。2 枚で :a と :b に分けます。ケーブルは、赤(電源)の線だけを切った Grove ケーブルを使ってください

grove_i2c と grove_uart が返すのは、PicoRuby の I2C と UART のオブジェクトそのものです。 ピンの番号を指定しなくてよいだけで、使えるメソッドは PicoRuby と同じなので、くわしくはリンク先の説明(英語)を見てください。

ruby
i2c = AdventureBoard.grove_i2c
i2c.scan                         # つながっているデバイスのアドレスを表示
i2c.write(0x5F, 0x00)            # アドレス 0x5F に送る
data = i2c.read(0x5F, 1)         # アドレス 0x5F から 1 バイト読む

grove_link の使い方は、サンプルの一覧の「実機専用」にある「基板 2 枚をつなぐ」を見てください。

そのほか ​

PicoRuby の部品も、そのまま使えます。使い方は PicoRuby の各ライブラリの説明(mrbgems)を見てください。

GPIO.new(番号, GPIO::OUT) / GPIO::IN | GPIO::PULL_UPGPIO(チュートリアル 7、picoruby-gpio)
sleep_ms(ミリ秒)指定した時間スリープ
Machine.uptime_us起動してからの時間(マイクロ秒)
rand(n)0〜n-1 の乱数