Читать Arduino Serial от python для ulterasonic в реальном времени

У меня проблема с Arduino serial и Python. Я хочу прочитать данные с моего Arduino через Python и построить их в режиме реального времени, но я получаю отложенные результаты.

Это код, работающий на ардуино:

int trig = 7;
int echo = 6;
float T;
float c = 331.4; // скорость звука в секунду
float d;
int distance;
void setup() {
Serial.begin(115200);
Serial.setTimeout(.1);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);

}

void loop() {
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
delayMicroseconds(10);
T = pulseIn(echo,HIGH);
//T = T/1000000;
distance = (T/2)*(c/10000);
//d = c*T;
//d = d*100;
Serial.println(distance);
//delay(50);
}

А вот мой код на Python:

import  serial
import matplotlib.pyplot as plt
import numpy as np
import time
ArduinoData = serial.Serial(port='COM8', baudrate=115200)
# plt.close('all')
plt.figure()
plt.ion()
plt.show()
data = np.array([])
i=0
try:

    while 1<100:
        if (ArduinoData.inWaiting() == 0):
            continue
        a = ArduinoData.readline()
        a.decode()
        b = float(a[0:4])
        data = np.append(data,b)
        plt.cla()
        plt.plot(data)
        print(data[:-1])
        plt.pause(0.001)

        # time.sleep(0.05)

        i = i+1
    ArduinoData.close()
except:
    print("Error")

ребята, есть идеи?

, 👍0

Обсуждение

Пожалуйста, дайте нам лучшее и более подробное описание того, что вы ожидали и что на самом деле происходит (Отредактируйте вопрос для этого, никакой релевантной информации в комментариях, пожалуйста). "не работает в реальном времени" - это не очень полезное описание проблемы., @chrisl

@chrislin the normally with arduino see result in GUI serial pollter arduino in real time with fast speed but when I take value from serial via python I can see result on matplotlib but is very slowly I cant see real time result that is my problem извините за мой язык мой английский очень плох, @Rayan_DPROGMEL

Это означает, что ваша проблема заключается в matplotlib. С быстрым сеансом Google кажется, что вы не должны часто называть plt.plot (). Это строит все данные снова и снова. Кажется, есть лучшие средства для обновления вашего сюжета, когда поступают новые данные. Вы можете гуглить такие термины, как "matplotlib real time plot" или подобные. Мы только эксперты в Arduino, так что это, к сожалению, не тема здесь., @chrisl