Arduino driving a monome grid?

I am starting a one month course about arduino programming.
Would you assume that an arduino board could run a sequencer like, for instance white whale ?
Is it possible to plug a grid to an arduino board and have them to communicate with the osc protocol ? seems like a good starting point !

that tutorial is quite complete. in a nutshell:

  • yes; we made an arduino library for this:

  • this will of course only work on arduinos that have a USB host mode. the library was developed using arduino Due but i guess this board is discontinued now (?)… i’m not 100% sure but i think the Zero must support host mode since it is based on SAMD21. it sure does, use the “native” usb port.

  • point of clarification: the library comprises the serial layer; there isn’t actually any OSC going on, and it’s not needed. if you want to actually use OSC (say, speaking to other computers over a network port) you would have to add some simple glue code.


also works with the arc btw if anyone is interested…
the code says untested. though I had a successful quick play.
can’t wait to have more time for this in the coming months…


most definitely could run grid/arc applications on arduino due. if you’re curious also take a look at the firmware for nw2s::b module (which i think uses monomehost or a variation of it)

it’s arduino due based, the firmware itself probably won’t be that useful as it’s a framework developed for the ::b hardware i/o specifically but there are several sketches that might give a good idea of what’s possible (and could probably be fairly easily adapted), specifically BinaryArc, GameOfLife and GridNoteSequencer.

1 Like

interesting, did not realize that this support had been added to nw2s::b. thanks!

we definitely tooks some pointers from from nw2s::b for MonomeHost.

for what it’s worth, MonomeHost does device discovery (instead of reading descriptors from JSON) and its interface is basically identical to aleph/trilogy. so it should be very very easy to adapt trilogy or aleph programs (basically just needs a C++ wrapper.)

1 Like

Hello all

I got a Walnut 64 monome and I am starting on a new project with it. I would like be able to connect it to an arduino ver serial, but I cant find a Library that does it - does one exist?

I found monomeHost but that looks like it only works with a due

Thanks in advance !!!

Ive been able to connect to a grid on an Arduino Yun via serial (using a lua serial library on the Linux side).

I didn’t know about monomeHost, so I’ll have to try it with the the Yun as well.

Stupid question (I don’t even remember opening this topic !) but how do you (physically) connect the grid to the arduino board ?

The Arduino Yun has a USB host port, so it’s just a matter of plugging it in via the typical cable. Not sure how you’d go about doing it on an Arduino without that capability though.

EDIT: @chapelierfou

Actually just remembered it was more complicated than that. I wrote down the steps I took after I got it working. This was done on a Arduino Yun Rev. 2:

Setup the Yun:
  1. load the sketch Examples > Bridge > YunFirstConfig
  2. open the Serial Monitor and follow the steps to connect to
     your wireless network. (Requires 2.4G hz network)
  3. note the IP address of the arduino listed after the setup.
  3. RECOMMENDED: expand the on-device memory with a micro-SD card (link).
                  Memory has limited read/writes, so this will expand the

SSH onto the Linux part of the Yun:
  1. open a terminal (on OS-X or Linux), or use puTTY.
  2. use "ssh root@192.168.1.x" and enter the configured password.

Install/Configure generic USB-Serial drivers (ugh):
  1. This (link) pretty much covers it all, but I'll try to write out
     the steps I took.
  2. "opk update"
  3. "opkg install comgt kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch" (might not need usb-modeswitch)
  4. "cat /sys/kernel/debug/usb/devices" then note the vendor and product ID
  5. should look like this:
T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  5 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0403 ProdID=6001 Rev= 6.00
S:  Manufacturer=monome
S:  Product=monome
S:  SerialNumber=m1000543
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 90mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
  6. put the following line in /etc/rc.local:
     echo '0403 6001 ff' > /sys/bus/usb-serial/drivers/option1/new_id
     (or <vendor id> instead of 0403 and <product id> instead of 6001)

     should look like this afterward:

     # Put your custom commands here that should be executed once
     # the system init finished. By default this file does nothing.


     echo '0403 6001 ff' > /sys/bus/usb-serial/drivers/option1/new_id

     exit 0
  7. reboot the arduino with the command "reboot".
  8. plug the grid into the USB port, then "ls /dev/"
  9. there should be a line that says "ttyUSB0"
1 Like

Thanks ! I’ll have a look when/if I receive a Yun.