[ Foro de Python ]
Hola gente ¿Cómo están? Estoy diseñando un sistema que me permita visualizar mediante gráficas 3 temperaturas provenientes de 3 termocuplas utilizando arduino(para obtener la data) y python(para graficarla), ya obtuve una gráfica en tiempo real y todo bien, el problema es que cuando delimito el eje Y no me deja ._. he probado con todo tipo de delimitación que se me ha ocurrido y que me he encontrado en internet pero no consigo como hacer esta delimitación bien, mi código es este.
En arduino.
//Este código me sensa 3 temperaturas detectadas por 3 termocuplas tipo K, las lecturas se realizarán cada 5 seg
#include <max6675.h> //Librería del MAX6675
unsigned long interval=5000; // Tiempo de espera
unsigned long previousMillis=0; // millis() returns an unsigned long.(Investiga aparte el uso de millis para que entiendas bien esto
int ktcSO = 8;
int ktcCS1 = 9; // Termocupla 1
int ktcCLK = 10;
int ktcCS2 = 11; // Termocupla 2
int ktcCS3 = 6; // Termocupla 3
int temp1; //
int temp2; // Estas serán las temperaturas que medirán nuestras 3 termocuplas.
int temp3; //
MAX6675 ktc1(ktcCLK, ktcCS1, ktcSO);
MAX6675 ktc2(ktcCLK, ktcCS2, ktcSO);
MAX6675 ktc3(ktcCLK, ktcCS3, ktcSO);
//codigos para manejar el max6675, si te puedes dar cuenta, el CLK y el SO son iguales en las 3 Termocuplas, ¿Por qué?
void setup()
{
Serial.begin(9600); //Iniciamos la comunicación serial
}
void loop()
{
unsigned long currentMillis = millis();
if ((unsigned long)(currentMillis - previousMillis) >= interval)//con este condicional activo el millis
{
temp1 = ktc1.readCelsius();
Serial.print(temp1);
Serial.print("\t");
temp2 = ktc2.readCelsius();
Serial.print(temp2);
Serial.print("\t");
temp3 = ktc3.readCelsius();
Serial.print(temp3);
Serial.print("\n"); //Esto me imprime un enter
previousMillis = millis(); //Tal como el delay, el millis debe ser citado al final
}
}
y en Python tengo esto:
#Me grafica en tiempo real pero no me toma el crecimiento del tiempo
# y no tengo límites en el axe y
#ESTE ES EL CODIGO QUE PUEDE ESTAR MÁS CERCA
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
import serial
tiempo=[]
t1=[]
t2=[]
t3=[]
fig = plt.figure("Temperatura")
ax=fig.add_subplot(111)
#limx=np.arange(20,200)
#plt.ylim(0, 30)
#plt.xlim(0, 10)
#ax.clear()
ax.set_ylim([0,40])
ax.set_xlim(0,10)
arduino=serial.Serial("COM6",9600)
#plt.axis([0,10,15,200]) NO DELIMITAR ASÍ
i=0
def animate(i):
while i<=10:
i +=1
e=arduino.readline().decode("utf-8").strip("\n")
s=e.split("\t")
tiempo.append(i)
temp1= s[0]
temp2= s[1]
temp3= s[2]
t1.append(temp1)
t2.append(temp2)
t3.append(temp3)
print(s)
print(t1)
print(t2)
print(t3)
linea1=ax.plot(t1)
linea2=ax.plot(t2)
linea3=ax.plot(t3)
plt.setp(linea1, color='blue')
plt.setp(linea2, color='orange')
plt.setp(linea3, color='green')
return linea1, linea2, linea3
plt.xlabel("Tiempo de prueba (seg.)")
plt.ylabel("Temperaturas (ºC)")
ani = animation.FuncAnimation(fig, animate,interval=1000)
plt.show()
La grafica que obtengo es algo así
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)