关于Python语言的介绍安装请参考廖雪峰的Python教程

Python是一门解释型语言,虽然不能够像c语言一样编译上传到Arduino——什么你说MicroPython,我们再说Arduino呢——仍然是可以跟Arduino的玩耍的,就像scratch一样。

前言

Python玩转arduino的方式跟mblock的在线编程模式差不多的,都是先给arduino写入一个固件,然后操作,不同的是mblock是通过积木来向arduino下指令,这里我们用Python.

mblock对arduino在线编程的步骤

  1. 连接arduino到电脑
  2. 打开mblock软件
  3. 选择对应端口
  4. 选择合适的控制板

然后我们就可以愉快的编程了.

用Python玩转Arduino

首先你要安装Python,并且确保安装了pip

然后我们要用到一个代码块Python Arduino 原型API第二版.

This is a project based on the original Python Arduino Prototyping API. I started a fork and after a while the whole thing was getting too different to make a pull request so I just put it here. The old project had wierd things going on to handle the communication, where I rely on parseInt() to do the work for me. There were also problems with analogWrite(), which is working in this version.

这个代码库呢是基于 Python Arduino Prototyping API,作者复制了一份,做了很多改动,跟原始版本相差很大,于是就成了一个独立的版本.这个版本的通讯方式跟老版本不同,主要是用到了parseInt()函数.当然这个版本不是很完善,analogWrite()用起来可能会有问题——不过凡是代码的问题,都可以修复的不是吗.

python玩转arduino的方法有很多,后面我在完善介绍别的.

上传固件



这样准备工作就已经完成了,那么让我们开始愉快的玩耍把.这个过程跟在mblock里连接硬件,最后上传固件本质是一样的,形式不同而已.

开始玩耍把

学习编程总是从Hello world!开始,而学习硬件总是从点亮LED灯开始,那么今天我们就用这个库来试着点亮一盏LED灯.



然后修改代码如下图就可以了.

from arduino import Arduino
import time b = Arduino('COM15')
# 实例化一个板子
# 突然很好奇如果我实例多个是否可以?
pin = 13 #declare output pins as a list/tuple
b.output([pin])
# 用列表的形式指定哪些针脚
# 用来当做输出针脚 for x in range(10):
b.setHigh(pin)
# 设定pin引脚为高电平
# b在这里就是指板子
time.sleep(1)
# 利用time库中的sleep函数
print b.getState(pin)
# 这个只是用来打印输出状态
b.setLow(pin)
# 这顶引脚pin为低电平
print b.getState(pin)
time.sleep(1) b.close()

快看看Arduino板子上自带的13号led灯是不是开始闪烁了呢?

这种方法不是很好玩,这个代码封装的比较麻烦,相比于树莓派最新版的GIPO库,差的太多,最新的gpiozero真的超好用的.后面介绍.

通过上面的代码就可以跟arduino愉快的玩耍了

注意:

b = Arduino('COM15')

引号里面代表的是具体通过那个端口跟arduino进行通讯,这里我的是'COM15'端口,大家要注意.

close()函数

函数的作用是关闭串口链接,释放资源,重新运行代码的时候不需要重新插拔串口,不然就得重新插拔,作为一个好的习惯保留把.

点评

这个类库做一点小东西足够了,驱动1602液晶屏啊,电机啊什么还不行,舵机和步进电机可以,但是在中小学教学做一些简单的东西足够了.

或者是在用树莓派控制arduino的情况下,足够了,当然还有其他方式,未完待续

在GitHub上,搜一下以arduino为关键字进行搜索,选择Python语言的结果,就有很多库可以用.慢慢找一下总有符合自己风格的.



可以看到JavaScript的项目也很多啊,前端的福音啊,感觉JavaScript现在都快逆天了.

可以看到很多甚至是HTML项目,应该是网页控制arduino,webarduino这种。

发现了一个很腻害的Arduino物联网平台项目PlatformIO

其他库

发现了Python版本的arduino命令API,似乎这个要完善的多,支持舵机,不过这个库已经三年没有更新了,o(╯□╰)o

没事搜一搜GitHub,总有意想不到的收货.

扩展

其实这种实现模式的关键是在arduino写入固件然后通讯,你可以直接用serial的方式——下次介绍——也可以用firmata这种复杂的通信协议来通信,视乎个人的开发能力而定。

对底层了解越多玩儿越多,未来我也会在深入学习的过程中不断的分享我的经验,欢迎大家留言讨论。

