You must set the board address with the DIP switches first. There are 512 register addresses in the 9-bit address space.
- address lines 3..0 identify a register on a BlinkenBoard.
- address lines 8..4 are the DIP switch address of the board. They are setup with DIP switch 4-8, see image.
The further examples assume the board address is set to 0 (like in the image), so usable registers addresses are 0x000 to 0x00f.
A BlinkenBoard has 11 digital output registers and 5 digital input registers, each with 8 terminals.
Notice that the "Pin 0" orientation is different for OUT6 to OUT10.
The Input registers IN0-IN4 can be queried by reading address 0x000 to 0x004, the outputs OUT0 -OUT10 can be set by writing to 0x000 to 0x00a.
When writing to the outputs, keep in mind that driver chips are needed, and that the drivers are either "high-side" or "low-side". High side drivers are ULN2981 and switch their terminals to the "IO-voltage" Vio. Low-side drivers are ULN 2803 and switch to ground. Low-side drivers invert the signal: A logic "high" on the input means "switch to Ground", resulting in a Low-level.
Driver types can be mixed. You have to set the driver-selection jumpers properly for each chip. For low-side drivers, jumpers are set "to the left":
The BlinkenBoard just needs +3.3V for its logic. But even if you use low-side drivers (without Vio), you have to connect +5V to the BlinkenBoard. This voltage is needed by the input protection circuits.
When using high-side drivers, you need also to connect the "IO-Voltage" (Vio). This is the voltage routed to the terminals, it can be different from the +3.3V resp +5V on the board. Special versions of ULN2981 (ULN2984LW) can switch up to 80 Volts! Of course you can also connect Vio to +5V on the big screw-terminal.