找回密码
 立即注册
查看: 575|回复: 0

python与arduino通讯(windows和linux)

[复制链接]

86

主题

0

回帖

894

积分

中级会员

积分
894
发表于 2024-4-24 14:49:01 | 显示全部楼层 |阅读模式
一、安装相应的python包1.windows下:
  1. pip install pyserial
复制代码
2.linux下:
  1. sudo apt-get install python-serial
复制代码

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

b.arduino的代码:
  1. int a=0;

  2. void setup() {
  3.   Serial.begin(9600);
  4. }

  5. void loop() {
  6.   if(Serial.available()){
  7.     a = Serial.parseInt();
  8.     if(a == 1){
  9.       Serial.println("收到来自python的信号");
  10.     }
  11.   }
  12. }
复制代码
2.arduino向python发送消息:

a.python的代码:

  1. import serial # 导入模块

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

  2. void setup() {
  3.   // put your setup code here, to run once:
  4.   Serial.begin(9600);
  5. }
  6. void loop() {
  7.     Serial.print(a);
  8.     delay(1000);
  9. }
复制代码
四、python使用pyfirmate包控制arduino实现Blink环境配置:
  1. pip install pyFirmata
复制代码
1.arduino代码:

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

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

2.python代码:
  1. from pyfirmata import Arduino, util
  2. import time

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


  11. test1()
复制代码
运行python文件后,arduino自带的LED灯会闪烁。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EnMaking

GMT+8, 2025-3-31 08:39 , Processed in 0.048972 second(s), 23 queries .

Powered by Qiqirobot

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表