Linux数码管和点阵程序,随笔:python turtle绘制八段数码管和共阳极8x8led点阵

为更新而更新,为保持更新状态而更新。

给学生讲解用gpiozero库控制八段管和8x8共阳极LED点阵。已经讲解了单个LED的控制,RGB彩色灯珠的控制,在讲解八段管就很容易理解,多个八段管的讲解稍微麻烦一点,然后LED点阵为了便于理解,绘制了演示程序,可以演示行扫描图案变化过程,以及设置阳极高低引脚图案的变化。8短数码管的很简单,LED点阵的略复杂。

模拟共阴极八段数码管

bb5a1f801fb2

image.png

from turtle import *

speed(0)

sega = Turtle()

sega.pu()

sega.goto(0, 300)

w = 150

h = 20

def rect(t,flag=True, fill=False):

for i in range(2):

if fill:

t.begin_fill()

if flag:

t.fd(w)

t.rt(90)

t.fd(h)

t.rt(90)

else:

t.fd(h)

t.rt(90)

t.fd(w)

t.rt(90)

if fill:

t.end_fill()

sega.pd()

rect(sega)

segg = Turtle()

segg.pu()

segg.goto(0, 120)

segg.pd()

rect(segg)

segd = Turtle()

segd.pu()

segd.goto(0, -65)

segd.pd()

rect(segd)

segb = Turtle()

segb.pu()

segb.goto(130, 275)

segb.pd()

rect(segb, False)

segc = Turtle()

segc.pu()

segc.goto(130, 90)

segc.pd()

rect(segc, False)

sege = Turtle()

sege.pu()

sege.goto(0, 90)

sege.pd()

rect(sege, False)

segf = Turtle()

segf.pu()

segf.goto(0, 275)

segf.pd()

rect(segf, False)

segh = Turtle()

segh.pu()

segh.goto(180, 30)

segh.pd()

rect(segh, False)

zero = [1, 1, 1, 1, 1, 1, 0, 0]

one = [0, 1, 1, 0, 0, 0, 0, 0]

two = [1, 1, 0, 1, 1, 0, 1, 0]

three = [1, 1, 1, 1, 0, 0, 1, 0]

four = [0, 1, 1, 0, 0, 1, 1, 0]

five = [1, 0, 1, 1, 0, 1, 1, 0]

segs = [sega, segb, segc, segd, sege, segf, segg, segh]

dirt = [True, False, False, True, False, False, True, False]

for seg in segs:

seg.speed(0)

for i in range(8):

if five[i] == 1:

rect(segs[i], flag=dirt[i], fill=True)

else:

rect(segs[i], flag=dirt[i], fill=False)

bb5a1f801fb2

image.png

模拟共阳极8x8led点阵

bb5a1f801fb2

image.png

from turtle import *

tracer(40, 2)

class LED():

def __init__(self, x, y, r=15):

self.r = r

self.neg = 0

self.pos = 0

self.t = Turtle()

self.t.pu()

self.t.goto(x, y)

self.t.speed(0)

self.t.ht()

self.setNeg(self.neg)

self.display()

def setNeg(self, value):

self.neg = value

self.display()

def display(self):

if self.neg == 1:

self.t.color((0.4, 0.4, 0.4), (1, 0, 0))

else:

self.t.color((0.4, 0.4, 0.4), 'white')

self.t.begin_fill()

self.t.pd()

self.t.circle(self.r)

self.t.pu()

self.t.end_fill()

offx = -200

offy = 200

leds = []

gap = 50

color((0.4, 0.4, 0.4))

pu()

goto(offx - gap/2, offy + 3*gap/4)

pd()

begin_fill()

for i in range(4):

fd(8 * gap)

rt(90)

end_fill()

##for row in range(8):

## led_row = []

## for col in range(8):

## led = LED(offx + gap * col, offy - gap * row)

## # led.display()

## led_row.append(LED(offx + 20 * col, offy - 20 * row))

## leds.append(led_row)

for j in range(8):

row = []

for i in range(8):

led = LED(offx + gap * i, offy - gap * j)

row.append(led)

