python drawbot_Python 电路绘制库 schemdraw 你会吗?【面试必学】

本文介绍了如何使用Python的Schemdraw库来绘制电路图,包括安装、示例代码和注意事项。适合学习Python绘图和Arduino电路设计的读者。在文章中,作者提供了绘制Arduino主板电路图的实例,并分享了关于端点连接的技巧。
摘要由CSDN通过智能技术生成

引子

由于最近在学习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='ArduinonUnon(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控制到达某个水平/竖直位置)

整体来说还比较简单,需要主要整体思路是画出单个元器件,然后使用线进行连接(之前本人绘制电位器时认为可以直接连接电位器的中间端到另一个端点,走了比较多的弯路)

最后附上绘制的一个简单的电路图,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值