(Hacked) mruby/c can work on Arduino Uno
As you know, Arduino Uno has only 2KB RAM and 32KB ROM. It is fine for simple project written by C or C++. However it is generally impossible to run major script languages.
I thought it may be possible to run mruby/c on Arduino.
I checked my mruby/c library for ESP32, then found despair…
I decided to hack mruby/c to run itself on Arduino Uno.
Basic strategy
- Footprint first
Performance doesn’t matter. - Limit functionality
Some basic functionality will not be implemented in order to reduce ROM and RAM. (I found a new question, “What makes Ruby?”) - Reduce redundancy
Of course, redundancy shall be removed. - Utilize ROM as much as possible
Any data on RAM shall be examined for the possibility to move to ROM using PROGMEM.
Result
Finally I did it.
I can execute following Ruby code. I implemented the embedded Arduino class for testing.
puts "LED Test"
pin = 13
Arduino.pin_mode(pin,:OUTPUT)
st = :LOW
while(true) do
if(st==:LOW)
st=:HIGH
else
st=:LOW
end
Arduino.digital_write(pin,st)
Arduino.delay(500)
end
(mruby/c provides subset functions of mruby. My micro mruby provides subset functions of mruby/c. I have no idea if I can say “This is Ruby!” or not…)
Source code is here.
https://github.com/kishima/micro_mruby_for_arduino_uno
My first fanzine(Doujinshi)
I wrote a fanzine – I don’t know a good word for Doujinshi in English – for the TechBookFest5(技術書典5), to describe detail of my idea with some sample code sets. I also introduced and explained mruby and mruby/c for micro processor boards.
I offered a cover picture to my friend. He provided great one! I really appreciate to him.
It was brilliant experience to write a book and sell it by myself. I think this is the best idea to learn something tech by writing a tech book.
If you want to know detail explanation and you can read Japanese, you can buy my fanzine pdf on BOOTH. Now it is available on Amazon!
ディスカッション
コメント一覧
お忙しい中失礼します。
How to run itにあるTranscodeというコマンドはどうやって追加すればよいのでしょうか。
Transcoderを手に入れてからの手順でつまってしまいます。
助けてはいただけないでしょうか。
コメントに気づくのが大変遅くなってすみません。
Transcoderは自身でコンパイルする必要があります。
toolフォルダでmakeを実行することで生成されます。