从 python 发送 int 到 arduino,但是有一个上限。我该如何解决?

Sending int from python to arduino, but there is an upper limit. How do I solve it?

在我的项目中,我将 int 从 python 发送到 arduino,这是步进电机应该采取的步数。 Python代码:

while(1):
userInput = input('Get data point?')

ser.write("s{}".format(int(131.0268562*userInput)).encode())

if userInput == 'c':
    break;
    

Arduino 代码:

if (Serial.available() > 0){


int receivedValue = Serial.parseInt();

digitalWrite(4,HIGH);


if (receivedValue>=0){
  for(Index = 0; Index < receivedValue; Index++)
  {
    digitalWrite(5,HIGH);

    delayMicroseconds(s);

    digitalWrite(5,LOW);
    
    delayMicroseconds(s);
    }
    }
    
}

但是当值大于30000时,代码不起作用。当我在 arduino 端打印值时,它要么是负数,要么是一些小的正数

为什么会这样,我该如何解决?

编辑:感谢“quamrana”和“Serge Ballesta”的帮助,我已经解决了这个问题

如果有人遇到类似问题。只需使用:

long receivedValue = Serial.Stream::parseInt();

我假设限制正好是 32767,即 2**15 - 1。这暗示在 Arduino parseInt return 上是一个 16 位,2 的补码整数。

如果你在Arduino上有更大的整数类型(长?),你应该尝试使用它。另一种方法是使用不同的编码传递两个整数,每个整数最多 15 位。最后,您将循环高值时间 32767 次 + 低值时间。