Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 14 additions & 11 deletions .github/workflows/dmdreader.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
strategy:
fail-fast: false
matrix:
dmd: ['ppucdmd', 'ppucdmd2']
dmd: ['rp2040', 'rp2350']

name: Build for ${{ matrix.dmd }}

Expand Down Expand Up @@ -72,17 +72,18 @@ jobs:

- name: Build dmdreader
run: |
VERSION="v${{ needs.version.outputs.tag }}"
pio run -e ${{ matrix.dmd }}
cp .pio/build/${{ matrix.dmd }}/firmware.elf dmdreader-${{ matrix.dmd }}.elf
cp .pio/build/${{ matrix.dmd }}/firmware.uf2 dmdreader-${{ matrix.dmd }}.uf2
cp .pio/build/${{ matrix.dmd }}/firmware.elf dmdreader-${{ matrix.dmd }}-${VERSION}.elf
cp .pio/build/${{ matrix.dmd }}/firmware.uf2 dmdreader-${{ matrix.dmd }}-${VERSION}.uf2

- name: Upload artifacts
uses: actions/upload-artifact@v7
with:
name: dmdreader-${{ matrix.dmd }}
path: |
dmdreader-${{ matrix.dmd }}.elf
dmdreader-${{ matrix.dmd }}.uf2
dmdreader-${{ matrix.dmd }}-v${{ needs.version.outputs.tag }}.elf
dmdreader-${{ matrix.dmd }}-v${{ needs.version.outputs.tag }}.uf2
VERSION
LICENSE
README.md
Expand All @@ -96,10 +97,12 @@ jobs:
- name: Package
if: startsWith(github.ref, 'refs/tags/v')
run: |
cd dmdreader-ppucdmd
zip ../dmdreader-ppucdmd.zip dmdreader-ppucdmd.elf dmdreader-ppucdmd.uf2 VERSION LICENSE README.md
cd ../dmdreader-ppucdmd2
zip ../dmdreader-ppucdmd2.zip dmdreader-ppucdmd2.elf dmdreader-ppucdmd2.uf2 VERSION LICENSE README.md
VERSION="v${{ needs.version.outputs.tag }}"

cd dmdreader-rp2040
zip ../dmdreader-rp2040-${VERSION}.zip dmdreader-rp2040-${VERSION}.elf dmdreader-rp2040-${VERSION}.uf2 VERSION LICENSE README.md
cd ../dmdreader-rp2350
zip ../dmdreader-rp2350-${VERSION}.zip dmdreader-rp2350-${VERSION}.elf dmdreader-rp2350-${VERSION}.uf2 VERSION LICENSE README.md
cd ..

- name: Release
Expand All @@ -108,5 +111,5 @@ jobs:
with:
draft: true
files: |
dmdreader-ppucdmd.zip
dmdreader-ppucdmd2.zip
dmdreader-rp2040-v${{ needs.version.outputs.tag }}.zip
dmdreader-rp2350-v${{ needs.version.outputs.tag }}.zip
19 changes: 8 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@

This project allows to read the contents of a pinball DMD using the Raspberry Pi Pico. Both the RP2040 and RP2350 are supported.

## Pico hardware setup

The Pico is directly connected to all DMD data lines. Communication between the Pico and the consumer is implemented via SPI with an additional IRQ line. On this IRQ line, the Pico signals that a new frame is available, notifying the consumer to start the data transfer as soon as possible. The consumer acts as the SPI master, so it controls the clock frequency used to retrieve the data.

This architecture accommodates consumers (especially Linux hosts like the Raspberry Pi) that are not real-time systems.

## Officially supported pinball hardware systems

* WPC95 & WPC -> 128x32
Expand All @@ -24,6 +18,10 @@ This architecture accommodates consumers (especially Linux hosts like the Raspbe
* Sleic/Petaco -> 128x32
* Dotmation -> 192x64

## Pico hardware setup

The Pico is directly connected to all DMD data lines. Communication between the Pico and the consumer is implemented via SPI with an additional IRQ line. On this IRQ line, the Pico signals that a new frame is available, notifying the consumer to start the data transfer as soon as possible. This architecture accommodates consumers (especially Linux hosts like the Raspberry Pi) that are not real-time systems.

## Reading data

When reading data, we assume the data is sent correctly.
Expand All @@ -34,11 +32,10 @@ The process is as follows:
- Read frame (DMD dotloop PIO program)
- Construct frame based on captured data (dmd_dma_handler IRQ)

## License
## Project credits

This project has been forked from https://github.com/pinballpower/code_dmd
Since the original project changed its license from MIT to GPL v3 on 2022-05-02, the license of this fork is now also GPL v3.
DMDreader would not exist without the foundational work done by [Daniel Matuschek](https://github.com/pinballpower). Since then, the project has grown significantly due to extensive contributions from [Markus Kalkbrenner](https://github.com/mkalkbrenner) and [Jan Vos](https://github.com/pastorl69), who have delivered numerous bug fixes, performance optimizations, and support for additional manufacturers. Today, DMDreader is an integral part of [PPUC/DMD](https://ppuc.github.io/docs/ppuc_dmd/).

## Project credits
## License

DMDreader would not exist without the foundational work done by [Daniel Matuschek](https://github.com/pinballpower). Since then, the project has grown significantly due to extensive contributions from [Markus Kalkbrenner](https://github.com/mkalkbrenner) and [Jan Vos](https://github.com/pastorl69), who have delivered numerous bug fixes, performance optimizations, and support for additional manufacturers.
This project has been forked from https://github.com/pinballpower/code_dmd. Since the original project changed its license from MIT to GPL v3 on 2022-05-02, the license of this fork is now also GPL v3.
6 changes: 3 additions & 3 deletions platformio.ini
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
[platformio]
default_envs = ppucdmd
default_envs = rp2040

[env:ppucdmd]
[env:rp2040]
platform = https://github.com/maxgerhardt/platform-raspberrypi#79ce473e1a8010ed8096388690222fd2c94858a6
framework = arduino
board = pico
board_build.core = earlephilhower
board_build.filesystem_size = 0.5m

[env:ppucdmd2]
[env:rp2350]
platform = https://github.com/maxgerhardt/platform-raspberrypi#79ce473e1a8010ed8096388690222fd2c94858a6
framework = arduino
board = rpipico2
Expand Down