leds.append(row)

from time import sleep

heart =[

[0, 0, 0, 0, 0, 0, 0, 0],

[0, 1, 1, 0, 0, 1, 1, 0],

[1, 1, 1, 1, 1, 1, 1, 1],

[1, 1, 1, 1, 1, 1, 1, 1],

[0, 1, 1, 1, 1, 1, 1, 0],

[0, 0, 1, 1, 1, 1, 0, 0],

[0, 0, 0, 1, 1, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0],

]

heart_sm =[

[0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0],

[0, 1, 1, 0, 0, 1, 1, 0],

[1, 1, 1, 1, 1, 1, 1, 1],

[1, 1, 1, 1, 1, 1, 1, 1],

[0, 1, 1, 1, 1, 1, 1, 0],

[0, 0, 1, 1, 1, 1, 0, 0],

[0, 0, 0, 1, 1, 0, 0, 0],

]

while True:

for row in range(8):

for col in range(8):

leds[row][col].setNeg(heart[row][col])

leds[row][col].display()

for row in range(8):

for col in range(8):

leds[row][col].setNeg(heart_sm[row][col])

leds[row][col].display()

bb5a1f801fb2

image.png

bb5a1f801fb2

image.png

bb5a1f801fb2

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux管理外部工具,linux – 除了iptables之外的数据包管理工具?

我正在寻找可以根据一组规则改变网络数据包的有效内容的linux实用程序.理想情况下,我会使用iptables和netfilter内核模块,但它们不支持通用的有效负载调整:iptables会改变各种头域(地址,端口,TOS等),并且可以匹配数据包中的任意字节,但是它显然无法改变数据包内的任…

一个公网ip多少钱_一个丛书书号多少钱

点击上方“蓝字”,发现更多精彩。联系我们,有惊喜!!本站点提供:学术出书、自费出书,出版指南攻略、编审润色书稿等服务。如需了解详情,请加责编微信:xueshuzhishi出版出书&#xff0…

嵌入式linux镜像,使用Openembedded定制嵌入式Linux镜像

关键词:ARM,Linux,Openembedded作者:ByToradex秦海摘要:嵌入式设备采用Embedded Linux操作系统进行开发已经越来越成为主流,但是如何将开发完成的Linux uboot/kernel配置,以及应用程序整合到Embedded Linux镜像中以便在…

pythonhtml生成word_python如何实现word批量转HTML

今天我们说一下使用python将word内容转换成html文件。下面一起来看一下。准备工作使用python类库PyDocX,安装方法(使用pip进行安装),命令如下:类库介绍python-docx是用于创建和更新Microsoft Word(.docx)文件的Python库。它可以针对word做很多…

linux安装 中文乱码怎么解决方法,Linux安装GBK/GB2312程序显示乱码的五种解决方法...

不少用户在Linux系统中安装GBK或GB2312的时候遇到了乱码问题,这主要是系统默认语言是uft8所导致,对于该问题可用五种方法进行解决,接下来是小编为大家收集的Linux安装GBK/GB2312程序显示乱码的五种解决方法,希望能帮到大家。Linux…

关于python序列类型的通用操作符_Python—语法基础(3) 序列类型及操作

序列类型:一维元素向量,元素类型可以不同,通过下标访问序列的特定元素,字符串类型、元组类型、列表类型属于序列类型序列类型通用操作符:x in s         如果x是序列s的元素,返回True,否…

linux 设备驱动总结,linux设备驱动归纳总结(三):3面向对象思想和lseek

linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现一、结构体structfile和struct inode在之前写的函数,全部是定义了一些零散的全局变量。有没有办法整合成到一个结构体当中?这样的话,看起来和用起来都比较方便。接…

idea junit 测试看不到控制台报错信息_高手都这么给 Spring MVC 做单元测试!

本章节主要讲解以下两部分内容:1、Mock 测试简介2、测试用例演示一、Mock 测试简介1、什么是 mock 测试在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个「虚拟的对象」来创建以便测试的测试方法,就是 「mock 测试」在…

windows查询每个线程占用的内存_C#多线程

一、基本概念1、进程首先打开任务管理器,查看当前运行的进程:从任务管理器里面可以看到当前所有正在运行的进程。那么究竟什么是进程呢?进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所…

linux 录屏软件 按键,linux下常用的截图、录屏工具

linux下常用的截图、录屏工具(2010-01-05 10:47:21)由于和老公一起做一个百度俱乐部的小项目,在编写测试文档时要使用截图、录屏的小工具,于是展开搜索什么工具比较好使。录屏:在linux下常用的录屏工具有5种,可以baidu或者google下…

python x_PythonX

而且你的onTouch里面逻辑也有问题,正确写法:public FloatingView (Context context){super(context);mContext context.getApplicationContext();LayoutInflater mLayoutInflater LayoutInflater.from(context);mView mLayoutInflater.inflate(R.layo…

linux把root用户删了,linux root用户没法删除文件

linux文件有用户或用户组权限,即可对文件进行任何操作。但是除了所有者权限,部分文件系统的文件还有扩展属性。拥有超级权限的用户可以使用chattr的权限增加文件扩展属性,这项指令可改变存放在ext2、ext3、ext4、xfs、ubifs、reiserfs、jfs等…

实体类blob类型_Mysql的数据类型和JPA的实体类

​MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。数值类型Int,4字节,(-2147483648,2147483647), (0,4294967295)BIGINT,8 字节,(-9223372036854775808,92…

linux操作系统中查看网络信息的命令,Linux查看系统信息命令盘点

Linux查看系统信息命令盘点在Linux系统上有很多操作都是用命令完成的,下面跟yjbys小编一起来看看最新的系统命令吧,希望对大家有所帮助!1.查看系统内核uname -auname -rfile /sbin/init--通过file命令判断系统中的文件时32位还是64位的--64位CPU系统架构…

python git切换分支_git命令之切换分支

Git一般有很多分支,我们clone到本地的一般都是master分支,如何进行分支的切换呢?那么下面带大家简单的看看如何通过命令来切换:1、查看远程仓库及本地的所有分支命令:git branch -aqinjiaxi:~$ git branch -a* masterr…

Linux作者批评英特尔指令集,英特尔回应 Linus Torvalds 对 AVX512 的批评

英特尔回应 Linus Torvalds 对 AVX512 的批评Linux 作者上个月抨击了英特尔的 AVX512 指令集. 他还希望该指令集能早日成为历史. Torvalds 不是唯一一位批评 AVX512 的人.对于这些批评, 英特尔首席架构师 Raja Koduri 回应称社区喜欢 AVX512, 因为它能带来巨大的性能提升. 他说…

python升级版本命令_如何在python中安装和配置kivy库

kivy是python的UI开发工具包,主要关注用户界面显示效果,可以在Android、IOS、Linux、OS X和Windows上运行。如果python开发中使用kivy,需要安装和配置相关文件和依赖模块。1、在电脑左下角打开开始菜单,输入cmd打开终端窗口在电脑…

linux系统如何安装bt5,BT5硬盘安装(多系统linux + win + BT5)

BT5硬盘安装(多系统linux win BT5)实际上,Win BT5的安装不是很困难,但据我所知我也有两种: 1如官方说明中所述,工具unetbootin,运行unetbootin,在“ CD映像”中,选择BT5的ISO,在“类型”中选…

android主板读取vga线数据_智锐通掘金新基建上新系列之3.5quot; 与ATX工业主板图鉴...

4月份,工信部正式公布了《工业互联网体系架构(版本2.0)》!5G、大数据、人工智能、区块链、边缘计算等新技术加速融入并不断拓宽工业互联网的内涵与赋能潜力。新一代信息技术为驱动的数字浪潮正在深刻重塑经济社会各个领域的当前,智锐通科技聚…

c语言检查字符数组不为空,【C语言】检查输入是否为空,如为空,程序退出

检查用户输入是否为空行,如果输入为空,程序将退出;如不为空,屏幕打印输入的字符串。#include char input[257], *ptr;int main(void){puts("Enter text a line at a time, then pressenter.");puts("Enter a blank…