Python читает данные IMU из Arduino и печатает - PullRequest
0 голосов
/ 26 августа 2018

У меня есть код Arduino (на самом деле Teensy 3.2), отправляющий данные через последовательный порт

void loop()
{
  data1 = roll; // integer
  data2 = pitch; // integer 
  data3 = yaw; // integer

  byte buf1[4];
  buf1[0] = data1 & 255;
  buf1[1] = (data1 >> 8)  & 255;
  buf1[2] = (data1 >> 16) & 255;
  buf1[3] = (data1 >> 24) & 255;
  Serial.write(buf1, sizeof(buf1));

  byte buf2[4];
  buf2[0] = data2 & 255;
  buf2[1] = (data2 >> 8)  & 255;
  buf2[2] = (data2 >> 16) & 255;
  buf2[3] = (data2 >> 24) & 255;
  Serial.write(buf2, sizeof(buf2));

  byte buf3[4];
  buf3[0] = data3 & 255;
  buf3[1] = (data3 >> 8)  & 255;
  buf3[2] = (data3 >> 16) & 255;
  buf3[3] = (data3 >> 24) & 255;
  Serial.write(buf3, sizeof(buf3));

  while (micros() - loop_timer < 2500);
  loop_timer = micros();
}

И я хочу получить данные и распечатать их на python:

import serial
import time
import csv
import sys

PORT = '/dev/tty.usbserial-AL03QWTA'
BAUD = 115200

ser = serial.Serial(PORT, BAUD)

while True:
    data1 = ord(ser.read(1));
    data2 = ord(ser.read(1));
    data3 = ord(ser.read(1));
    data4 = ord(ser.read(1));
    roll = (data4*256*256*256 + data3*256*256 + data2*256 + data1);
    data5 = ord(ser.read(1));
    data6 = ord(ser.read(1));
    data7 = ord(ser.read(1));
    data8 = ord(ser.read(1));
    pitch = (data8*256*256*256 + data7*256*256 + data6*256 + data5);
    data9 = ord(ser.read(1));
    data10 = ord(ser.read(1));
    data11 = ord(ser.read(1));
    data12 = ord(ser.read(1));
    yaw = (data12*256*256*256 + data11*256*256 + data10*256 + data9);
    print(roll + "," + pitch + "," + yaw)

Кажется,полученные данные перепутаны и не принимаются должным образом.Каков наилучший способ отправки данных (вращение, тангаж и рыскание) из Arduino в python, зная, что Arduino обновляет данные каждые 0,0025 с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...