python点阵显示数字_led点阵——字母显示(可拓展,python脚本)
1.led点阵原理....
老师给的led点阵是8*8的..
我把他们理解为坐标,有几个引脚的来控制选择y轴的灯,而其他几个是控制显示x轴哪个亮
这个原理跟2位8段led差不多,x轴的可以理解位8个灯管,而y轴的理解为选择。
我们要驱动它显示字母,就要用到时分复用,这个在之前实验都用到了,就不在多讲,直接类比到这个点阵,每次选择一个y轴,然后亮x轴的灯,然后灭了,再下一行,这一速度快了看起来就是连续的了!
附上我探索得到的led点阵的引脚与显示的关系:(手工做图,比较丑陋)
2.与树莓派GPIO连接
由于我的树莓派引脚有两个有点问题,所以我就用了10个引脚来控制5*5的led灯
树莓派GPIO示意图:(因为我用的是Rpi.GPIO的库,所以用这个图)
其对应的关系如下:
pin{7,11,13,19,21}对应的是led的y轴,
pin{23,26,24,22,12}对应的是led
的 x轴,
如下图:
3.设计字母
这次设计字母,用到了图形学的二值图(说的那么高端其实就是小孩子图格子)....
A:
00100
01010
11111
10001
10001
这应该很明显 就是亮的格子是1,不亮是0..然后设计26个字母,用以上的方式对他们进行编码....
4.连接好一切之后就是写python脚本了
这个做过led
8段数码管的驱动的来说应该很简单(道相同!)
另外这次脚本读外部的data文件,使得脚本拓展性强了,可以任意拓展
ab.py:
import RPi.GPIO as GPIO
import sys
import string
import time
GPIO.setmode(GPIO.BOARD)
SUM = 0
gpioy = [7,11,13,19,21] #y
gpiox = [23,26,24,22,12]#x
table = {}#data!
alpha = []
def init():
global SUM
for line in open("./data"):
t = line.split(',') #t[0] key,t[1] + t[2] value1
key = t[0]
value = t[1],t[2],t[3],t[4],t[5]
table[key] = value #append
alpha.append(key)
SUM = SUM +1
def setx(a):
#light x!
#a='00100' do nothing
for i in range(0,4+1):
o = string.atoi(a[i])
if o==1:
GPIO.output(gpiox[i],GPIO.LOW)
def downx(a):
for i in range(0,4+1):
o = string.atoi(a[i])
if o==1:
GPIO.output(gpiox[i],GPIO.HIGH)
if __name__ == "__main__":
#sys.argv[1]
init()
GPIO.setwarnings(False)
#set to output!
for i in range(0, 4 + 1):
GPIO.setup(gpioy[i],GPIO.OUT)
GPIO.setup(gpiox[i],GPIO.OUT)
GPIO.output(gpioy[i],GPIO.LOW)
GPIO.output(gpiox[i],GPIO.HIGH)
for k in range(0,SUM):
n = table[alpha[k]]
print alpha[k]
i = 0
while i<1000:
a = n[0]
setx(a)
GPIO.output(gpioy[0],GPIO.HIGH)
downx(a)
GPIO.output(gpioy[0],GPIO.LOW)
a = n[1]
setx(a)
GPIO.output(gpioy[1],GPIO.HIGH)
downx(a)
GPIO.output(gpioy[1],GPIO.LOW)
a = n[2]
setx(a)
GPIO.output(gpioy[2],GPIO.HIGH)
downx(a)
GPIO.output(gpioy[2],GPIO.LOW)
a = n[3]
setx(a)
GPIO.output(gpioy[3],GPIO.HIGH)
downx(a)
GPIO.output(gpioy[3],GPIO.LOW)
a = n[4]
setx(a)
GPIO.output(gpioy[4],GPIO.HIGH)
downx(a)
GPIO.output(gpioy[4],GPIO.LOW)
i = i+1
data:(只要在文本后面按格式加入想要的符号和编码就能显示啦!方便又好玩)
a,00100,01010,11111,10001,10001
b,11110,10001,11110,10001,11110
c,00111,01000,10000,01000,00111
d,11100,10010,10001,10010,11100
e,11111,10000,11111,10000,11111
f,11111,10000,11111,10000,10000
g,11111,10000,10001,10001,11111
h,10001,10001,11111,10001,10001
i,01110,00100,00100,00100,01110
j,01110,00100,00100,00100,01100
k,10001,10010,11100,10010,10001
l,10000,10000,10000,10000,11111
m,10001,11011,10101,10001,10001
n,10001,11001,10101,10011,10001
o,01110,10001,10001,10001,01110
p,11110,10001,11110,10000,10000
q,01110,10001,10101,10001,01110
r,11110,10001,11110,10010,10001
s,11111,10000,11111,00001,11111
t,11111,00100,00100,00100,00100
u,10001,10001,10001,10001,11111
v,10001,10001,10001,01010,00100
w,10001,10001,10101,11011,10001
x,10001,01010,00100,01010,10001
y,10001,01010,00100,00100,00100
z,11111,00010,00100,01000,11111
5.效果
URL:
http://v.youku.com/v_show/id_XNTY2MTk3NDA0.html
python点阵显示数字_led点阵——字母显示(可拓展,python脚本)相关推荐
- python数值计算guess_【python】猜数字game,旨在提高初学者对Python循环结构的使用...
import random #引入生成随机数的模块 ''' 需求:程序设定生成 1-20 之间的一个随机数,让用户猜 日期:2019-10-21 作者:xiaoxiaohui 目的:猜数字game, ...
- python自动化常用数字_Python全栈自动化系列之Python编程基础(基本数据类型)
一.数值类型数据 1.整数(int):整数 2.浮点数(float):小数 3.布尔值(bool):只有两个值True和False 二.数据类型转换 1.整数和浮点数转换成字符串:使用str 2.字符 ...
- python命名规则数字开头的成语_浅谈Python中带_的变量或函数命名
搜索热词 Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就 ...
- python 提取一个单词的所有字母_如何用python提取单词(正则表达式or分割)
"What brings u here today!"(今天什么风把你吹过来了!),相信大家也是遇到和我一样的难题了吧,想把字母提取出来很简单,但是想把整个单词(还不是相同的单词) ...
- python中矩阵的表示方法_在python中创建数字的二进制表示形式的矩阵 - python
为了在鼠尾草中编程汉明鳕鱼(基于python的编译器),我需要创建一个矩阵,其中每一列都是数字的二进制表示形式 说Hamming(3)矩阵应该像这样 0 0 0 1 1 1 1 0 1 1 0 0 1 ...
- python输出字符串中的大写字母_如何在python中查找字符串中的大写字母
我想在一个字符串的任何位置找到大写字母,我想如果一个字符串在一个字符串的任何位置由大写字母组成,那么应该打印字符串"1",如果字符串在任何位置不包含任何大写字母,那么应该打印字符串 ...
- 使用74LS245驱动8×8LED点阵屏显示数字
使用8×8LED点阵屏显示数字. 点阵取模使用软件PCtoLCD2002取模软件,使用74LS245驱动点阵. 取模方式:阴码.列行式.顺位.C51格式. 取模软件的设置: 电路原理图: 代码: ...
- 加一计时器——每隔1s六位数码管显示数字加1,直至999999,之后归零,重新开始。
加一计时器 2021-01-23,51单片机学习笔记 每隔1s六位数码管显示数字加1,直至999999,之后归零,重新开始. 代码: #include <reg52.h> #define ...
- python获取输入数字_python获取从命令行输入数字的方法
本文实例讲述了python获取从命令行输入数字的方法.分享给大家供大家参考.具体如下: #---------------------------------------- # Name: numeri ...
最新文章
- 看漫画学python 豆瓣_看漫画就能学好python?
- 洛谷 P3368 【模板】树状数组 2
- python正则re
- 程序员过关斩将--领导说我的类的职责不单一
- Qt图形界面编程入门(创建一个简单的程序)
- JPA 多条件、多表查询
- sap 标准委外和工序委外_SAP那些事-实战篇-74-公司间委外的几种方式探讨
- 聊聊flink的KvStateRegistryGateway
- matlab imcrop 细节分析
- vue里面使用echarts实现根据浏览器屏幕大小自适应
- 【《Real-Time Rendering 3rd》提炼总结】完结篇:系列合集电子书PDF下载实时渲染知识网络图谱新系列预告
- smaba(跨平台文件共享)
- 【论文解读 WSDM 2018 | SHINE】Signed HIN Embedding for Sentiment Link Prediction
- 新iPhoneSE开卖市场预期不一?二手市场已降价转售
- 数据库中的CAP原理
- Jupyter Notebook 删除不需要的 Kernels
- Javascript与多线程
- AM Best将中国再保险(集团)股份有限公司及其子公司的发行人信用评级展望调整为正面,并确认中国再保险(香港)股份有限公司的信用评级
- 西门子消防主机FC18配套CAN光端机进行光纤冗余环网组网测试
- Vue 项目 build 流程解析(webpack工具解析)
热门文章
- dna分子结构具有抽象_新技术活动,抽象是具有远见的
- 南大通用GBase 8s优势介绍
- ECG信号读取,检测QRS,P,T 波(基于小波去噪与检测),基于BP神经网络的身份识别
- 半天打造小型万能OA办公系统, 靠的就是万能表单提交 + 轻量级工作流审批组件...
- ubuntu用Docker部署kafka消息服务
- aerospike数据库的使用
- 图解HTTP读书笔记(十)
- 二、软考2017年下半年软件设计师易错题整理
- 管家婆 mysql_管家婆数据库表.doc
- 关于完全卸载Office的一些记录