立即注册

扫一扫,访问微社区

micropython-microbit 中文社区

查看: 659|回复: 4

microbit 的 MAX7219 驱动

  [复制链接]
  • TA的每日心情
    慵懒
    2018-6-10 15:43
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2018-1-20 09:55:31 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    github上的MAX7219驱动。 https://github.com/titimoby/micr ... aries/matrix7219.py

    1. """
    2. original version by Radomir Dopieralski
    3. https://bitbucket.org/thesheep/micropython-max7219/
    4. modified according to ideas from jezdean
    5. https://github.com/microbit-playground/matrix7seg
    6. """

    7. from microbit import spi

    8. _NOOP = 0
    9. _DIGIT0 = 1
    10. _DIGIT1 = 2
    11. _DIGIT2 = 3
    12. _DIGIT3 = 4
    13. _DIGIT4 = 5
    14. _DIGIT5 = 6
    15. _DIGIT6 = 7
    16. _DIGIT7 = 8
    17. _DECODEMODE = 9
    18. _INTENSITY = 10
    19. _SCANLIMIT = 11
    20. _SHUTDOWN = 12
    21. _DISPLAYTEST = 15

    22. """
    23. sample usage
    24. import microbit
    25. import matrix7219
    26. display = matrix7219.Matrix8x8(microbit.spi, microbit.pin0)
    27. display.fill(True)
    28. display.pixel(2, 2, False)
    29. display.show()
    30. """

    31. class Matrix8x8:
    32.     def __init__(self, spi, cs):
    33.         self.spi = spi
    34.         self.cs = cs
    35.         self.buffer = bytearray(8)
    36.         spi.init()
    37.         self.init()

    38.     def _register(self, command, data):
    39.         # write to display
    40.         self.cs.write_digital(0)
    41.         self.spi.write(bytearray([command, data]))
    42.         self.cs.write_digital(1)

    43.     def init(self):
    44.         for command, data in (
    45.             (_SHUTDOWN, 0),
    46.             (_DISPLAYTEST, 0),
    47.             (_SCANLIMIT, 7),
    48.             (_DECODEMODE, 0),
    49.             (_SHUTDOWN, 1),
    50.         ):
    51.             self._register(command, data)

    52.     def brightness(self, value):
    53.         if not 0<= value <= 15:
    54.             raise ValueError("Brightness out of range")
    55.         self._register(_INTENSITY, value)

    56.     def fill(self, color):
    57.         data = 0xff if color else 0x00
    58.         for y in range(8):
    59.             self.buffer[y] = data

    60.     def pixel(self, x, y, color=None):
    61.         if color is None:
    62.             return bool(self.buffer[y] & 1 << x)
    63.         elif color:
    64.             self.buffer[y] |= 1 << x
    65.         else:
    66.             self.buffer[y] &= ~(1 << x)

    67.     def show(self):
    68.         for y in range(8):
    69.             self._register(_DIGIT0 + y, self.buffer[y])
    复制代码



    手机扫码浏览

    本帖被以下淘专辑推荐:

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-6-10 15:43
  • 签到天数: 4 天

    [LV.2]偶尔看看I

     楼主| 发表于 2018-1-21 15:55:12
    dvsseed 发表于 2018-1-21 08:34
    請教@邵大,如果是 i2c 就不能使用了...

    的确,MAX7219是SPI接口的,需要一个转接板将SPI连接出来。
    支持 1 反对 0

  • TA的每日心情
    开心
    2018-8-4 09:48
  • 签到天数: 103 天

    [LV.6]常住居民II

    发表于 2018-1-21 08:34:07 | 显示全部楼层
    請教@邵大,如果是 i2c 就不能使用了...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-6-20 08:54
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    发表于 2018-5-16 15:30:05 | 显示全部楼层
    可以直接套用到其它micropython开发板上吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-6-10 15:43
  • 签到天数: 4 天

    [LV.2]偶尔看看I

     楼主| 发表于 2018-5-16 15:40:50 | 显示全部楼层
    microCPyE 发表于 2018-5-16 15:30
    可以直接套用到其它micropython开发板上吗?

    可能部分代码需要修改,microbit的mpy版本太低了,一些新的功能不支持。
    回复 支持 反对

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|micropython-microbit 中文社区 ( 鄂ICP备17012469号 )

    GMT+8, 2018-8-21 22:42 , Processed in 0.104143 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表