MicroPython:基于TPYBoard集合MAX7219点阵模块制作表白女神神器
转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇
前言
又是一年毕业季,只有到了毕业季才会意识到自己又离青春远了一大步。毕业后,大家都各奔东西了,如果这个时候有喜欢的人还是藏在心底的话,不免会给人生留下遗憾。为了不留遗憾,不老套,制作一款表白神器,是不是会更容易表白成功呢?
之前使用8*8LED点阵模块做过一款跳动的心,因为是直接用的点阵模块,所以控制就用了16个IO,未免有些繁琐,浪费资源。最近发现了一个好东西——MAX7219多位LED 显示驱动器。使用该驱动器加上点阵屏或者数码管,驱动起来特别方便简单,而且加上电源脚也不过就5根线而已。
MAX7219介绍
MAX7219 是美国MAXIM 公司推出的多位LED 显示驱动器,采用3 线串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED 显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8个数字的显示数据。显然,它可直接驱动64 段LED点阵显示器。当多片MAX7219 级联时,可控制更多的LED点阵显示器。显示的数据通过单片机数据处理后,送给MAX7219 显示。
引脚图:

当然了,直接拿到这个驱动器一时也不知道该怎么用,于是就直接买了现成的MAX7219驱动器结合8*8LED点阵屏模块。


