Skip to content

Latest commit

 

History

History
178 lines (156 loc) · 5.22 KB

moduled-nano.md

File metadata and controls

178 lines (156 loc) · 5.22 KB

Moduled Nano

MIDI controlled modular LED synthesizer (8 hp). Setup LED animations using MIDI data on your modular rack.

DIY

Hardware

What you need

  • 1x Arduino Nano
  • 1x 8x8 LED matrix
  • 1x Neopixel LED ring (8 LEDs)
  • 1x MIDI female jack
  • 2x buttons
  • 1x 2-way toggle switch
  • 2x 10K Potentiometers
  • 2x 220 ohm resistor
  • 1x 4.7k resistor
  • 3x 10k resistor
  • 1x 1N914 diode
  • 1x 6N138 Optocoupler
  • Protoboard, wires, soldering iron

Case

I designed the case using Blender 3D rendering software and exported an stl file and printed the case using Lulzbot TAZ 6 3D printer. The .blend and stl file for the case can be found here.

Software

moduled_nano.ino

Moduled Nano Arduino script.

Setting up custom LED animations

Using this online LED matrix editor you can setup a sequence of images to be added as an animation.

Usage

Shapes

8x8 LED matrix shapes that change size

const uint64_t IMAGES[] = {
  0x0000001818000000,
  0x0000182424180000,
  0x003c424242423c00,
  0x3c4281818181423c
};
const uint64_t IMAGES[] = {
  0x0000001818000000,
  0x0000183c3c180000,
  0x003c7e7e7e7e3c00,
  0x3c7effffffff7e3c
};
const uint64_t IMAGES[] = {
  0x4080000000000102,
  0x50a040800102050a,
  0x54a851a2458a152a,
  0x55aa55aa55aa55aa
};
const uint64_t IMAGES[] = {
  0x4080000000000000,
  0x50a0408000000000,
  0x54a850a040800000,
  0x55aa54a850a04080,
  0x55aa55aa54a850a0,
  0x55aa55aa55aa54a8,
  0x55aa55aa55aa55aa
};

Animations

0xffc3a59999a5c3ff,
0x8142241818244281,
0x0042241818244200,
0x0000241818240000,
0x0000001818000000,
0x0000000810000000,
0x0000001008000000,
0x0000001818000000,
0x0000241818240000,
0x0042241818244200,
0x8142241818244281,
0xffc3a59999a5c3ff
const uint64_t IMAGES[] = {
  0x0100000000000000,
  0x0101000000000000,
  0x0101010000000000,
  0x0101010100000000,
  0x0101010101000000,
  0x0101010101010000,
  0x0101010101010100,
  0x0101010101010101,
  0x0101010101010103,
  0x0101010101010107,
  0x010101010101010f,
  0x010101010101011f,
  0x010101010101013f,
  0x010101010101017f,
  0x01010101010101ff,
  0x01010101010181ff,
  0x01010101018181ff,
  0x01010101818181ff,
  0x01010181818181ff,
  0x01018181818181ff,
  0x01818181818181ff,
  0x81818181818181ff,
  0xc1818181818181ff,
  0xe1818181818181ff,
  0xf1818181818181ff,
  0xf9818181818181ff,
  0xfd818181818181ff,
  0xff818181818181ff
};
const uint64_t IMAGES[] = {
  0x0000001818000000,
  0x0000182424180000,
  0x0018186666181800,
  0x181818e7e7181818,
  0x991818e7e7181899,
  0xdbdb18e7e718dbdb,
  0xffffffe7e7ffffff,
  0xffffffffffffffff,
  0xffffffffffffffff,
  0xffffffe7e7ffffff,
  0xdbdb18e7e718dbdb,
  0x991818e7e7181899,
  0x181818e7e7181818,
  0x0018186666181800,
  0x0000182424180000,
  0x0000001818000000
};
const uint64_t IMAGES[] = {
  0x0000001818000000,
  0x0000182424180000,
  0x003c424242423c00,
  0x7e8181818181817e,
  0x7e8181999981817e,
  0x7e8181999981817e,
  0x7e8199a5a599817e,
  0x7ebdc3c3c3c3bd7e,
  0x7ebdc3dbdbc3bd7e,
  0x7ebddbe7e7dbbd7e,
  0x7ebddbffffdbbd7e
};