Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Write your own mrbgem, Create your own device

Write your own mrbgem, Create your own device

Write your own mrbgem,
Create your own device
PicoRuby Overflow Kaigi
R3 institute, Osaka
2025-07-19

Avatar for Harukasan

Harukasan PRO

July 19, 2025
Tweet

More Decks by Harukasan

Other Decks in Technology

Transcript

  1. Write your own mrbgems, Create your own device Pico Ruby

    Overflow Kaigi, Osaka 2025-07-19 Shunsuke Michii / Harukasan
  2. Shunsuke Michii / Harukasan → ピクシブ株匏䌚瀟 執行圹員 CTO → 2012幎にピクシブに新卒゜フトりェア゚ンゞニアずしお入瀟

    → 仕事では普段「はるかさん」ず呌ばれおいたす → 孊生時代は高専ロボコンで䞻に機械加工を担圓しおいたした → PicoRabbitずいうや぀を぀くっおいたす 2
  3. 16

  4. overflow.rb require "ws2812" image = [1, 1, 1, 1, 1,

    1, 1, 1, 
 (snip) ] # 画像デヌタの配列を䜜成 web_safe_values = [0, 4, 8, 12, 16, 20] led = WS2812.new(26, 239) # static領域のstructを割り圓お index = 0 image.each do |v| color = v - 1 r = web_safe_values[color / 36] # 画像デヌタをRGBに展開 g = web_safe_values[(color % 36) / 6] b = web_safe_values[color % 6] led.set_pixel_at(index, [r, g, b]) # C偎の配列に倀をセット index += 1 end led.show # DMA転送開始 17
  5. 珟圚のharukasan's実装 → WS2812はstatic structを確保しおそれを割り圓おるようにした → Raspberry Pi PicoのDMAを甚いお転送しおいる → メモリが溢れおいるのはどうやらRuby侖界

    → ずりあえずCで実装されおいるpicoruby-prk-rgbは眮き換えられそう → picoruby-prk-rgbはpicoruby-ws2812に䟝存するようにしたい → むンタヌフェヌスがESP32実装ず異なる → このあずの実装方針を盞談したいです 18
  6. VSCode + RaspberryPi Pico SDK → 公匏に提䟛されおいるVSCode拡匵 → SDKずか環境をいろいろセットアップしなくおいい →

    USBケヌブルを抜いたり挿したりしなくおいい → この環境にPicoRubyだけを組み蟌みたい 24
  7. そこでCで぀くっおからmrbgemを぀くる → たずはCで実装する → 次にそのコヌドを呌び出すmrubyを実装する → Cで曞いた実装を ports/rp2040/*.c におく →

    それを呌び出す src/mrubyc/*.c のバむンディングを曞く → するずCでうごくものをすべおRubyで䜿えるようになる 26