【发布时间】:2022-11-17 01:29:57
【问题描述】:
我正在尝试测试并将一个变量从我的 Raspberry Pi 发送到我的 Arduino 以转动我的步进电机,但它并没有像我将一个变量放入 Arduino 代码本身并转动时那样转动。
这是我的 Arduino 代码:
#include <AccelStepper.h>
AccelStepper stepper(1,7,6); // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
void setup(){
Serial.begin(9600);
stepper.setMaxSpeed(150);
stepper.setAcceleration(100);
stepper.setCurrentPosition(0);
}
void loop() {
if(Serial.available() > 0){
int theta = Serial.read();
double theta_to_pulse = theta/1.8;
stepper.runToNewPosition(theta_to_pulse);
//stepper.runToNewPosition(0);
//stepper.run();
}
}
然后这是我通过 Raspberry Pi 编写的 Python 代码:
import serial
ser = serial.Serial('/dev/ttyACM0',9600)
while True:
theta = 90
ser.write(theta)
我可以寻求一些指导吗?当我运行 python 代码时,步进电机转动了一点,但从未达到最大程度。
【问题讨论】:
-
这可能意味着已经处于目标角度。你试过发送不同的角度吗?你也一直在发送相同的角度。只发送一次,你的 python 代码中不需要那个循环
-
我做到了,但它移动了非常小的一步。然后我在串行监视器中尝试了它,它转了一小段距离然后意外弹回
-
您是否尝试过移动伺服以提供硬编码角度而不使用串行端口?它是否正确地移动到这些角度?所以如果在你的 arduino 中你做
theta= 90它是否在正确移动? -
我有。我给了电机一个角度,它手动移动了那么多度。它工作得很好。我验证并上传了 Arduino 代码,我将 Raspberry Pi 插入 Arduino,每次我手动测试时,我都有电机从它工作的源头拖动电源。
-
您可以edit您的帖子来修复代码中的语法/缩进错误。
标签: python arduino raspberry-pi pyserial stepper