一、安装相应的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灯会闪烁。

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