Skip to content

Arduino library for communicating with the Reiser Lab Modular LED panels display arena.

License

Notifications You must be signed in to change notification settings

janelia-arduino/ArenaController

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArenaController

Library Information

Arena

System Components

Quarter Panel

A quarter panel is a set of LED pixels arranged in rows and columns.

Panel

A panel is a set of quarter panels arranged in rows and columns.

Region

A region is a set of panels arranged in rows and columns with a common communication interface.

Display

An display is a set of regions arranged in rows and columns.

Display Messages

Quarter Panel

Pixels

Pixel numbering for each pixel in a quarter panel:

Grayscale

In grayscale mode, each LED can be one of sixteen brightness levels.

Example Quarter Panel Message Grayscale All On
constexpr uint8_t all_on[constants::byte_count_per_quarter_panel_grayscale] =
{
  1,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255
};

Binary

In binary mode, each LED can be one of two brightness levels, on or off.

Example Quarter Panel Message Binary All On
constexpr uint8_t all_on[constants::byte_count_per_quarter_panel_binary] =
{
  1,
  255,
  255,
  255,
  255,
  255,
  255,
  255,
  255
};

Panel

Quarter Panels in Panel

Quarter panel numbering for each quarter panel in a panel plus pixel numbering for select pixels in a panel:

Example Panel Messages

Grayscale All On
constexpr uint8_t all_on[constants::byte_count_per_panel_grayscale] =
{
  1,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  1,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  1,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  1,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255,
  255, 255, 255, 255
};
Binary All On
constexpr uint8_t all_on[constants::byte_count_per_panel_binary] =
{
  1,
  255,
  255,
  255,
  255,
  255,
  255,
  255,
  255,
  1,
  255,
  255,
  255,
  255,
  255,
  255,
  255,
  255,
  1,
  255,
  255,
  255,
  255,
  255,
  255,
  255,
  255,
  1,
  255,
  255,
  255,
  255,
  255,
  255,
  255,
  255
};

Region

Regions in Display

Region numbering for each region in an display:

Panels in Region

Panel numbering for each panel in an region:

Display

Panels in Display

Panel update order for each panel in an display:

Synchronous

Asynchronous

Pinouts

Panel

pinfunction
1+5VDC
2GND
3RESET
4SCK
5MOSI
6MISO
7CS0
8CS1
9CS2
10CS3
11CS4
12CS5
13CS6
14CS7
15EXT_INT

Development

Download this repository

https://github.com/janelia-arduino/ArenaController.git

sudo apt install -y git
mkdir -p ~/tmp && cd ~/tmp && git clone https://github.com/janelia-arduino/ArenaController.git

PlatformIO

Install PlatformIO Core

https://docs.platformio.org/en/latest/core/installation/index.html

Example

sudo apt install -y python3-venv make
cd ~/tmp/ArenaController
make venv

99-platformio-udev.rules

Linux users have to install udev rules for PlatformIO supported boards/devices.

Download udev rules file to /etc/udev/rules.d
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
Restart udev management tool
sudo service udev restart
Add user to groups
sudo usermod -a -G dialout $USER
sudo usermod -a -G plugdev $USER
Remove modemmanager
sudo apt-get purge --auto-remove modemmanager

Compile the firmware

cd ~/tmp/ArenaController
make firmware

Upload the firmware

cd ~/tmp/ArenaController
make upload

Monitor

cd ~/tmp/ArenaController
make monitor

About

Arduino library for communicating with the Reiser Lab Modular LED panels display arena.

Resources

License

Stars

Watchers

Forks

Packages

No packages published