Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

通过Python与Arduino进行交互

首先,我们得导入serial库来连接python与Arduino(这里面数据的传输工作将由USB来完成)

import serial

当试图连接Arduino上的/dev/ttyUSB0时,请记得通过try和except来预防错误(我们并不一定能顺利地找到USB0),9600是使用Arduino进行通信时设置的波特率(传输速度),在程序里面我们也应当将值设为9600以避免通信出现乱码。

try:

arduino = serial.Serial('/dev/ttyUSB0', 9600)

except:

print "Failed to connect on /dev/ttyUSB0"

将地址设置为 /dev/ttyUSE# (#代表的是你连接Arduino时使用的USB端口编号)以及 /dev/ttyS#(# 为串口编号)。如果不清楚Arduino的地址,可以通过IDE来查询,也可以通过python编程来遍历所有可能的地址进行排查。

locations=['/dev/ttyUSB0','/dev/ttyUSB1','/dev/ttyUSB2','/dev/ttyUSB3',

'/dev/ttyS0','/dev/ttyS1','/dev/ttyS2','/dev/ttyS3']

for device in locations:

try:

arduino = serial.Serial(device, 9600)

except:

print "Failed to connect on",device

需要注意的是其他的设备也可能被连接进来,例如当我试图连接 /dev/ttyS0时,我把我的笔记本连接到了我的wacom平板上。

一旦你的Arduino连接成功了,你便可以通过读写函数来收发信息(在读取数据时,你需要用到time.sleep函数)。如果你的Arduino不需要发送任何信息,那你可以使用readline函数来进行数据读取,它会使得你的程序挂起,直至收到讯息为止。

try:

arduino.write('Y')

time.sleep(1)

print arduino.readline()

except:

print "Failed to send!"

所以,我们的python代码应该变成如下的样子,并且我们已能够通过串口控制led灯。

import serial

import time

locations=['/dev/ttyUSB0','/dev/ttyUSB1','/dev/ttyUSB2','/dev/ttyUSB3',

'/dev/ttyS0','/dev/ttyS1','/dev/ttyS2','/dev/ttyS3']

for device in locations:

try:

print "Trying...",device

arduino = serial.Serial(device, 9600)

break

except:

print "Failed to connect on",device

try:

arduino.write('Y')

time.sleep(1)

print arduino.readline()

except:

print "Failed to send!"

以上代码将会发送“Y”(Y代表Yes,请打开LED灯吧)到Arduino并等待一秒钟,然后读取Arduino响应“Y”返回的信息。使用这段程序,LED灯将会被打开,Arduino会通过串口返回LED被激活的消息,当然,如果想要真正用python进行Arduino编程,这还远远不够。

参照

Arduino– Arduino的官方网站,你可以找到最详尽的Arduino编程知识(程序案例,参考资料,硬件信息)

Arduino tutorial – 一个入门级的Arduino编程教程。

Python port of arduino-serial.c – 一篇John Wiseman所写的文章,文章编程的来源(译者注:404)

original arduino-serial.c – Tod E. Kurt.

Sparkfun – 这是一个购买Arduino和其他电子元器件的好地方。如果你跟我一样来自大腐国,你可以试试coolcomponents

Dealextreme – 香港的一家零售商,经营各种实惠的DIY电子产品,并且没有最低消费限制就可以享受世界范围内包邮(666)。尽管会花两周的时间到这里(大不列颠联合腐国)

英文原文:http://www.stealthcopter.com/blog/2010/02/python-interfacing-with-an-arduino/

译者:海獭先生

