失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 物联网开发笔记(24)- 使用Micropython开发ESP32开发板之控制8x8点阵屏

物联网开发笔记(24)- 使用Micropython开发ESP32开发板之控制8x8点阵屏

时间:2021-06-24 03:43:36

相关推荐

物联网开发笔记(24)- 使用Micropython开发ESP32开发板之控制8x8点阵屏

上一节我们讲解了如何控制4位数码管,这一节我们来一起学一下如何控制8x8点阵屏显示流水灯和爱心。

一、目的

使用MicroPython开发ESP32控制8x8点阵屏

二、环境

ESP32 + 8x8点阵屏 + Thonny IDE + 电阻8个(200-300欧姆的色环电阻即可)+ 面包板(非必须)+ 十几根杜邦线(母对母8根和母对公16根)

接线原理图(此处为了好画图,我用另外一个元件代替8x8点阵屏,因为它正好上下各也有8个脚):

我实际的接线图:

三、8x8点阵屏介绍

我购买的8x8点阵是单色的,即纯红色。引脚上下2排,每排8根

引脚的说明如下

上图中

C表示column列的意思,所有的C接高电压,即控制esp32中输出1L表示line行row的意思,所有的L接低电压,即控制esp32中输出为0

将上面的L1到L7依次连接到下发开发板图片中的row1到row8,C1到C7依次连接到下发开发板图片中的col1到col8

点阵后面有两排针脚,每排有8个针脚。当某ROW 的针脚为高电平,某COL的针脚为低电平时候,它们交叉点的LED就会被点亮。 为了方便操作行和列,我们可以将ROW的8个引脚接到我们ESP32的左边(即靠近板载红色LED灯的一边)的GPIO口,COL的8个引脚接到我们ESP32的右边的GPIO口。这样我们通过控制各引脚的高低电平就可以控制每一个LED的亮与不亮,这样就可以设计想显示的任何字符和图形,快来试试吧。

四、下面举个例子给大家演示一下4位数码管的使用方法

先上代码,使用Thonny IED开发

import machineimport time# 定义行的针脚row_1 = machine.Pin(32, machine.Pin.OUT)row_2 = machine.Pin(33, machine.Pin.OUT)row_3 = machine.Pin(25, machine.Pin.OUT)row_4 = machine.Pin(26, machine.Pin.OUT)row_5 = machine.Pin(27, machine.Pin.OUT)row_6 = machine.Pin(14, machine.Pin.OUT)row_7 = machine.Pin(12, machine.Pin.OUT)row_8 = machine.Pin(13, machine.Pin.OUT)# 定义行的列表row_list = [row_1, row_2, row_3, row_4, row_5, row_6, row_7, row_8]# 定义列的针脚col_1 = machine.Pin(19, machine.Pin.OUT)col_2 = machine.Pin(18, machine.Pin.OUT)col_3 = machine.Pin(5, machine.Pin.OUT)col_4 = machine.Pin(17, machine.Pin.OUT)col_5 = machine.Pin(16, machine.Pin.OUT)col_6 = machine.Pin(4, machine.Pin.OUT)col_7 = machine.Pin(2, machine.Pin.OUT)col_8 = machine.Pin(15, machine.Pin.OUT)# 定义列的列表col_list = [col_1, col_2, col_3, col_4, col_5, col_6, col_7, col_8]# 定义行的灯的亮灭的函数def set_power_row(i):for row in row_list: # 控制行的亮灭row.value(1)if 0 <= i <= 7: # 控制某行的亮灭row_list[i].value(0)# 定义行的灯的亮灭的函数def set_earth_col(i):for col in col_list: # 控制列的亮灭col.value(0)if 0 <= i <= 7: # 控制某列的亮灭col_list[i].value(1)# 定义流水灯函数def show_liushuideng():# 流水灯for row in range(8): # 循环控制某行的亮灭set_power_row(row)for col in range(8): # 循环控制某列的亮灭set_earth_col(col)time.sleep_ms(100) # 定义箭头图形函数def show_arrow():# 箭头图形img_list = [(1, 4),(2, 5),(3, 6),(4, 0), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (4, 7),(5, 6),(6, 5),(7, 4)]# 让箭头从左向右移动while True:for i in range(-7, 8):for j in range(5):for x, y in img_list: set_power_row(x) # 控制行的亮灭set_earth_col(y + i) # 列加1,让其实现向右滚动的效果time.sleep_ms(1)if __name__ == "__main__":show_liushuideng()show_arrow()

五、演示效果(实际效果)

六、下面演示显示心形的代码(方法一)

from machine import Pinimport timeimage = ['11111111', '11011101', '10001000', '10000000', '10000000', '11000001', '11100011', '11110111']x_p = [Pin(32,Pin.OUT), Pin(33,Pin.OUT), Pin(25,Pin.OUT), Pin(26,Pin.OUT), Pin(27,Pin.OUT), Pin(14,Pin.OUT), Pin(12,Pin.OUT), Pin(13,Pin.OUT)]y_p = [Pin(19,Pin.OUT), Pin(18,Pin.OUT), Pin(5,Pin.OUT), Pin(17,Pin.OUT), Pin(16,Pin.OUT), Pin(4,Pin.OUT), Pin(2,Pin.OUT), Pin(15,Pin.OUT)]def displayLED():flag = 1for x in range(1, 9):for b in range(1, 9):if b != flag:temp = x_p[int(b - 1)]temp.value(1)li_l = image[int(x - 1)]for k in range(1, 9):temp = y_p[int(k - 1)]if li_l[int(k - 1)] == '1':temp.value(0)else:temp.value(1)temp = x_p[int(flag - 1)]temp.value(0)flag = flag + 1time.sleep_ms(2)returnwhile True:displayLED()

七、下面演示显示心形的代码(方法二)

from machine import Pinimport timex_PIN = [Pin(i, Pin.OUT) for i in [32,33,25,26,27,14,12,13]]y_PIN = [Pin(i, Pin.OUT) for i in [19,18,5,17,16,4,2,15]]hanzi=['11111111','11011101','10001000','10000000','10000000','11000001','11100011','11110111']def displayLED():flag = 0for x_ in range(0,8):for b in range(0,8):# print(b)if b != flag:x_PIN[b].value(1)li_l = hanzi[x_]y_PIN[0].value(int(li_l[:1]))y_PIN[1].value(int(li_l[1:2]))y_PIN[2].value(int(li_l[2:3]))y_PIN[3].value(int(li_l[3:4]))y_PIN[4].value(int(li_l[4:5]))y_PIN[5].value(int(li_l[5:6]))y_PIN[6].value(int(li_l[6:7]))y_PIN[7].value(int(li_l[7:8]))x_PIN[flag].value(0)flag = flag + 1time.sleep_ms(2)while 1:displayLED()

显示效果:

八、在七的基础上改下下面这一行

hanzi = ['00000000','00100010','01110111','01111111','01111111','00111110','00011100','00001000']

显示效果:

哈哈哈,你有没有发现点什么,努力学习哈。。。

如果觉得《物联网开发笔记(24)- 使用Micropython开发ESP32开发板之控制8x8点阵屏》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。