前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者: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 电路绘制库 schemdraw 你会吗?【面试必学】的更多相关文章

  1. Python批量更新模块的方法【面试必学】

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:ranchlin      小编的环境为win10+python 3. ...

  2. Python之数据分析工具包介绍以及安装【入门必学】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 首先我们来看 Mac版 按照需求大家依次安装,如果你还没学到数据分析,建议你 ...

  3. Python实现截图功能你肯定不会吧?【面试必学】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:CyborgLin python实现截图功能. windows环境下.需 ...

  4. Python之批量读取文件【面试必学】

    python的os模块可以实现普遍的操作系统功能,并且和平台无关.以下为实现根目录下文件的批量读取. os.listdir(dirname)可以列出dirname下的目录和文件,依次读取相应的文件即可 ...

  5. Python 分发包中添加额外文件【新手必学】

      在制作一个 Python 分发包时经常需要把一些文件添加到包中.最常见的例子是你希望通过 pip install命令安装 Python 包时会在 /etc/ 等目录下自动添加默认配置文件,由此可以 ...

  6. Python使用turtle库与random库绘制雪花

    记录Python使用turtle库与random库绘制雪花,代码非常容易理解,画着玩玩还是可以的. 完整代码如下:   效果图如下:  

  7. Python 图形 GUI 库 pyqtgraph

    原文  Python 图形 GUI 库 pyqtgraph pyqtgraph 是纯 Python 图形 GUI 库,基于PyQT4 /pyside和NumPy.它主要目的用于在数学/科学/工程中.M ...

  8. Python科学计算库

    Python科学计算库 一.numpy库和matplotlib库的学习 (1)numpy库介绍:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成 ...

  9. python 各种开源库

    测试开发 来源:https://www.jianshu.com/p/ea6f7fb69501 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. 链接 sel ...

随机推荐

  1. nuxt遇到的问题(一)window 或 document is not defined

    因为用了VUE做的官网,既然是官网了避免不了SEO的问题了(该死当初就不应该选择用vue) 很自然就是选择了使用nuxt.js来做ssr预渲染了. 因为网站不是响应式的,PC / 移动端要进行对应跳转 ...

  2. Linux运维利器之ClusterShell

    一.简介 实验室机房有大概百台的服务器需要管理,加上需要搭建Hadoop以及Spark集群等,因此,一个轻量级的集群管理软件就显得非常有必要了.经过一段时间的了解以及尝试,最终选择了clustersh ...

  3. PowerMock学习(四)之Mock static的使用

    我们编写代码的时候,总会写一些工具类,为了方便调用喜欢使用static关键字来修饰对应方法. 那么现在举例说明,还是准备两个接口,第一个是查询学生总数,第二个是新增学生两个接口,具体示例代码如下: p ...

  4. 听说PHP的生成器yield处理大量数据杠杠的

    官方解释yield yield生成器是php5.5之后出现的,官方文档这样解释:yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大 ...

  5. .NET Core 3.0 使用Nswag生成Api文档和客户端代码

    摘要 在前后端分离.Restful API盛行的年代,完美的接口文档,成了交流的纽带.在项目中引入Swagger (也称为OpenAPI),是种不错的选择,它可以让接口数据可视化.下文将会演示 利用N ...

  6. Python练习100题

    Python练习100题 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #Filename:001.py cnt = 0#count the sum of res ...

  7. python3基础之 字符串切片

    一.python3中,可迭代对象有:列表.元组.字典.字符串:常结合for循环使用:均可使用索引切片 实例: str = ' #str[start:stop:step] 遵循[左闭右开]规则 prin ...

  8. C# 8.0的计划特性

    虽然现在C# 7才发布不久,并且新的版本和特性还在增加中,但是C# 8.0已经为大家公开了一些未来可能出现的新特性. *注:以下特性只是计划,可能在将来的正式版本会有一些差异 1.Nullable R ...

  9. Lab6:进程的调度

    CPU调度 从就绪队列中挑选下一个占用CPU运行的进程,从多个可用CPU中挑选就绪进程可使用的CPU资源 调度策略 比较调度算法的准则 CPU使用率 吞吐量 周转时间 就绪等待时间 响应时间 吞吐量与 ...

  10. Fragment事务管理源码分析

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/53132952 本文出自: [HansChen的博客] 概述 在Fragment使用中 ...