(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.
- 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.
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.
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.