一、目的

这一节我们继续学习如何使用我们的ESP32开发板控制带MAX7219驱动的8x8LED点阵模。我们使用库来显示,更加方便。

二、环境

ESP32 + MAX7219驱动的8x8LED点阵模块 + Thonny IDE + 几根杜邦线 + Win10

接线方法:

三、max7219 8*8点阵屏驱动:

raspberrypi-pico/max7219.py at main · stechiez/raspberrypi-pico · GitHub

max7219.py 

"""
MicroPython max7219 cascadable 8x8 LED matrix driver
https://github.com/mcauser/micropython-max7219
MIT License
Copyright (c) 2017 Mike Causer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""from micropython import const
import framebuf_NOOP = const(0)
_DIGIT0 = const(1)
_DECODEMODE = const(9)
_INTENSITY = const(10)
_SCANLIMIT = const(11)
_SHUTDOWN = const(12)
_DISPLAYTEST = const(15)class Matrix8x8:def __init__(self, spi, cs, num):"""Driver for cascading MAX7219 8x8 LED matrices.>>> import max7219>>> from machine import Pin, SPI>>> spi = SPI(1)>>> display = max7219.Matrix8x8(spi, Pin('X5'), 4)>>> display.text('1234',0,0,1)>>> display.show()"""self.spi = spiself.cs = csself.cs.init(cs.OUT, True)self.buffer = bytearray(8 * num)self.num = numfb = framebuf.FrameBuffer(self.buffer, 8 * num, 8, framebuf.MONO_HLSB)self.framebuf = fb# Provide methods for accessing FrameBuffer graphics primitives. This is a workround# because inheritance from a native class is currently unsupported.# http://docs.micropython.org/en/latest/pyboard/library/framebuf.htmlself.fill = fb.fill  # (col)self.pixel = fb.pixel # (x, y[, c])self.hline = fb.hline  # (x, y, w, col)self.vline = fb.vline  # (x, y, h, col)self.line = fb.line  # (x1, y1, x2, y2, col)self.rect = fb.rect  # (x, y, w, h, col)self.fill_rect = fb.fill_rect  # (x, y, w, h, col)self.text = fb.text  # (string, x, y, col=1)self.scroll = fb.scroll  # (dx, dy)self.blit = fb.blit  # (fbuf, x, y[, key])self.init()def _write(self, command, data):self.cs(0)for m in range(self.num):self.spi.write(bytearray([command, data]))self.cs(1)def init(self):for command, data in ((_SHUTDOWN, 0),(_DISPLAYTEST, 0),(_SCANLIMIT, 7),(_DECODEMODE, 0),(_SHUTDOWN, 1),):self._write(command, data)def brightness(self, value):if not 0 <= value <= 15:raise ValueError("Brightness out of range")self._write(_INTENSITY, value)def show(self):for y in range(8):self.cs(0)for m in range(self.num):self.spi.write(bytearray([_DIGIT0 + y, self.buffer[(y * self.num) + m]]))self.cs(1)

四、演示代码1

from machine import Pin,SPI
import max7219,timespi=SPI(1,1000000,sck=Pin(14),mosi=Pin(13),miso=Pin(19))
MAX=max7219.Matrix8x8(spi,Pin(15),1) #CS-pin15;1代表一块8*8,如果有4块就是4;
MAX.init() #初始化def main():MAX.brightness(7) #亮度0-15MAX.fill(0)  #1全部点亮;0全部灭MAX.show()  #更新显示while True:for i in range(8):'''# 画点MAX.pixel(0,0,1) #行;列;1亮0灭MAX.show()# 画横线MAX.hline(1,2,3,1)MAX.show()# 画竖线MAX.vline(1,2,3,1)MAX.show()# 画线MAX.line(1,2,3,1,1)MAX.show()# 画矩形MAX.rect(1,1,6,6,1)MAX.show()# 画方块MAX.fill_rect(1,1,5,5,1)MAX.show()# 显示文本MAX.text("A",0,0,1)MAX.show()'''# 动态显示文本MAX.fill(0)MAX.text("%.1d"%i,0,1,1) MAX.show()time.sleep_ms(500)if __name__=="__main__":main()

五、演示效果1

六、演示代码2


'''from machine import Pin,SPI
import max7219,timespi=SPI(1,1000000,sck=Pin(14),mosi=Pin(13),miso=Pin(19))
MAX=max7219.Matrix8x8(spi,Pin(15),1) #CS-pin15;1代表一块8*8,如果有4块就是4;
MAX.init() #初始化
'''
import max7219
from machine import Pin,SPI
from time import sleepspi = SPI(1, baudrate=1000000, polarity=1, phase=0, sck=Pin(14), mosi=Pin(13))
ss = Pin(15, Pin.OUT)msg = 'STechiezDIY'
length = len(msg)
#length = length*8
display = max7219.Matrix8x8(spi, ss, 1)
display.brightness(1)   # adjust brightness 1 to 15
display.fill(0)
display.show()
sleep(0.5)while True:'''# 向左滚动for x in range(8, -length, -1):display.text(msg,x,0,1)display.show()sleep(0.10)display.fill(0)# 向右滚动for x in range(-length,-1,1):display.text(msg,x,0,1)display.show()sleep(0.10)display.fill(0)# 向下移动for j in range(length):for y in range(8,-1,-1):display.text(msg[j],0,-y,1)display.show()sleep(0.10)display.fill(0)'''# 向上移动for j in range(length):for y in range(8,-1,-1):display.text(msg[j],0,y,1)display.show()sleep(0.10)display.fill(0)

七、演示效果2

这个大家自己去实验哈。。。

八、参考资料

Raspberry Pi Pico使用MicroPython(7)---用Max7219驱动点阵屏显示图案_leotzf的博客-CSDN博客_micropython max7219蓝牙遥控Max7219点阵屏显示图案和文字.https://blog.csdn.net/weixin_45616112/article/details/122038561九、点阵屏购买

请看上一节文末,谢谢关注!

物联网开发笔记(76)- 使用Micropython开发ESP32开发板之使用MAX7219驱动控制8x8LED点阵模块_魔都飘雪的博客-CSDN博客使用Micropython开发ESP32开发板之使用MAX7219驱动控制8x8LED点阵模块https://blog.csdn.net/zhusongziye/article/details/128960872?spm=1001.2014.3001.5502

物联网开发笔记(77)- 使用Micropython开发ESP32开发板之使用MAX7219驱动控制8x8LED点阵模块(续)相关推荐

  1. MLX90640开发笔记(一)概述及开发资料准备

    现在自己在做红外成像仪的越来越多了,两年前有个井下机电设备运行状态的科研项目,当时使用了AMG8833(8*8像素).前段时间因为公司生产电路板测试需要,打算买一台红外成像仪测量电路板发热是否正常,商 ...

  2. 物联网开发笔记(9)- 使用Wokwi仿真MicroPython on ESP32开发板实现温度和湿度检测并使用屏幕显示

    一.测试环境 我们同样使用在Wokwi网站上选择Micropython with ESP32进行仿真,来进行温度和湿度的检测. ESP32官方技术参考手册: https://www.espressif ...

  3. 基于MicroPython的ESP32开发

    很久前入手了一块ESP32 DEVKIT V1,当时基于C_SDK开发.最近想搞下MicroPython,就又把这块板子找出来了. 一.先下载支持MicroPython的ESP32固件 去MicroP ...

  4. STM32开发笔记77: 内部看门狗长延时的产生

    单片机型号:STM32L053R8T6 开发笔记STM32开发笔记45:看门狗驱动程序的移植介绍了看门狗驱动程序的基本设计方法.今天项目中看门狗的延时时间达到10秒,则实际运行效果只有3秒. 以下是看 ...

  5. Android开发笔记(七十一)区分开发模式和上线模式

    为什么要区分两种模式 许多开发者(包括博主在内)都是闷骚的程序员,为了开发调试方便,常常在代码里加上日志,还经常在页面上各种弹窗提示.这固然有利于发现bug.提高软件质量,但过多的调试信息往往容易泄露 ...

  6. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器 DirectInput专场

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  7. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhmxy555/article/details/8547531 作者:毛星云(浅墨) ...

  8. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8547531 作者:毛星云(浅墨 ...

  9. 【Visual C++】游戏开发笔记三十一 回归季 游戏开发资料整理打包下载 专栏行文思路整理

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

最新文章

  1. C语言求3x3数组对角线元素之和
  2. 图形驱动程序和显卡驱动什么区别_我们常说的计算机驱动程序到底是什么,深入解读驱动程序本质...
  3. 用js取1-100的随机数
  4. ambari删除脚本
  5. 自动提醒IE6访客升级浏览器,
  6. Linux系统编程---4(进程间通信IPC,管道)
  7. 正则表达式的基本语法[转]
  8. php mysql 单例模式_PHP基于单例模式实现的mysql类
  9. 文件实时上传至云服务器的方法,文件实时上传至云服务器的方法
  10. Windows中查找命令的路径 (类似Linux中的which命令)
  11. 织梦DedeCMS使用SQL批量替换文章标题内容
  12. 塞尔达盾反机器人_《塞尔达传说:荒野之息》新手盾反技巧详解攻略
  13. IDEA启动Tomcat报错Address localhost:1099 is already in use解决办法
  14. 每日一小练——高速Fibonacci数算法
  15. Excel下的数据挖掘:学生成绩统计分析实战之总体分析
  16. 苹果开发者账号授权给普通个人苹果账号上架APP
  17. ktv无线服务器,KTV无线网络覆盖方案-无死角WIFI信号全覆盖方法
  18. uniapp + vue3微信小程序开发(6)地图展示
  19. Linux究竟值多少钱?
  20. QQ小游戏接入问题:Uncaught TypeError: wx.saveFile is not a function

热门文章

  1. 【计算机网络】——习题解析:UDP 用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17,试求源端口、目的端口、 用户数据报的总长度、数据部分长度等
  2. 《实时控制软件设计》第一次阅读笔记
  3. 使用无界面方式登录人人网
  4. React使用echarts-for-react
  5. ## IDEA创建maven项目没有src目录问题解决
  6. 【议程公布】2021年MongoDB中文社区南京技术沙龙
  7. linux磁盘无法识别移动硬盘
  8. 爬虫(数据采集与预处理课程)
  9. Linux-终端命令行
  10. 放置图片拼接结果的图像大小设置方法