Skip to content

Commit

Permalink
Some more documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
eldstal committed Jan 3, 2024
1 parent f0bd141 commit 2fdad16
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
## Blinkenbox

Look into `pix/` for the latest state of the art.
Some fancy drivers and demos for an IKEA Frekvens LED box, powered by a Raspberry Pi Pico-W

```
$ cd pix/
$ make run
```
### What's so great about this?!
The LED matrix of FREKVENS is based on single-bit shift registers. That means you shift a
serial bit stream of 256 pixel states into it and then LATCH to show the values in the LED
array.

That hardware doesn't support dimming of individual pixels.

This repo implements Binary Code Modulation, as described by SpritesMods [here](https://spritesmods.com/?art=frekvens&page=4) and Batsocks [here](http://www.batsocks.co.uk/readme/art_bcm_3.htm).

The actual driving of the display is done *entirely without* CPU intervention. There are no timers, interrupts or bit-banging involved. In fact, Blinkenbox doesn't even use any of the transceivers on the RP2040 chip!

As a joke, a punishment and a cool trick, the LED driver is implemented entirely in Programmable I/O (see `matrix.py`) and driven by multiple autonomous DMA channels (see `fb.py`). Using these methods, the pico-w is able to display about 2000 raw single-bit images per second. When BCM is added to perform brightness modulation over 32 frames, the system can draw about 62FPS with a 5-bit grayscale depth. This comes at no cost in terms of CPU utilization, since all data shuffling is performed by DMA controllers and Programmable I/O.

## Pinout

Expand All @@ -28,4 +36,4 @@ GP15: Button 2 (Black)
## Interference
Separate the red VSYS cable from the signal wires!! Otherwise you'll likely get strange artefacts when the USB is connected

![Don't mix signals and ](doc/separation.jpg)
![Don't mix signals and power](doc/separation.jpg)

0 comments on commit 2fdad16

Please sign in to comment.