Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/richardlt/matrix
Video game console operating system that displays on a RGB LED matrix.
https://github.com/richardlt/matrix
arduino golang grpc hacktoberfest led-strips nodejs polymer raspberry-pi react redux socket-io
Last synced: 24 days ago
JSON representation
Video game console operating system that displays on a RGB LED matrix.
- Host: GitHub
- URL: https://github.com/richardlt/matrix
- Owner: richardlt
- License: gpl-3.0
- Created: 2018-01-25T19:44:39.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-01-21T10:25:21.000Z (10 months ago)
- Last Synced: 2024-08-23T00:20:39.243Z (3 months ago)
- Topics: arduino, golang, grpc, hacktoberfest, led-strips, nodejs, polymer, raspberry-pi, react, redux, socket-io
- Language: Go
- Homepage:
- Size: 6.38 MB
- Stars: 10
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Matrix
[![Go Report Card](https://goreportcard.com/badge/github.com/richardlt/matrix)](https://goreportcard.com/report/github.com/richardlt/matrix)
Video game console operating system that displays on a 16*9 RGB LED matrix.
## Existing softwares
| | Name | Description | |
| - | - | - | - |
| | Demo | A demo software that uses all drivers from the SDK. | |
| | Yumyum | Eat all the candies with your monster to win the game. | |
| | Clock | What time is it? | |
| | Zigzag | Turn left then right, eat candies but not yourself. | |
| | Draw | For those who like pixel art. | |
| | Device | The Device software allows you to change the luminosity of the LEDs. | |
| | Blocks | A puzzle game, score a maximum of points by clearing complete lines. | |
| | Getout | A labyrinth game, try to get out if you can. | |
| | Rollup dice | Random dice generator (https://github.com/gwenker/matrix-rollup-dice). | |
| | Animate | Player for animations generated with Glediator (http://www.solderlab.de/index.php/software/glediator). | |
| | Light | Simple software to generate mood light. | |## Matrix types
There are 3 main types that exists in Matrix's sdk:
- A **display** receives a live stream of frames from core.
- A **player** sends actions for a slot to core, an action is a button press/release event.
- A **software** receives player's actions from core and use sdk's rendering features to generate frames in Matrix core.## Matrix components
| Name | Description |
| - | - |
| Core | The heart of the Matrix system that managed software's lifecycle. All softwares, players and displays are connected to core. |
| Device | The component that interacts with usb controllers and Arduino. |
| Gamepad | A web application that contains a virtual controller with display. |
| Emulator | A web application built for development purpose. It displays Matrix main screen and player's screens. |## Production setup
Matrix is designed to run on a Raspberry Pi (at least model 3), it is composed by multiple softwares (core, device, gamepad...). All softwares can run on the Raspberry Pi but you can also start a software on your desk that will communicate remotely with the Matrix's core (with flag --core-uri).
Here are the few steps to install your own Matrix:
1. Download Matrix latest release [here](https://github.com/richardlt/matrix/releases). If you want to install it on Raspbian or Debian there is a .deb file available that will create a service to start Matrix automatically at boot.
2. Extract/install and run Matrix package.
```sh
$ dpkg -i matrix.deb # for Raspbian/Debian users
$ service matrix status
```
```sh
$ unzip matrix.zip # for others
$ cd matrix-package && ./matrix-[REPLACE_DEPENDING_OS] start --log-level info --gamepad-port 80 core device gamepad emulator demo zigzag yumyum clock draw blocks getout # select the right executable depending on your os
```3. Install firmware on the Arduino from file in Matrix source code (inside folder at ./device/firmware/firmware.ino). Source code can be downloaded from [release](https://github.com/richardlt/matrix/releases).
## Development setup (linux/darwin)
1. Requirements.
* [Go](https://golang.org/dl/) (version 1.17+)
* [Node.js](https://nodejs.org/en/download/) (with npm, version 16+)2. Install JS projects dependencies.
```sh
$ make install-all
```3. Run it.
```sh
$ go run main.go start --log-level info core gamepad emulator demo # you can start all other softwares by adding their names
$ (cd emulator && npm start)
$ (cd gamepad && npm start)
```4. Open emulator at http://localhost:3001 and/or gamepad at http://localhost:4002.