1

我正在使用 xojo 制作一个应用程序,您可以在其中设置 3 个滑块的值,通过串行监视器将值作为带有 json 的字符串发送,并且我正在使用 arduino 接收 json 值,以通过滑块值移动 3 个伺服电机.

我尝试使用这个 json,但由于我很新,我不知道如何使用它。基本上代码可以工作,不会输出错误,但是不行,我很确定电子部分是完全正确的。你能帮助我吗?

这基本上是我的 Xojo 代码:

var angles as new jsonitem

angles.value("servo1") = slideservo1.value 

angles.value("servo2") = slideservo2.value 

angles.value("servo3") = slideservo3.value 

angles.Compact = True

Serialcontroller.write(angles.toString)

这是我的 Arduino 代码:

#include <Servo.h>
#include <ArduinoJson.h>

Servo myServo1;
Servo myServo2;
Servo myServo3;

StaticJsonDocument<200> doc;


void setup() {
  myServo1.attach(8);
  myServo2.attach(9);
  myServo3.attach(10);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) {
    deserializeJson (doc, Serial);

    const char* angle1 = doc["servo1"];
    const char* angle2 = doc["servo2"];
    const char* angle3 = doc["servo3"];

    myServo1.write(atoi(angle1));
    myServo2.write(atoi(angle2));
    myServo3.write(atoi(angle3));
    delay(15);
  }
}

由于电子部分完全正确,并且代码没有输出错误,我不明白错误是什么。我的目标是移动 Xojo 上的滑块,该值通过串行监视器与 json 一起发送,由 arduino 接收并用作伺服移动的“角度”。提前致谢。

4

1 回答 1

1

好的,我自己解决了,你只需要在我的servo.write中直接写“doc”和值,比如:

myServo.write(doc["servo1"]);
于 2019-11-02T23:38:48.587 回答