Как создать таблицу, которая обновляется в режиме реального времени при обработке данных из Arduino? - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать (пока) простую реконструкцию поверхностей управления самолетом для моего проекта uni. Я использую Ардуино. Одна из моих идей заключалась в том, чтобы создать страницу FCS, на которой я мог бы видеть текущее положение сервоприводов в реальном времени. Я пробовал использовать терминал, который для отладки был полезен, но если я хочу иметь возможность правильно читать данные при добавлении дополнительных сервоприводов, их будет трудно читать, если я не сделаю таблицу.

I ' Я пытался прочитать в Интернете, как использовать Обработку для чтения данных из Arduino, с чем я не особо добился успеха, и тем более с созданием таблицы. У меня нет большого опыта работы с GUI, так что это немного ново для меня.

Вот мой код Arduino;

#include <Arduino.h>
#include <Servo.h>
#include <stdio.h>

Servo leftAir; // create servo for left airelon
Servo rightAir; // create servo for right airelon
Servo leftEl; // create servo for left elevator
Servo rightEl; // create servo for right elevator

// Arduino pin numbers
const int X_pin = 0; // analog pin connected to X output
const int Y_pin = 1; // analog pin connected to Y output

int Ypos;
int Xpos;

int leftAirPos;
int rightAirPos;
int leftStabPos;
int rightStabPos;

int AoA; // Variables not used yet
int spd; // ^^


void setup() {
  Serial.begin(9600);

  leftAir.attach(9, 600, 2300);
  rightAir.attach(10, 600, 2300);
  leftEl.attach(11, 600, 2300);
  rightEl.attach(12, 600, 2300);

}

void loop() {

  Ypos = analogRead(Y_pin) - 512;
  Xpos = analogRead(X_pin) - 512;


  if (Ypos > 10 || Ypos < -10)  // Small deadzone
  {
    leftAir.write((Ypos / 5.12) * 0.2 + 90); // move left airelon to designated angle (currently 20 degrees either way)
    rightAir.write((Ypos / 5.12) * 0.2 + 90); // move right aileron to the same angle -- servo will be looking in opposite direction so aileron will move down when the other goes up (currently 20 degrees either way)
  }
  else {}

  // Moving elevator / horizontal stabilizers

  if (Xpos > 10 || Xpos < -10)
  {
    leftEl.write((Xpos / 5.12) * 0.2 + 90); // move left elevator (currently 20 degrees either way)
    rightEl.write(-(Xpos / 5.12) * 0.2 + 90); // move right elevator (currently 20 degrees either way)
  }
  else{}

  leftAirPos = leftAir.read() -90;
  leftStabPos = leftEl.read() -90;
  rightAirPos = rightAir.read() -90;
  rightStabPos = rightEl.read() -90;

  Serial.print(leftAirPos);
  Serial.print(",");
  Serial.print(leftStabPos);
  Serial.print("\n");
  Serial.print(rightAirPos);
  Serial.print(",");
  Serial.print(rightStabPos);
  Serial.print("\n");

}

Таблица, надеюсь, будет выглядеть примерно так:

               Left   Right
Ailerons       20      -15
Stabilators    12      12
Flaps          5       5

Заранее спасибо.

...