Files
drunkendotfiles/vendor/ltp305-python/REFERENCE.md
dissimulo 030172f523 Initial backup of LTP-305G matrix clock setup on matrixpi
Captures everything needed to redeploy the two-display clock (hour on I2C
0x61, minute on I2C 0x63) on a fresh Pi:

- Both systemd units (matrix0x61.service, matrix0x63.service)
- Deployed Pimoroni script tree, including the local %I (12-hour) clock
  customization
- Vendored upstream sources (ltp305-python, breakout-garden) so restore is
  fully offline-capable
- Boot config snippet enabling I2C
- install.sh that wires it all back up idempotently
- Inventory doc cross-referencing every live-system path

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 01:32:39 -07:00

128 lines
2.8 KiB
Markdown

# Pimoroni LTP305 LED Matrices Breakout <!-- omit in toc -->
The LTP305 breakout includes two LTP305 displays and an i2c dual matrix driver to drive them.
- [Getting Started](#getting-started)
- [Pre-requisites](#pre-requisites)
- [Python 3 & pip](#python-3--pip)
- [Enabling i2c](#enabling-i2c)
- [Installing the library](#installing-the-library)
- [Reference](#reference)
- [set_pixel](#set_pixel)
- [set_decimal](#set_decimal)
- [set_character](#set_character)
- [set_image](#set_image)
- [get_shape](#get_shape)
- [clear](#clear)
- [show](#show)
## Getting Started
You'll need to install the LTP305 software library and enable i2c on your Raspberry Pi.
### Pre-requisites
#### Python 3 & pip
You should use Python 3, which may need installing on your Pi:
```
sudo apt update
sudo apt install python3 python3-pip
```
#### Enabling i2c
You can use `sudo raspi-config` on the command line, the GUI Raspberry Pi Configuration app from the Pi desktop menu, or use the following command to enable i2c:
```
sudo raspi-config nonint do_i2c 0
```
### Installing the library
```python
python3 -m pip install ltp305
```
## Reference
In all cases you'll want to create an instance of the LTP305 class with the appropriate i2c address for your device.
The following addresses are available:
* `0x61` - Default address
* `0x62` - Solder bridge applied to Addr+1
* `0x63` - Cut Addr+2
```python
from ltp305 import LTP305
display = LTP305(address=0x61)
```
### set_pixel
Set a single pixel. Treats both matrices as a single display that's 10 pixels wide and 7 pixels high.
```python
display.set_pixel(0, 0, 1)
display.show()
```
### set_decimal
Set the decimal dot on one or both matrix displays:
```python
display.set_decimal(left=True, right=False) # Just the left
display.set_decimal(left=False, right=True) # Just the right
display.set_decimal(left=True, right=True) # Both
display.show()
```
### set_character
The library includes a font with a range of ASCII and Unicode characters, each matrix can display a single character.
```python
display.set_character(0, "a")
display.set_character(5, "b")
display.show()
```
### set_image
Set a 1-bit PIL image to the display.
```python
from PIL import Image, ImageDraw
image = Image.new("1", display.get_shape())
draw = ImageDraw.draw(image)
draw.rectangle((0, 0, 4, 6), 1)
display.set_image(image)
display.show()
```
### get_shape
Return the width and height of the display:
```python
width, height = display.get_shape()
```
### clear
Clear the display. Sets all pixels in the buffer to 0 (off). You must call `show()` to update the display.
```python
display.clear()
```
### show
Once you've finished setting pixels or drawing characters into the buffer, you must call `show` to update the matrices with the buffer:
```python
display.show()
```