求树莓派与Arduino串口通信示例代码及变量传输方案
树莓派通过串口向Arduino传输循环变量的实现方案
硬件连接
用Micro-USB线连接树莓派的USB口和Arduino的USB口,树莓派会自动识别串口设备(通常为/dev/ttyUSB0或/dev/ttyACM0,可通过ls /dev/tty*命令确认)。
树莓派端Python代码(极简版)
首先安装串口依赖库:
pip install pyserial
代码实现1-10循环并发送变量:
import serial import time # 初始化串口,波特率要和Arduino一致 ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) time.sleep(2) # 等待Arduino重启完成 for x in range(1, 11): # 将整数转为字符串并添加换行符,方便Arduino识别结束 ser.write(f"{x}\n".encode()) print(f"已发送: {x}") time.sleep(1) # 间隔1秒发送一次,可根据需求调整 ser.close()
Arduino端代码(极简版)
void setup() { Serial.begin(9600); // 波特率与树莓派一致 } void loop() { if (Serial.available() > 0) { String input = Serial.readStringUntil('\n'); // 读取到换行符为止 int x = input.toInt(); // 转为整数变量 // 这里可以扩展步进电机控制或其他逻辑,先打印验证 Serial.print("收到变量x: "); Serial.println(x); // 示例:用x作为循环次数 for (int i = 0; i < x; i++) { // 这里可以加步进电机脉冲输出或水阀控制代码 delay(500); } } }
扩展说明
- 树莓派端后续可接入Node-RED,通过
serial out节点替代Python代码发送数据,或用Python脚本作为Node-RED的exec节点执行。 - Arduino端可直接将
x映射为步进电机角度(比如x*18度对应1-10转18-180度),或控制水阀的开关时长(x秒)。
内容的提问来源于stack exchange,提问作者ceilowens
相关产品推荐
相关产品推荐

