Class Summary

If you're interested in writing your own code, the easy way is to start with the examples in the code repository (the .py files starting with 'ex_'), but the following information may be helpful as well.


All of the low-level IO and I2C access is passed through, which is used by all of the other classes and examples in the library.  This file implements a class named LEDBackpack, which has the following functions:

  • setBrightness(brightness)
    Sets the display brightness with a value between 0 and 15

  • setBlinkRate(blinkRate)
    Sets the optional blink rate for the display, with one of the following values for blinkRate
    0 = No Blinking
    1 = Blink at 2Hz
    2 = Blink at 1Hz
    3 = Blink at 1/2 Hz

  • setBufferRow(row, value)
    Updates a single row of data.  The HT16K33 contains an internal memory of 8 rows, with each row having 16 bits of data.  Each row generally corresponds to one character on a 7-segment display or one row of pixels on an 8x8 display.

  • getBuffer()
    Returns a list of 8 16-bit values representing the current state of the internal buffer, which can be used to update the display without affecting the rest of the content.

  • clear()
    Clears the contents of the entire buffer


The 7-Segment library is encapsulated in the file, and implements a class named SevenSegment (since class names can't start with a digit).  It instantiates and instance of Adafruit_LEDBackpack internally, and you normally won't need to use the lower level class directly.  It implements the following functions:

  • writeDigitRaw(charNumber, value)
    This will raw a raw 16-bit value to the specified charNumber, which corresponds to a single row in the HT16K33, and one character in the 4x7-segment displays.  (Note: row 2 is the colon on most 4 character displays).  You can use this to display custom characters that aren't supported natively by the current library.

  • writeDigit(charNumber, value, dot=False)
    Writes a single decimal (0..9) or hexadecimal (0..9 and A..F) character to the display, with charNumber being the character to update, and value being the digit.  You can set a third optional argument, dot, to True to set the decimal place after each character.

  • setColon(state)
    You can pass either True of False to this function to enable or disable the colon that is usually connected to row 2 of the HT16K33.

The file implements a class names EightByEight that can be used to drive 8x8 pixel square LED blocks.  It contains the following functions:

  • writeRowRaw(charNumber, value)
    This will update an entire row of data with the specified 16-bit value (though normally only the last 8-bits are used on one-color 8x8 displays.  This is faster than setting individual pixels.

  • setPixel(x, y, color)
    This function will update a single pixel within the relevant X/Y space of the display.  Please keep in mind that lists in Python are zero-based, meaning to sets pixels 1..8 in each direction you actually use the values 0..7, so the following will enable the pixel 3 over and 5 down:
grid = EightByEight(address=0x70)
grid.setPixel(2, 4)


If you need a bit of help, simply looking at the provided example python code:

  1. Displays the current time on a 4*7-segment display, changing the state of the colon every second
  2. Constantly updates every pixel on an 8x8 display, one pixel at a time.
You can run these examples with the following code: 
sudo python
Last updated on 2015-05-04 at 04.27.56 PM Published on 2012-08-24 at 04.17.01 PM