[ 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.


//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.)