- Name: ArenaController
- Description: Arduino library for communicating with the Reiser Lab Modular LED panels display arena.
- Version: 0.2.0
- Panel Version: G4 v1.9
- Release Date: 2023-08-25
- Creation Date: 2023-08-16
- License: BSD-3-Clause
- URL: https://github.com/janelia-arduino/ArenaController
- Author: Peter Polidoro
- Email: peter@polidoro.io
- Copyright: 2023 Howard Hughes Medical Institute
- References:
A quarter panel is a set of LED pixels arranged in rows and columns.
A panel is a set of quarter panels arranged in rows and columns.
A region is a set of panels arranged in rows and columns with a common communication interface.
An display is a set of regions arranged in rows and columns.
Pixel numbering for each pixel in a quarter panel:
In grayscale mode, each LED can be one of sixteen brightness levels.
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
};
In binary mode, each LED can be one of two brightness levels, on or off.
constexpr uint8_t all_on[constants::byte_count_per_quarter_panel_binary] =
{
1,
255,
255,
255,
255,
255,
255,
255,
255
};
Quarter panel numbering for each quarter panel in a panel plus pixel numbering for select pixels in a panel:
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
};
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 numbering for each region in an display:
Panel numbering for each panel in an region:
Panel update order for each panel in an display:
pin | function |
---|---|
1 | +5VDC |
2 | GND |
3 | RESET |
4 | SCK |
5 | MOSI |
6 | MISO |
7 | CS0 |
8 | CS1 |
9 | CS2 |
10 | CS3 |
11 | CS4 |
12 | CS5 |
13 | CS6 |
14 | CS7 |
15 | EXT_INT |
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
https://docs.platformio.org/en/latest/core/installation/index.html
sudo apt install -y python3-venv make
cd ~/tmp/ArenaController
make venv
Linux users have to install udev rules for PlatformIO supported boards/devices.
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
sudo service udev restart
sudo usermod -a -G dialout $USER
sudo usermod -a -G plugdev $USER
sudo apt-get purge --auto-remove modemmanager
cd ~/tmp/ArenaController
make firmware
cd ~/tmp/ArenaController
make upload
cd ~/tmp/ArenaController
make monitor