介绍 Rubyduino——基于 Matz 的 Spinel 的 Ruby 到 Arduino UNO 编译器

发布: (2026年5月9日 GMT+8 02:16)
2 分钟阅读
原文: Dev.to

Source: Dev.to

Cover image for Introducing Rubyduino, a Ruby to Arduino UNO compiler based on Matz's Spinel!

概览

Rubyduino(GitHub)将 Ruby 草图编译为 Arduino 板的固件并上传。其内部使用 Spinel——Matz 的 Ruby AOT 编译器,已在固定的修订版本中 vendored。

工作原理?

Rubyduino 在 Spinel 生成的 C 代码之上添加了一个小型 Arduino 运行时。digital_writedelay_msanalog_readserial_printpulse_in 等函数被映射为直接操作 Arduino UNO 硬件寄存器的微型 AVR C 函数。

随后由普通的 AVR 工具链接管:

  1. Ruby 草图 → Spinel 将其转换为 C
  2. Rubyduino 添加 Arduino UNO 运行时
  3. avr-gcc 将 C 编译为固件
  4. avrdude 将固件上传到板子

Arduino 并未解释 Ruby;它运行的是源自 Ruby 的编译后 AVR 机器码。没有使用 Firmata 或 RAD——这是一种全新的方法。

教程

gem install rubyduino
touch blink.rb
# blink.rb
pin_mode(ArduinoUNO::LED_BUILTIN, ArduinoUNO::OUTPUT)

loop do
  digital_write(ArduinoUNO::LED_BUILTIN, ArduinoUNO::HIGH)
  delay_ms(100)
  digital_write(ArduinoUNO::LED_BUILTIN, ArduinoUNO::LOW)
  delay_ms(100)
end
rubyduino blink.rb

结果:

Arduino 正在闪烁

0 浏览
Back to Blog

相关文章

阅读更多 »

Bun 在 6 天内移植到 Rust

概览 - 测试覆盖率:在 Rust 重写版中,Bun 现有的测试套件在 Linux x64 glibc 上的通过率为 99.8%。 - 代码库基本保持不变,但 Ru...