看反面图可以看出,该模块不仅有DIN输入端口还有DOUT输出端口,用于多个模块级联。使用的单个模块时,开发板只接入模块的输入端口即可;当多个模块级联时,第一个模块的输出端口接第二个模块的输入端口,第二个输出端口接第三个输入端口,依次类推。
制作过程
话不多说了,马上动手实践起来。接线很简单,见下表:
| TPYBoard v102 | MAX7219点阵模块 |
| VIN | VCC |
| GND | GND |
| X3(普通IO都可) | DIN |
| X2 | CS |
| X1 | CLK |
TPYBoard v102开发板若没有使用过,附上链接看先了解下。http://docs.tpyboard.com/zh/latest/tpyboard/tutorial/v10x/sta
rt/
程序呈上:
主程序 main.py。
import MAX7219 #导入模块 #CLK -> X1,CS -> X2,DIN -> X3
#num级联的模块数量
led = MAX7219.Lattice('X1','X2','X3',num=1)
#要显示的内容,显示的内容根据字库文件而定,见font_max7219.py。
#大家也可以自定义图案添加上。
msg = 'LOVE大小' while True:
#显示
led.display(msg)
字库文件 font_max7219.py。
FONT8_8= {
'':[0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C],#
'':[0x10,0x18,0x14,0x10,0x10,0x10,0x10,0x10],#
'':[0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E],#
'':[0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0],#
'':[0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8],#
'':[0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0],#
'':[0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0],#
'':[0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8],#
'':[0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E],#
'':[0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E],#
'A':[0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22],#A
'B':[0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0],#B
'C':[0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0],#C
'D':[0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0],#D
'E':[0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C],#E
'F':[0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40],#F
'G':[0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C],#G
'H':[0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44],#H
'I':[0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C],#I
'J':[0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30],#J
'K':[0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24],#K
'L':[0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C],#L
'M':[0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81],#M
'N':[0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0],#N
'O':[0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C],#O
'P':[0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20],#P
'Q':[0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D],#Q
'R':[0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21],#R
'S':[0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C],#S
'T':[0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8],#T
'U':[0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C],#U
'V':[0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18],#V
'W':[0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0],#W
'X':[0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41],#X
'Y':[0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8],#Y
'Z':[0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F],#Z
'大':[0x00,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x00],#大心
'小':[0x00,0x00,0x66,0x7E,0x3C,0x18,0x00,0x00],#小心
'中':[0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8],#中
'国':[0xFE,0xBA,0x92,0xBA,0x92,0x9A,0xBA,0xFE],#国
}
模块驱动程序max7219.py就不在这里呈现了,文章末有链接,大家可以去下载。
演示效果
https://v.qq.com/x/page/n08814kmrfc.html
无线遥控升级版
这样虽然已经很炫了,不过加上无线遥控的效果是不是就更棒了。于是,找来了以前买的HC-05(HC-06也一样)蓝牙模块,结合一下整上。
蓝牙模块的连接线:
| TPYBoard v102 | HC-05/06蓝牙模块 |
| VIN | VCC |
| GND | GND |
| Y1 | RX |
| Y2 | TX |
其他文件不用动,改动下main.py,增加上串口读写操作即可。
import MAX7219 #导入模块
from pyb import UART
#初始化串口参数,使用串口6 波特率9600 超时时间50毫秒
#串口6 TX->Y1 RX->Y2
#其他串口对应的引脚编号详见针脚图:http://old.tpyboard.com/document/documents/10x/TPYBoardv10xPCBpng.pdf
uart = UART(6,9600,timeout=50) #CLK -> X1,CS -> X2,DIN -> X3
#num级联的模块数量
led = MAX7219.Lattice('X1','X2','X3',num=1)
led.display('大') #默认显示大心图案
while True:
if uart.any() > 0: #any()返回串口缓存区的数据长度,返回值大于0即表示有数据
DATA = uart.read().decode() #读取缓存区全部数据,返回值为bytes,decode()转为字符串
led.display(DATA) #进行显示
蓝牙串口调试助手(Android)下载地址:http://old.tpyboard.com/download/tool/164.html
表白神器源码下载地址:https://github.com/TPYBoard/TPYBoard-v102
MicroPython:基于TPYBoard集合MAX7219点阵模块制作表白女神神器的更多相关文章
- 基于Vue的工作流项目模块中,使用动态组件的方式统一呈现不同表单数据的处理方式
在基于Vue的工作流项目模块中,我们在查看表单明细的时候,需要包含公用表单信息,特定表单信息两部分内容.前者表单数据可以统一呈现,而后者则是不同业务的表单数据不同.为了实现更好的维护性,把它们分开作为 ...
- openerp模块收藏 基于Lodop的报表打印模块(转载)
基于Lodop的报表打印模块 原文:http://shine-it.net/index.php/topic,7397.0.html 前段时间写了个小模块,来解决OE中报表打印不方便的问题.借鉴了 @b ...
- 基于busybox的Linux小系统制作 (initrd)
我们有时候有需要在busybox基础上,制作linux,可是却不知道具体怎么做,这里将对基于busybox的linux小系统制作做出详细的步骤说明.准备环境:1.一个Redhat完整系统的虚拟机,本次 ...
- 用Synoptic Panel自定义基于图形的可视化控件--制作一张剧场售票统计报表
数据可视化的一大特点就是能给报表使用者带来感官上的享受.不再是枯燥的数字,而变成一个一个亮丽的图形.之前业界大神公布过一个统计Car Accidents的报表,这个Power BI Report的特点 ...
- 基于FPGA的VGA可移植模块终极设计【转】
本文转载自:http://www.cnblogs.com/lueguo/p/3373643.html 略过天涯 基于FPGA的VGA可移植模块终极设计 一.VGA的诱惑 首先,VGA的驱动,这事, ...
- 玩转u8g2 OLED库 MAX7219_32X8点阵模块
u8g2 OLED库 + MAX7219_32X8点阵模块 理论基础 玩转u8g2 OLED库,一篇就够 玩转u8g2 OLED库,一篇就够(字数太多 要分篇) 实验内容 Full screen bu ...
- Magisk了解以及简单的模块制作
Magisk,就是刷机经常会需要使用的,也是就是我们说的面具或者脸谱.因为它的logo就是面具或者说脸谱.我们先简单了解一下: XDA上论坛的说明:Magisk - The Universal Sys ...
- 基于url-to-pdf-api构建docker镜像,制作一个网页另存服务
基于url-to-pdf-api构建docker镜像,制作一个网页另存服务 业务背景: 需要根据一个url路径打印这个网页的内容 解决方案: 1.使用wkhtml2pdf 2.使用puppeteer ...
- Go Module实战:基于私有化仓库的GO模块使用实践
新年开工近一月,2021 年第一期 Open Talk 定档 3 月 18 日晚 8 点,本期我们邀请到了又拍云资深后端开发工程师刘云鹏和我们一起聊聊 Go 最新特性 Go Module 实战. 刘云 ...
随机推荐
- pandas 学习 第8篇:Index 对象 - (创建、转换、排序)
Index对象负责管理轴标签.轴名称等元数据,是一个不可修改的.有序的.可以索引的ndarry对象.在构建Sereis或DataFrame时,所用到的任何数据或者array-like的标签,都会转换为 ...
- 用Python进行数据清洗,这7种方法你一定要掌握
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者 | 常国珍.赵仁乾.张秋剑 来源 |<Python数据科学:技术 ...
- django实现客户端文件下载
基于django项目,由于不是专门讲文件的下载,这里仅是项目需要,所以可能不是特别的详细.仅做流程的演示: 实现过程: 1.准备下载url # 下载文件 url(r'^download_file/$' ...
- 易优CMS:小白学代码之notempty
[基础用法] 名称:notempty 功能:判断某个变量是否为空,可以嵌套到任何标签里面使用,比如:channel.type等 语法: {eyou:notempty name='$eyou.field ...
- 究竟是什么毁了我的impl实现
Impl模式早就有过接触(本文特指通过指针完成impl),我晓得它具有以下优点: 减少头文件暴露出来的非必要内部类(提供静态库,动态库时尤其重要): 减小文件间的编译依存关系,大型代码库的编译时间就不 ...
- MySQL 设置表注释
新增表增加注释 CREATE TABLE sys_tables ( owner ) NOT NULL COMMENT '归属用户', table_name ) NOT NULL COMMENT '表名 ...
- (入门SpringBoot)SpringBoot项目事务(三)
Spring声明式事务的使用:由@Transactional进行标注,可以使用在类和方法上.当标注在类上,类下面所有公共非静态的方法都将启用事务功能.接下来,运行事务注解标注的方法,Spring的事务 ...
- STL关联容器的基本操作
关联容器 map,set map map是一种关联式容器包含 键/值 key/value 相当于python中的字典不允许有重复的keymap 无重复,有序 Map是STL的一个关联容器,它提供一对一 ...
- 高阶JS---函数柯里化
什么是函数柯里化? 百度百科: 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术.通 ...
- Jmeter+Jenkins的HTML报告中添加QPS、90%栏目显示
1.进入jmeter/extras目录,修改 jmeter-results-detail-report_21.xsl 2.打开文件 在summary部分修改如下: 在pagelist部分修改如下: ...