前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者: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官方文档中有这么个例子,和我们的用法比较类似遂拆解学习之。

  1. d = schem.Drawing()
  2. left = {'cnt':3,
  3. 'labels':['TRG','THR','DIS'],
  4. 'plabels':['2','6','7'],
  5. 'loc':[.2,.35,.75],
  6. 'lblsize':12,
  7. }
  8. right = {'cnt':2,
  9. 'labels':['CTL','OUT'],
  10. 'plabels':['5','3'],
  11. 'lblsize':12,
  12. }
  13. top = {'cnt':2,
  14. 'labels':['RST','Vcc'],
  15. 'plabels':['4','8'],
  16. 'lblsize':12,
  17. }
  18. bot = {'cnt':1,
  19. 'labels':['GND'],
  20. 'plabels':['1'],
  21. 'lblsize':12,
  22. }
  23. IC555 = e.blackbox(d.unit*1.5, d.unit*2.25,
  24. linputs=left, rinputs=right, tinputs=top, binputs=bot,
  25. leadlen=1, mainlabel='555')
  26. T = d.add(IC555)
  27. BOT = d.add(e.GND, xy=T.GND) # Note: Anchors named same as pin labels
  28. d.add(e.DOT)
  29. d.add(e.RES, endpts=[T.DIS, T.THR], label='Rb')
  30. d.add(e.RES, d='up', xy=T.DIS, label='Ra', rgtlabel='+Vcc')
  31. d.add(e.LINE, endpts=[T.THR, T.TRG])
  32. d.add(e.CAP, xy=T.TRG, d='down', toy=BOT.start, label='C', l=d.unit/2)
  33. d.add(e.LINE, d='right', tox=BOT.start)
  34. d.add(e.CAP, d='down', xy=T.CTL, toy=BOT.start, botlabel='.01$\mu$F')
  35. d.add(e.DOT)
  36. d.add(e.DOT, xy=T.DIS)
  37. d.add(e.DOT, xy=T.THR)
  38. d.add(e.DOT, xy=T.TRG)
  39. d.add(e.LINE, endpts=[T.RST,T.Vcc])
  40. d.add(e.DOT)
  41. d.add(e.LINE, d='up', l=d.unit/4, rgtlabel='+Vcc')
  42. d.add(e.RES, xy=T.OUT, d='right', label='330')
  43. d.add(e.LED, flip=True, d='down', toy=BOT.start)
  44. d.add(e.LINE, d='left', tox=BOT.start)
  45. d.draw()

上效果图: 

根据示例自己动手绘制

先绘制arduino主板

  1. import SchemDraw as schem
  2. import SchemDraw.elements as e
  3. d = schem.Drawing()
  4. left = {'cnt':10,
  5. 'labels':['RESET','RESET2','AREF','N/C','A0','A1','A2','A3','A4/SDA','A5/SCL'],
  6. 'plabels':['2','6','7'],
  7. 'lblsize':12,
  8. }
  9. right = {'cnt':17,
  10. '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'],
  11. 'plabels':['5','3'],
  12. 'lblsize':12,
  13. }
  14. top = {'cnt':3,
  15. 'labels':['3v3','5v','VIN'],
  16. 'plabels':['4','8'],
  17. 'lblsize':12,
  18. }
  19. bot = {'cnt':1,
  20. 'labels':['GND'],
  21. 'lblsize':12,
  22. }
  23. IC555 = e.blackbox(d.unit*2.5, d.unit*4.5,
  24. linputs=left, rinputs=right, tinputs=top, binputs=bot,
  25. leadlen=1, mainlabel='Arduino\nUno\n(Rev3)')
  26. T = d.add(IC555)
  27. 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. 06_K-近邻算法

    k-近邻算法 算法介绍 定义: 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一类别,则该样本也属于这个类别. 计算距离公式:欧式距离 (两点之间距离) 需要做标准化 ...

  2. 【故障公告】数据库服务器 CPU 近 100% 引发的故障(源于 .NET Core 3.0 的一个 bug)

    非常抱歉,这次故障给您带来麻烦了,请您谅解. 今天早上 10:54 左右,我们所使用的数据库服务(阿里云 RDS 实例 SQL Server 2016 标准版)CPU 突然飙升至 90% 以上,应用日 ...

  3. Unittest框架的从零到壹(二)

    四大重要概念 在unittest文档中有四个重要的概念:Test Case.Test Suite.Test Runner和Test Fixture.只有理解了这几个概念,才能理解单元测试的基本特征. ...

  4. Redis Geo HyperLogLog类型介绍

    ​Geo类型 Redis3.2.0版本推出 可以将用户给定的地理位置信息存储起来,并对这些信息进行操作 GEOADD key longitude latitude member [longitude ...

  5. 给公司写的composer包开发的规范

    版本格式 主版本号.次版本号.修订号 版本号递增规则 主版本号:当你做了不兼容的 API 修改 次版本号:当你做了向下兼容的功能性新增 修订号:当你做了向下兼容的问题修正 先行版本号及版本编译元数据可 ...

  6. Component 和 PureComponent 的区别;复制demo,肉眼可以的区别

    React.PureComponent它用当前与之前 props 和 state 的浅比较覆写了 shouldComponentUpdate() 的实现.简单来说,就是PureComponent简单实 ...

  7. K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 张振(守辰) ...

  8. EasyCode实现数据库到Swagger全自动化

    简介 EasyCode是基于IntelliJ IDEA开发的代码生成插件,通过自定义生成模板可以完成定制化的 Mapper Service Controller 生成,结合数据库 Comment还可以 ...

  9. C语言I博客作业10

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10095 我在这个课程的 ...

  10. Selenium+Java(九)Selenium键盘与鼠标事件

    一.键盘事件 ctrl+a driver.findElement(By.id("kw")).sendKeys(Keys.CONTROL, "a"); ctrl+ ...