Stap 4: Python interactie
Doen gewoon niet knippen en plak deze code, maar zorg ervoor dat u het begrijpt, zodat u kunt uw eigen live grafische programma's maken vanaf nul.
#step 1: de bibliotheek importeren
alleen voor importeren importeren van seriële # seriële bibliotheek
import numpy # importeren numpy
importeren van matplotlib.pyplot als plt #import matplotlib bibliotheek
vanuit drawnow importeren *
#step2: instellen van de variabelen en seriële object maken
tempF =]
Druk =]
arduinoData = seriële. Serieel ('com11', 115200) #Creating onze seriële-object met de naam arduinoData
PLT.ion() #Tell-matplotlib gewenste interactieve modus tot live gegevens uitzetten
CNT = 0
Opmerking:-altijd het controleren van de com-poort. voor mijn geval sluit ik de arduino in com11. uw deffer van mij is. en de baud-rate dezelfde baud-rate in schets van de arduino en python gebruiken anders python mislukken om te interageren met arduino.
stap # 3: een functie voor perceel maken:-
def makeFig(): #Create een functie dat onze gewenste perceel maakt
PLT.ylim(80,90) #Set y-min en max waarden
PLT.title ('mijn Live Streaming Sensor Data') #Plot de titel
PLT.grid(true) #Turn het raster op
PLT.ylabel ('Temp F') #Set ylabels
PLT.plot (tempF, ' ro-', label = 'Graden F') #plot de temperatuur
PLT.Legend (loc = 'linksboven') #plot de legende
plt2=PLT.TwinX() #Create een tweede y-as
PLT.ylim(93450,93525) #Set grenzen van tweede y-as - aanpassen aan lezingen die u krijgt
plt2.plot (druk, "b ^-', label = 'Druk (Pa)') #plot druk gegevens
plt2.set_ylabel ('Pressrue (Pa)') #label tweede y-as
plt2.ticklabel_format(useOffset=false) #Force matplotlib aan niet schalen y-as
plt2.Legend (loc = 'rechtsboven') #plot de legende
Step4:loops dat forever:-
terwijl True: # While lus die voor eeuwig lussen
terwijl (arduinoData.inWaiting()==0): #Wait hier tot daar is gegevens
doorgeven van #do niets
arduinoString = arduinoData.readline() #read de regel tekst van de seriële poort
dataArray = arduinoString.split(',') #Split het in een array genaamd dataArray
Temp = float (dataArray[0]) #Convert eerste element dat getal met drijvende en put in temp
P = float (dataArray[1]) #Convert tweede element drijvende nummer en zet in P tempF.append(temp) #Build onze tempF matrix door toe te voegen temp lezingen pressure.append(P) #Building onze druk matrix door P lezingen drawnow(makeFig) #Call drawnow voor het bijwerken van onze live grafiek toe te voegen
PLT.pause(.000001) #Pause kort. Belangrijk om te voorkomen dat drawnow crashen
CNT = cnt + 1
if(CNT>50): je hebt 50 of meer punten, verwijderen van de eerste die uit de matrix tempF.pop(0) #This #If laat ons toe om gewoon het zien van de laatste 50 gegevenspunten
Pressure.pop(0)
Nota: hier is de truc cnt. Wanneer graaf cross de 50 of meer, verwijdert u de eerste die uit de matrix.
U moet gegevens, zoals de grafiek zien. U zult waarschijnlijk wilt aanpassen uw parameters schaal y-as in Python zodat de schaal is geschikt voor de gegevens die u neemt. Als uw grafiek leeg, waarschijnlijk is uw y-schalen zijn niet goed voor uw gegevens metingen.