[ Foro de Python ]

Problema delimitando el eje y <>

02-May-2019 23:43
Karen Len
0 Respuestas

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.

[code]//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
   }
 }[/code]
y en Python tengo esto:

[code]#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()

[/code]

La grafica que obtengo es algo así




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...