BBC micro:bit MicroPython MY9221

August 7, 2018 ยท View on GitHub

A micro:bit MicroPython library for 10 segment LED bar graph modules using the MY9221 LED driver.

For example, the Grove - LED Bar module

demo

Installation

  • Install MicroPython for micro:bit by either compiling from source or using one of my precompiled firmwares
  • Install ufs to upload .py scripts
  • Copy my9221.py and one of the example main.py scripts to the micro:bit
  • Reset to run main.py on boot.

Examples

from microbit import *
from my9221 import MY9221
ledbar = MY9221(di=pin1, dcki=pin2, reverse=False)

# all LEDS on, full brightness
ledbar.level(10)

# four LEDS on, half brightness
ledbar.level(4, 0x0F)

# first and last LED on
ledbar.bits(0b1000000001)
ledbar.bits(0x201)
ledbar.bits(513)

# alternating LEDs
ledbar.bits(0b0101010101)
ledbar.bits(0b1010101010)

# fade out LEDs
buf = bytearray([0,1,3,7,15,31,63,127,255,255])
ledbar.bytes(buf)

# reverse orientation, first LED is green
ledbar.reverse(True)
ledbar.level(1)

# normal orientation, first LED is red
ledbar.reverse(False)
ledbar.level(1)

For more detailed examples, see /examples.

Methods

Get or set the orientation. The red LED normally position 1, and when reversed is position 10. Once orientation has been set, all other methods respect the order.

reverse(val=None)

Illuminate a number of LEDs at a specific brightness. A value of 5 would light half of the display.

level(val, brightness=255)

Illuminate LEDs, one bit per LED at a specific brightness. Value can be 0-1023.

bits(val, brightness=255)

Use a bytearray, one byte per LED, to specify individual brightness for each LED.

bytes(buf)

Parts

Connections

micro:bitGrove LED Bar
Pin 1DI (yellow)
Pin 2DCKI (white)
3V3VCC (red)
GNDGND (black)

An edge connector breakout board comes in handy here.

You're welcome to change the data and clock pins to something else - just update MY9221(di=pin1, dcki=pin2) in your main.py

License

Licensed under the MIT License.