Python玩转Arduino——简单介绍的更多相关文章

  1. Python常用的库简单介绍一下

    Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...

  2. python爬虫:爬虫的简单介绍及requests模块的简单使用

    python爬虫:爬虫的简单介绍及requests模块的简单使用 一点点的建议: (学习爬虫前建议先去了解一下前端的知识,不要求很熟悉,差不多入门即可学习爬虫,如果有不了解的,我也会补充个一些小知识. ...

  3. Python IDE Spyder的简单介绍

    最近深度学习发展非常迅猛,大有一统江湖的趋势.经过一段时间学习,发现自己对这种神奇的玄学非常感兴趣,希望能够进一步的研究.而这种研究性学科单纯地看论文比较难以明白,所以希望能够跟进大牛们写的代码深入学 ...

  4. Python模块:operator简单介绍

    Python官方文档地址:https://docs.python.org/3.6/library/operator.html?highlight=operator Operator提供的函可用于对象比 ...

  5. 【Python】operator 模块简单介绍

    简单介绍几个常用的函数,其他的请参考文档. operator.concat(a, b) **operator.__concat__(a, b)** 对于 a.b序列,返回 a + b(列表合并) -- ...

  6. 利用Python进行数据分析(1) 简单介绍

    一.处理数据的基本内容 数据分析 是指对数据进行控制.处理.整理.分析的过程. 在这里,“数据”是指结构化的数据,例如:记录.多维数组.Excel 里的数据.关系型数据库中的数据.数据表等. 二.说说 ...

  7. python之路之简单介绍:

    python介绍: a. python 基础 - 基础 - 基本的数据类型 - 函数 - 面向对象 python 安装 python 安装在os上 执行操作: 写一个文件,文件中按照python规则写 ...

  8. python第三方库requests简单介绍

    一.发送请求与传递参数 简单demo: import requests r = requests.get(url='http://www.itwhy.org') # 最基本的GET请求 print(r ...

  9. python(2)- python程序的编写简单介绍

    一.语句和语法 # 注释 \ 转译回车,继续上一行,在一行语句较长的情况下可以使用其来切分成多行,因其可读性差所以不建议使用 : 将两个语句连接到一行,可读性差,不建议使用 : 将代码的头和体分开 语 ...

随机推荐

  1. Python3学习之路~7.5 异常处理

    1.异常基础 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!! try: pass except Excepti ...

  2. 零python基础--爬虫实践总结

    网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 爬虫主要应对的问题:1.http请求 2.解析html源码 3.应对反爬机制. 觉得爬虫挺有意思的,恰好看到知乎有人分享的一个爬虫 ...

  3. DCDC参数测量及方法

    此文章目的为补充知识,防止遗忘,记录DCDC相关的. 1.拿到一颗DCDC芯片应该测试哪些参数:纹波.电源效率和动态响应. 1)纹波测量方法:示波器偶合方式选择AC:示波器探头的接地也不能用鳄鱼夹,这 ...

  4. js 获取鼠标的手势方向角度

    需要获取鼠标的移动角度 1.mousedown 确定起始点 2.mousemove 确立相关点 3.先计算两点的斜率,然后根据三角函数和反三角函数.转换为角度 <!DOCTYPE html> ...

  5. 微信小程序 下拉加载

    在 Page 中定义 onPullDownRefresh 处理函数,监听该页面用户下拉刷新事件. 例: Page({ onPullDownRefresh: function(){ wx.stopPul ...

  6. 利用FPN构建Faster R-CNN检测

    FPN就是所谓的金字塔结构的检测器,(Feature Pyramid Network) 把FPN融合到Faster rcnn中能够很大程度增加检测器对全图信息的认知, 步骤如图所示: 1.先将图像送入 ...

  7. c#中WebApi开发遇到的坑

    一.如何新建一个webApi项目 打开VS→找到解决方案→新建项目→类库或web应用程序→选择空的WebApi项目→在Global.asax文件的Application_Start方法中注册WebAp ...

  8. Linux 常用命令,处理端口和Tomcat,mysql

    查看端口占用 1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 都可以查看指定端口被哪个进程占用的情况 kill -9 进程号    强制结束进程 启动 1.使用 ser ...

  9. Python学习笔记(Ⅰ)——Python程序结构与基础语法

    作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...

  10. 集合 set

    集合 集合属于可变数据类型,但它的内容必须是不可变数据类型. 特点:无序   ,  不重复 有两种创建方式: set({1,2,3})和 {1,2,3} set1 = set({1,2,3,4}) s ...