Читать 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")
ребята, есть идеи?
@Rayan_DPROGMEL, 👍0
Обсуждение0
Смотрите также:
- Последовательная связь Arduino с Python: отправка массива
- Сброс последовательного порта Arduino в последовательном мониторе и Python
- Последовательная связь между python и arduino
- Почему нужно использовать latin-1 вместо utf-8 при использовании python с arduino?
- серийные данные портятся
- Как игнорировать значения мусора при последовательной связи между Arduino и Python
- В чем разница, когда ардуино был отключен от сети, и когда последовательный порт был закрыт?
- Отладка различного поведения последовательного приема/отправки между Uno и Mega
Пожалуйста, дайте нам лучшее и более подробное описание того, что вы ожидали и что на самом деле происходит (Отредактируйте вопрос для этого, никакой релевантной информации в комментариях, пожалуйста). "не работает в реальном времени" - это не очень полезное описание проблемы., @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