arduino和python对接_Python:与Arduino进行交互-后续相关推荐

  1. arduino支持python吗_python能给arduino的板子编程吗?stm32支持吗?什么游戏引擎支持python?...

    有几种方式在arduino上用python. 1.Arduino的Firmata方式 用微机上的python与arduino板通信方式.首先在arduino板子上写入firmata固件,在其它微机上运 ...

  2. unity和python通讯_Python 与 Unity mlagents 交互 API

    初始化 unity 环境 1 2 3 4 5import numpy as np import matplotlib.pyplot as plt from mlagents.envs import U ...

  3. Edison与Arduino通过USB对接通信

    虽然Edison本身就装在一块Arduino扩展板上,但当要接的传感器太多了的时候一个扩展板也不够用了.因此需要再用一Arduino板扩展功能.而两者需要通信才能达到一个整体的效果,因此这里介绍如何用 ...

  4. Arduino和Python实时监督控制和数据采集系统(SCADA)

    本文,将向您展示如何设置环境温度信号,该信号将通过计算机上的实时仪表板记录和可视化数据. 硬件设计 首先,我们将使用Arduino Uno开发板从红外温度计读取温度值. 如上所示连接红外测温仪后,继续 ...

  5. python firmata协议利用arduino操控麦克纳姆轮小车(附完整代码)

    python firmata协议利用arduino操控麦克纳姆轮小车 前言 一.python中pyfirmata的环境 材料 二.使用步骤 1.小车的安装方式 我在这采用的是X型安装方式 总结 前言 ...

  6. 使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关

    上篇"[物联网(IoT)开发]Arduino 入门 Hello World(LED闪烁)"只是通过将一段程序烧录到Arduino开发板上控制LEC闪烁,没有任何连网动作,也就是说断 ...

  7. 【物联网(IoT)开发】使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关

    上篇"[物联网(IoT)开发]Arduino 入门 Hello World(LED闪烁)"只是通过将一段程序烧录到Arduino开发板上控制LEC闪烁,没有任何连网动作,也就是说断 ...

  8. arduino小车前进代码_基于Arduino操纵杆扩展板Funduino制作机器人小车

    在本篇文章中,我们将制作一款两轮遥控机器人小车,使用的组件包含nRF24L01模块.Arduino UNO和Funduino操纵杆扩展板组成的控制部分,Arduino nano开发板以及和一个用于控制 ...

  9. Arduino可穿戴开发入门教程Arduino开发环境介绍

    Arduino可穿戴开发入门教程Arduino开发环境介绍 Arduino开发环境介绍 Arduino不像我们使用的PC端操作系统一样,可以直接在操作系统中安装软件为操作系统编程.Arduino的软件 ...

最新文章

  1. angular5 ng-content使用方法
  2. 计算机问题在线解答,2014年计算机专业复习疑难问题答疑
  3. Java匹马行天下之学编程的起点——高级语言大锅烩
  4. gradle构建_如何提高Gradle的构建速度?
  5. 浏览器是否支持Html5
  6. 将百度万年历存入自己的数据库
  7. 移动端实现HTML5 mp3录音踩坑指南:系统播放音量变小、一些机型录音断断续续 之 MediaRecorder和AudioWorklet的终极对决
  8. c语言汉字属于什么类型_带你学习C语言—数据类型
  9. MATLAB中字体大小颜色设置
  10. RadioButtonList功能汇总
  11. Java实现牛牛的水杯
  12. OPNsense用户手册-Netflow导出和分析
  13. handler中的handler.removecallbacks和handler.removemessages的用法
  14. 手机上4G和WIFI情况下抓包总结
  15. UEFI 之 UFS Recovery模式下载
  16. 可信数智云,联通云的个性化标签
  17. 学习R语言:数学运算与模拟
  18. [大数据概念]-- 大数据的技术生态比喻
  19. P2P(点到点-点对点)通信实现实例
  20. C语言余数为0输出intact,C语言中的宏是怎么展开的?

热门文章

  1. 数据库连接池和线程池比较
  2. ECMAScript 2021 特性
  3. 麦克风阵列能干这么多事你知道吗?
  4. pro* c调用存储过程 linux,Pro*C调用存储过程,存储过程名称如何传递? 高分求高手指点。。。...
  5. vue 类型字段除了用select框_pumelo-select
  6. (转载)学习Javascript闭包(Closure)
  7. MySQL Config--参数system_time_zone和参数time_zone
  8. 多目标跟踪MOT评价指标
  9. watch 与 computed
  10. C语言 static静态变量