PyQt5 Progress mit ext Variablen Updaten

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
starstrike
User
Beiträge: 14
Registriert: Donnerstag 3. Oktober 2019, 09:16

Mein Sensor kann bis 180 messen.
Aktuell habe ich am MPC3008 einen 10KOhm Poti angeschlossen und es einfacher zu testen.
ich kann im reinen Tempauslesen programm , die Temp auf 100 bis 200 stellen und dann die Statusbar öffnen.
Aber alles über 100 wird nicht angezeigt.
0-100 funktioniert 1a


Tempauslesen_Test.py :

Code: Alles auswählen

#!/usr/bin/env python
import time
import RPi.GPIO as GPIO
import sys

GPIO.setmode(GPIO.BCM)		#Verwendung der GPIO-Zahlen anstelle der
												#Pin-Nummer

HIGH = True		#High-Pegel
LOW = False		#Low-Pegel

def readAnalogData(adcChannel, SCLKPin, MOSIPin, MISOPin, CSPin):
	# Pegel vorbereiten
	GPIO.output (CSPin, HIGH)
	GPIO.output (CSPin, LOW)
	GPIO.output(SCLKPin, LOW)
	
	sendcmd = adcChannel
	sendcmd |= 0b00011000

	# Senden der Bitkombination (Es finden nur 5 Bit Beruecksichtigung)
	for i in range(5):
		if (sendcmd & 0x10): 	# Bit an Pos 4 pruefen. Zaehlung bei 0
			GPIO.output(MOSIPin, HIGH)
		else:
			GPIO.output(MOSIPin, LOW)
		# Negative Flanke des Clocksignals generieren
		GPIO.output(SCLKPin, HIGH)
		GPIO.output(SCLKPin, LOW)
		sendcmd <<= 1 # Bitfolge eine Position nach links schieben
		
	#Empfangen der Daten des ADC
	adcvalue = 0 	#Ruecksetzen des gelesenen Wertes
	for i in range(11):
		GPIO.output(SCLKPin, HIGH)
		GPIO.output(SCLKPin, LOW)
		adcvalue <<=1 	#1 Position nach links schieben
		if (GPIO.input(MISOPin)):
			adcvalue |= 0x01
	
	time.sleep(0.5)
	return adcvalue

# Variablendefinition
ADC_Channel = 0 	# Analog/Digital-Channel
SCLK		= 11	# Serial-Clock
MOSI		= 10	# Master-Out-Slave-In
MISO		= 9		# Master-In-Slave-Out
CS			= 8		# Chip-Select

# Pin-Programmierung
GPIO.setwarnings(False)
GPIO.setup(SCLK, GPIO.OUT)
GPIO.setwarnings(False)
GPIO.setup(MOSI, GPIO.OUT)
GPIO.setwarnings(False)
GPIO.setup(MISO, GPIO.IN)
GPIO.setwarnings(False)
GPIO.setup(CS, GPIO.OUT)

def Temperatur1():
	Umrechnen1 = readAnalogData(ADC_Channel, SCLK, MOSI, MISO, CS)
	Umrechnen2 = ((Umrechnen1*0.0032)*330)/(3.3*(1-((Umrechnen1*0.0032)/3.3)))
	Temp1= (Umrechnen2-100)/0.39
	return Temp1


if __name__ == "__main__":
	while True:
		Temperatur = Temperatur1()
		print(Temperatur)

		

__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Funktioniert fuer mich alles einwandfrei.

Code: Alles auswählen

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QTimer
import itertools

MAXTEMP = 100
TEMPIT = itertools.cycle(list(range(MAXTEMP)) + list(range(MAXTEMP, 0, -1)))


def determine_temperature():
    return next(TEMPIT)


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(300, 300)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setGeometry(QtCore.QRect(80, 120, 118, 24))
        self.progressBar.setMaximum(0)
        self.progressBar.setMaximum(200)
        #self.progressBar.setProperty(0)
        self.progressBar.setObjectName("progressBar")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 28))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        self.timer = QTimer()
        self.timer.timeout.connect(self.update_temperature)
        self.timer.start(1)

    def update_temperature(self):
        temperature = determine_temperature()
        if temperature < 500:
            self.progressBar.setValue((temperature))
        else:
            self.timer.stop()

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Temperatur1"))
        self.progressBar.setFormat(_translate("MainWindow", "%p°C"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
starstrike
User
Beiträge: 14
Registriert: Donnerstag 3. Oktober 2019, 09:16

Das Programm zeigt mir bei genau dem Code maximal 100°C an. Jemand eine Idee?
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Natürlich tut es das. Hast du das mal angeschaut ? Da gibts eine Einstellung für. Und wenn du die auf 200 setzt, dann geht das auch auf die volle Breite. Es liegt also an dem Teil der die Temperatur ermittelt.
Antworten