Skip to content

3. 線と文字を描く ​

1 つずつ set するかわりに、線・四角・文字をまとめて描けます。

rb
# チュートリアル 3: 線と四角を描く。

require 'adventure_board'
GC.start

matrix = AdventureBoard.matrix

matrix.clear_drawing                    # 描く場所をまっさらにする

matrix.draw_rect(0, 0, 16, 16, 0xFF)    # 四角(x, y, 幅, 高さ, 明るさ)
matrix.draw_line(0, 0, 15, 15, 0x60)    # 線(始まりの x, y, 終わりの x, y, 明るさ)
matrix.draw_line(15, 0, 0, 15, 0x20)

matrix.blit                             # 描いたものを LED ドライバへコピー
matrix.show
▶ コンソールで開く

描いてからコピー ​

線や文字は、いったん 描くための場所(VRAM と呼びます)に描いてから、LEDドライバにコピーします。

命令すること
clear_drawing描く場所をまっさらにします
draw_rect(x, y, 幅, 高さ, 明るさ)四角の枠を描きます
draw_line(x1, y1, x2, y2, 明るさ)線を描きます
draw_text(文字, x, y)文字を描きます
set_pixel(x, y, 明るさ)点を 1 つ描きます
blit描いたものを LED マトリクスに写します
showLED に送ります(set のときと同じ)

座標の数え方が違う

描く命令の座標は、左上が (0, 0)、右下が (15, 15) です(set は (1, 1) 〜 (16, 16))。

漢字を出す ​

16×16 の文字(フォント)が入っているので、漢字がちょうど 1 文字収まります。

rb
# チュートリアル 3: 漢字を 1 文字出す。

require 'adventure_board'
GC.start

matrix = AdventureBoard.matrix

matrix.clear_drawing
matrix.draw_text("冒")
matrix.blit
matrix.show
▶ コンソールで開く

文字を流す ​

16 ドットには 1 文字しか入らないので、長い文字は流して見せます。 draw_text の x を 1 ずつ減らしていくと、文字が左へ動きます。

rb
# チュートリアル 3: 文字を右から左へ流す。

require 'adventure_board'
GC.start

matrix = AdventureBoard.matrix

text = "ようこそ PicoRuby"
x = 16                  # 右の外から始める
matrix.pen = 0xC0       # 文字の明るさ

while true
  matrix.clear_drawing
  matrix.draw_text(text, x, 0)
  matrix.blit
  matrix.show

  x -= 1                                   # 1 ドット左へ
  x = 16 if x < -(text.size * 16)          # 流れきったら右へ戻す
  sleep_ms 80
end
▶ コンソールで開く

matrix.pen は、文字の明るさです(draw_text には明るさを渡せないので、先に決めておきます)。

text.size * 16 は、文字列の幅のだいたいの値です。漢字やひらがなは 16 ドット、英数字は 8 ドットの幅なので、 英数字が多いと、流れきってから右に戻るまで、何も出ていない時間が長くなります。

やってみよう

  • 自分の名前を流してみましょう
  • draw_text の y を変えて、文字を上下にずらしてみましょう