介绍 Rubyduino——基于 Matz 的 Spinel 的 Ruby 到 Arduino UNO 编译器
发布: (2026年5月9日 GMT+8 02:16)
2 分钟阅读
原文: Dev.to
Source: Dev.to

概览
Rubyduino(GitHub)将 Ruby 草图编译为 Arduino 板的固件并上传。其内部使用 Spinel——Matz 的 Ruby AOT 编译器,已在固定的修订版本中 vendored。
工作原理?
Rubyduino 在 Spinel 生成的 C 代码之上添加了一个小型 Arduino 运行时。digital_write、delay_ms、analog_read、serial_print、pulse_in 等函数被映射为直接操作 Arduino UNO 硬件寄存器的微型 AVR C 函数。
随后由普通的 AVR 工具链接管:
- Ruby 草图 → Spinel 将其转换为 C
- Rubyduino 添加 Arduino UNO 运行时
avr-gcc将 C 编译为固件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
结果:
