Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import serial
- import matplotlib.pyplot as plotInterface
- from drawnow import *
- temperatureData = [] #Tablica przechowujaca kolejne odczytane wartosci temperatury
- dataCounter = 0 #Licznik elementow tablicy temperatureData
- stmData = serial.Serial('com3', 115200) #Obiekt serial do przechowywania danych z interfejsu UART
- plotInterface.ion() #Uruchomienie interaktywnego trybu bilbioteki matplotlib do wyswietlania w czasie rzeczywistym
- #Funkcja rysujaca punkty na wykresie
- def drawPoint():
- plotInterface.ylim(20,40) #Zakres wartosci na osi Y zgodny z zakresem pomiarowym czujnika DS18B20
- plotInterface.grid(True)
- plotInterface.ylabel('Temperatura (*C)')
- plotInterface.xlabel('Liczba przechowywanych odczytow')
- plotInterface.plot(temperatureData, 'ro-', label='Pojedynczy odczyt')
- plotInterface.legend(loc='upper left')
- plotInterface.ticklabel_format(useOffset=False) #Wylacz automatyczne skalowanie osi Y
- #Nieskonczona petla dzialajaca rownolegle z programem na mikrokontrolerze
- while True:
- #Petla wewnetrzna, zapobiega wykonaniu instrukcji petli zewnetrznej az do momentu wykrycia nowych danych
- while (stmData.inWaiting() == 0):
- pass
- uartString = stmData.readline() #Odczytenie stringa transmitowanego przez interfejs UART
- currentTemperature = float(uartString)
- temperatureData.append(currentTemperature)
- print str(currentTemperature) + "*C"
- drawnow(drawPoint)
- plotInterface.pause(.000001)
- #Po wykonaniu 50 odczytow temperatury usuwaj najstarszy z kazdym kolejnym
- dataCounter = dataCounter + 1
- if(dataCounter > 50):
- temperatureData.pop(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement