当前位置:
首页 > 编程开发 > Python基础教程 >
-
python基础教程之Python 电路绘制库 schemdraw 你会吗?【面试必学】
本站最新发布 Python从入门到精通|Python基础教程
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:skyztttt
引子
由于最近在学习ardunio的使用,其中牵涉到绘制一些简单的电路图,又不愿意使用一些复杂的软件进行绘制,调查中发现python中的schemdraw库就能很好地完成这个任务,遂学习使用之。如果你还没学到Python绘制库,建议你先去小编的Python学习.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目,多跟里面的大佬请教交流进步更快哦
schemdraw的安装
pip install schemdraw搞定,不赘言
正式使用
参考网站及示例
附上相关的网站:
https://pypi.python.org/pypi/SchemDraw/
https://cdelker.bitbucket.io/SchemDraw/SchemDraw.html
https://www.zhihu.com/question/23632588 (知乎上对这个库及同类方式的介绍)
schemdraw官方文档中有这么个例子,和我们的用法比较类似遂拆解学习之。
d = schem.Drawing()
left = {'cnt':3,
'labels':['TRG','THR','DIS'],
'plabels':['2','6','7'],
'loc':[.2,.35,.75],
'lblsize':12,
}
right = {'cnt':2,
'labels':['CTL','OUT'],
'plabels':['5','3'],
'lblsize':12,
}
top = {'cnt':2,
'labels':['RST','Vcc'],
'plabels':['4','8'],
'lblsize':12,
}
bot = {'cnt':1,
'labels':['GND'],
'plabels':['1'],
'lblsize':12,
}
IC555 = e.blackbox(d.unit*1.5, d.unit*2.25,
linputs=left, rinputs=right, tinputs=top, binputs=bot,
leadlen=1, mainlabel='555')
T = d.add(IC555)
BOT = d.add(e.GND, xy=T.GND) # Note: Anchors named same as pin labels
d.add(e.DOT)
d.add(e.RES, endpts=[T.DIS, T.THR], label='Rb')
d.add(e.RES, d='up', xy=T.DIS, label='Ra', rgtlabel='+Vcc')
d.add(e.LINE, endpts=[T.THR, T.TRG])
d.add(e.CAP, xy=T.TRG, d='down', toy=BOT.start, label='C', l=d.unit/2)
d.add(e.LINE, d='right', tox=BOT.start)
d.add(e.CAP, d='down', xy=T.CTL, toy=BOT.start, botlabel='.01$\mu$F')
d.add(e.DOT)
d.add(e.DOT, xy=T.DIS)
d.add(e.DOT, xy=T.THR)
d.add(e.DOT, xy=T.TRG)
d.add(e.LINE, endpts=[T.RST,T.Vcc])
d.add(e.DOT)
d.add(e.LINE, d='up', l=d.unit/4, rgtlabel='+Vcc')
d.add(e.RES, xy=T.OUT, d='right', label='330')
d.add(e.LED, flip=True, d='down', toy=BOT.start)
d.add(e.LINE, d='left', tox=BOT.start)
d.draw()
上效果图:
根据示例自己动手绘制
先绘制arduino主板
import SchemDraw as schem
import SchemDraw.elements as e
d = schem.Drawing()
left = {'cnt':10,
'labels':['RESET','RESET2','AREF','N/C','A0','A1','A2','A3','A4/SDA','A5/SCL'],
'plabels':['2','6','7'],
'lblsize':12,
}
right = {'cnt':17,
'labels':['TX/D0','RX/D1','D2','PWM D3','D4','PWM D5','PWM D6','D7','D8','PWM D9','SS/PWM D10','MOSI/PWM D11','MISO/D12','SCK/D13','ICSP2 MISO','ICSP2 SCK','ICSP MISO'],
'plabels':['5','3'],
'lblsize':12,
}
top = {'cnt':3,
'labels':['3v3','5v','VIN'],
'plabels':['4','8'],
'lblsize':12,
}
bot = {'cnt':1,
'labels':['GND'],
'lblsize':12,
}
IC555 = e.blackbox(d.unit*2.5, d.unit*4.5,
linputs=left, rinputs=right, tinputs=top, binputs=bot,
leadlen=1, mainlabel='Arduino\nUno\n(Rev3)')
T = d.add(IC555)
d.draw()
效果图:
注意点
-
元件的端点一般采用原件label进行查找,但是一些特殊字符schemdraw会将其略去,此外以数字开头的端点不能使用直接[原件.label名]获取(python语法不允许,必须采用getattr,如:getattr(T, ‘5v’))另外如果你Python学的不是很好, 建议你先去小编的Python学习.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目,多跟里面的大佬请教交流进步更快哦
此外元件端点也可以通过调试器来查看。
-
绘制一般比较简单不指定连接的端点则采用上一次绘制的终点绘制:
一般通过e.LINE,e.DOT绘制线和点(d=’up’,l=d.unit*0.3 控制方向和长度,tox、toy控制到达某个水平/竖直位置) -
整体来说还比较简单,需要主要整体思路是画出单个元器件,然后使用线进行连接(之前本人绘制电位器时认为可以直接连接电位器的中间端到另一个端点,走了比较多的弯路)
最后附上绘制的一个简单的电路图,
栏目列表
最新更新
[转]Python十个高大上的语法
Python 电路绘制库 schemdraw 你会吗?【面试
利用 python 分析基金,合理分析数据让赚
Python中的函数参数有冒号 声明后有->
python 安装 SQLAlchemy 报错
day02_Requests模块
python处理sqlserver数据库的返回数据
Python-判断回文
python线程信号量semaphore(33)
60%的人不懂Python进程Process,你懂吗?
.Net Standard(.Net Core)实现获取配置信息
Linux PXE + Kickstart 自动装机
Shell 编程 基础
Shell 编程 条件语句
CentOS8-网卡配置及详解
Linux中LVM逻辑卷管理
1.数码相框-相框框架分析(1)
Ubuntu armhf 版本国内源
Linux中raid磁盘阵列
搭建简易网站
mysql 安装了最新版本8.x版本后的报错:
Mysql空间数据&空间索引(spatial)
如何远程连接SQL Server数据库的图文教程
复制SqlServer数据库的方法
搜索sql语句
sql中返回参数的值
sql中生成查询的模糊匹配字符串
数据定义功能
数据操作功能
将Session值储存于SQL Server中