python与arduino通讯(windows和linux)

本文详细介绍了如何在Python环境下与Arduino进行通信。首先,讲解了在Windows和Linux系统中安装pyserial库的方法。接着,指导读者如何在Arduino IDE中查看端口并确定Arduino的连接端口。然后,通过示例展示了Python如何向Arduino发送及接收消息,以及Arduino如何响应。最后,利用pyfirmata包实现了Python控制Arduino的Blink功能,包括上传StandardFirmata固件到Arduino和编写Python代码控制LED灯闪烁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装相应的python包

1.windows下:

pip install pyserial

2.linux下:

 sudo apt-get install python-serial

二、将arduino接入PC,查看端口

1.使用arduino IDE的条件下:

在Arduino IDE->工具->端口中查看自己的端口

比如:windows下我的arduino端口为 'COM3'

2.linux下且不使用arduino IDE:

a.首先在接入之前

在linux终端输入 ls /dev/tty*

b.在接入以后再次:

在linux终端输入 ls /dev/tty*

查看端口信息,若有多出来一个,就是arduino的端口

例如:linux下我的arduino端口为'/dev/ttyUSB0'

三、实现python与arduino通讯

1.python向arduino发送消息:

a.python的代码:

import serial
import time
ser = serial.Serial('COM3',9600,timeout=1)
while 1:
    val = ser.write('1'.encode('utf-8'))
    #ser.write(发送的数据需要进行编码.encode('utf-8'))
    time.sleep(0.5)
    val2 = ser.readline().decode('utf-8')
    print(val2)

若是linux且不使用arduino IDE条件下则需要修改端口,比如:
ser = serial.Serial('/dev/ttyUSB0', 9600,timeout=1);  

b.arduino的代码:

int a=0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()){
    a = Serial.parseInt();
    if(a == 1){
      Serial.println("收到来自python的信号");
    }
  }
}

2.arduino向python发送消息:

a.python的代码:

import serial # 导入模块

ser = serial.Serial('COM3',9600,timeout=1)
# serial.Serial  的三个形参 分别对应 Arduino的串口  波特率 连接超时时间
print(ser)
while 1:
    val = ser.readline().decode('utf-8')
    # ser.readline() 读取窗串口中的数据以二进制的形式展示需要使用.decode('utf-8')进行解码
    if val == 1:
        print("收到来自arduino的信号")

b.arduino的代码:

int a = 1;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}
void loop() {
    Serial.print(a);
    delay(1000);
}

四、python使用pyfirmate包控制arduino实现Blink

环境配置:

pip install pyFirmata

1.arduino代码:

打开arduino IDE的 文件->示例->Firmate->StandardFirmate

编译成功后上传,报错的大概率是arduino的型号没对上,端口搞错了,建议再次到arduino IDE的工具那一栏进行确认。

2.python代码:

from pyfirmata import Arduino, util
import time

# Arduino所在串口是COM3,这是windows下的表示
def test1():
    board = Arduino('COM3')
    while 1:
        board.digital[13].write(0)  # 向端口13写入0   0代表灭灯
        time.sleep(1)
        board.digital[13].write(1)  # 向端口13写入1   1代表亮灯
        time.sleep(1)


test1()

运行python文件后,arduino自带的LED灯会闪烁。

到此本文已结束,若对你有帮助,欢迎一键三连!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leonard2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值