【问题标题】:My Arduino via communication with my Raspberry Pi isn't outputting correctly?我的 Arduino 通过与我的 Raspberry Pi 通信无法正确输出?
【发布时间】: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


【解决方案1】:

你确定你写的Python代码是正确的吗? 代码有语法错误。循环内没有任何内容。你有什么例外吗? 它应该是这样的:

import serial
ser = serial.Serial('/dev/ttyACM0',9600)    

while True:    
    theta = 90    
    ser.write(theta)

【讨论】:

  • 抱歉,我只是从 Discord 复制粘贴并缩进。但这就是我正在使用的确切代码。 python端没有错误。实际上,我在使用更大的代码时遇到了问题,并且出现了错误,因此我使用此示例代码进行了测试,但它无法转动电机。
  • 你不应该使用循环,使用循环就是将值一遍又一遍地发送到串行端口。只发送一次值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多