Liebes Forum,
ich bin Neueinsteiger in Python und habe natürlich, wie jeder, vieles vor und viele Ideen.
Für mein Auto habe ich folgendes vor:
Mit dem Raspberry Pi 2 möchte ich folgendes realisieren und habe schon mal ein wenig rumexperimentiert.
Ein- Ausgänge Abfragen und steuern klappt soweit für Kompressor und Zündung :thumbs1:
Hardwareaufbau eines AD-Wandlers zur Batteriespannung auslesen mit Spannungsteiler klappt :thumbs1:
Die Python Programmierung zur Anzeige des Wertes ebenfalls :thumbs1:
Das alles als kleines Anfangsprojekt in tkinter auch :thumbs1:
Nun kommt es: Wenn sich die Batteriespannung ändert ( habe dazu ein Poti eingebaut, damit sich die Spannung verändert ) soll sich der Wert auch im Display / Bildschirm ändern.
Das tut es aber nicht. Jetzt an dieser Stelle kämen bestimmt die Schleifen zum Einsatz, die ich nicht beherrsche
Die Schleifen zur Einlesung der AD Werte sind aus Programmteilen zusammengestrickt. Also nicht mein geistiger Erguss.
Vielleicht kann mir jemand sagen, erklären oder eine gute Hilfe geben, dieses zu realisieren?
Vielen lieben Dank,
Eure Fledermaus
[/code]
[code=php]import time;
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM) # GPIO-Pin Bezeichnungen verwenden
GPIO.setwarnings(False) # Warnungen deaktivieren
from tkinter import *
from random import randint
from RPi import GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(14,GPIO.OUT)
GPIO.output(14 , True)
def Relais_1_EIN():
GPIO.output(14, False)
Text1="Kompressor ist AN"
label2.config(text=Text1,bg="green")
def Relais_1_AUS():
GPIO.output(14, True)
Text2="Kompressor ist AUS"
label2.config(text=Text2,bg="red")
def Anzeige_U(event):
label1.config((actual_value))
def readAnalogData(adcChannel, SCLKPin, MOSIPin, MISOPin, CSPin, delay):
""" Funktionsdefinition """
# Negative Flanke des CS-Signals generieren
GPIO.output(CSPin, GPIO.HIGH)
GPIO.output(CSPin, GPIO.LOW)
GPIO.output(SCLKPin, GPIO.LOW)
sendCMD = adcChannel
sendCMD |= 0b00011000 # Entspricht 0x18 (1: Startbit, 1: Single/ended)
# Senden der Bitkombination (Es finden nur 5 Bits Beruecksichtigung)
for i in range(5):
if(sendCMD & 0x10): # Bit an Position 4 pruefen.
GPIO.output(MOSIPin, GPIO.HIGH)
else:
GPIO.output(MOSIPin, GPIO.LOW)
# Negative Flanke des Clock-Signals generieren
GPIO.output(SCLKPin, GPIO.HIGH)
GPIO.output(SCLKPin, GPIO.LOW)
sendCMD <<= 1 # Bitfolge eine Position nach links schieben
# Empfangen der Daten des AD-Wandlers
adcValue = 0 # Reset des gelesenen Wertes
for i in range(11):
# Negative Flanke des Clock-Signals generieren
GPIO.output(SCLKPin, GPIO.HIGH)
GPIO.output(SCLKPin, GPIO.LOW)
adcValue <<= 1 # Bitfolge 1 Position nach links schieben
if(GPIO.input(MISOPin)):
adcValue |=0x01
time.sleep(delay) # Kurze Pause
return adcValue
def setupGPIO(SCLKPin, MOSIPin, MISOPin, CSPin):
""" GPIO-Pin Setup """
GPIO.setup(SCLKPin, GPIO.OUT)
GPIO.setup(MOSIPin, GPIO.OUT)
GPIO.setup(MISOPin, GPIO.IN)
GPIO.setup(CSPin, GPIO.OUT)
# Variablendefinition
ADCChannel = 0 # AD-Kanal
SCLK = 18 # Serial-Clock
MOSI = 24 # Master-Out-Slave-In
MISO = 23 # Master-In-Slave-Out
CS = 25 # Chip-Select
PAUSE = 0.5 # Anzeigepause
setupGPIO(SCLK, MOSI, MISO, CS) # GPIO-Pin Setup
actual_value = readAnalogData(ADCChannel, SCLK, MOSI, MISO, CS, PAUSE)
window = Tk()
window.title("Test")
window.configure(height=400,width=400)
button1 = Button(master=window,
text="Kompressor EIN",
command=Relais_1_EIN,
font=("Arial",20), fg="green", width="20",height="2",pady="10")
button2 = Button(master=window,
text="Kompressor AUS",
command=Relais_1_AUS,
font=("Arial",20), fg="red",width="20",height="2",pady="10" )
label1 = Label(master=window,
font=("Arial",20),
bd=1,width=21,
relief=RIDGE,
height="2",
pady="10",
text=actual_value)
label2 = Label(master=window,
font=("Arial",20),
bd=1,
width=21,
height="2",
relief=RIDGE,
text="")
label1.pack()
label2.pack()
button1.pack()
button2.pack()
window.mainloop()
[/php]