arduino和python对接_Python:与Arduino进行交互-后续
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进行交互-后续相关推荐
- arduino支持python吗_python能给arduino的板子编程吗?stm32支持吗?什么游戏引擎支持python?...
有几种方式在arduino上用python. 1.Arduino的Firmata方式 用微机上的python与arduino板通信方式.首先在arduino板子上写入firmata固件,在其它微机上运 ...
- 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 ...
- Edison与Arduino通过USB对接通信
虽然Edison本身就装在一块Arduino扩展板上,但当要接的传感器太多了的时候一个扩展板也不够用了.因此需要再用一Arduino板扩展功能.而两者需要通信才能达到一个整体的效果,因此这里介绍如何用 ...
- Arduino和Python实时监督控制和数据采集系统(SCADA)
本文,将向您展示如何设置环境温度信号,该信号将通过计算机上的实时仪表板记录和可视化数据. 硬件设计 首先,我们将使用Arduino Uno开发板从红外温度计读取温度值. 如上所示连接红外测温仪后,继续 ...
- python firmata协议利用arduino操控麦克纳姆轮小车(附完整代码)
python firmata协议利用arduino操控麦克纳姆轮小车 前言 一.python中pyfirmata的环境 材料 二.使用步骤 1.小车的安装方式 我在这采用的是X型安装方式 总结 前言 ...
- 使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关
上篇"[物联网(IoT)开发]Arduino 入门 Hello World(LED闪烁)"只是通过将一段程序烧录到Arduino开发板上控制LEC闪烁,没有任何连网动作,也就是说断 ...
- 【物联网(IoT)开发】使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关
上篇"[物联网(IoT)开发]Arduino 入门 Hello World(LED闪烁)"只是通过将一段程序烧录到Arduino开发板上控制LEC闪烁,没有任何连网动作,也就是说断 ...
- arduino小车前进代码_基于Arduino操纵杆扩展板Funduino制作机器人小车
在本篇文章中,我们将制作一款两轮遥控机器人小车,使用的组件包含nRF24L01模块.Arduino UNO和Funduino操纵杆扩展板组成的控制部分,Arduino nano开发板以及和一个用于控制 ...
- Arduino可穿戴开发入门教程Arduino开发环境介绍
Arduino可穿戴开发入门教程Arduino开发环境介绍 Arduino开发环境介绍 Arduino不像我们使用的PC端操作系统一样,可以直接在操作系统中安装软件为操作系统编程.Arduino的软件 ...
最新文章
- angular5 ng-content使用方法
- 计算机问题在线解答,2014年计算机专业复习疑难问题答疑
- Java匹马行天下之学编程的起点——高级语言大锅烩
- gradle构建_如何提高Gradle的构建速度?
- 浏览器是否支持Html5
- 将百度万年历存入自己的数据库
- 移动端实现HTML5 mp3录音踩坑指南:系统播放音量变小、一些机型录音断断续续 之 MediaRecorder和AudioWorklet的终极对决
- c语言汉字属于什么类型_带你学习C语言—数据类型
- MATLAB中字体大小颜色设置
- RadioButtonList功能汇总
- Java实现牛牛的水杯
- OPNsense用户手册-Netflow导出和分析
- handler中的handler.removecallbacks和handler.removemessages的用法
- 手机上4G和WIFI情况下抓包总结
- UEFI 之 UFS Recovery模式下载
- 可信数智云,联通云的个性化标签
- 学习R语言:数学运算与模拟
- [大数据概念]-- 大数据的技术生态比喻
- P2P(点到点-点对点)通信实现实例
- C语言余数为0输出intact,C语言中的宏是怎么展开的?
热门文章
- 数据库连接池和线程池比较
- ECMAScript 2021 特性
- 麦克风阵列能干这么多事你知道吗?
- pro* c调用存储过程 linux,Pro*C调用存储过程,存储过程名称如何传递? 高分求高手指点。。。...
- vue 类型字段除了用select框_pumelo-select
- (转载)学习Javascript闭包(Closure)
- MySQL Config--参数system_time_zone和参数time_zone
- 多目标跟踪MOT评价指标
- watch 与 computed
- C语言 static静态变量