Hilfe mit RFID und Programm

  • Hallo liebe Leute, ich habe vor längere Zeit mal einen Snackautomaten für meinen Dart/Hobbyraum gemacht.
    Nicht dolles, paar Spindeln mit Snacks für die Jungs. Über das DisplayTouch vom Raspberry kann mann im Programm das jeweilige Bild anklicken und ein Snack kommt.
    Funktioniert alles Super. Zwar langsam aber es geht.
    Da es alle so toll finden und andauernd einfach drauf drücken und die Snacks immer raus kommen. ( Freunde und Kinder finde besonders toll :-) )
    Wollte ich es so machen, dass man den Snack auswählen kann, aber der Motor sich erst dreht, wenn die Rfid Karte an den Leser gehalten wurde.
    Dazu habe ich einem Freund den Leser mit einer Karte abgekauft für 5 Euro.
    Jetzt aber zu meinem Problem.
    Ich habe aus dem Internet eine Anleitung gefunden, diese auch angewandt. Wenn ich diese einzeln Starte, kommt ein kleines Fenster, dann kann ich die Karte dranhalten und auf dem Display steht Karte funktioniert bla bla bla. Das hat der Youtuber gemacht, damit man sehen kann, ob die Karte Funktioniert.
    Ich weiß aber nicht, wie ich es machen muss, damit der Motor kurz wartet auf Eingabe oder dran halten der Karte.
    Ich suche seit paar Wochen im Internet und habe so oft versucht einige Sachen zu ändern oder selber zu schreiben. Leide bin ich kein Profi wie der ein oder andere hier.
    Ich hoffe ihr lacht mich nicht aus, oder schreibt such weiter.
    vielleicht ist ja einer dabei, der mir helfen kann, oder sagen kann, was ich schreiben muss.
    Im weiteren Hänge ich euch folgendes an, da ich nicht ganz verstehe was dort passiert. Ihr es aber seht.
    1. Programm vom Youtube um Karte zu prüfen
    2 Den Programmtext vom Import MFCR522.py
    3 Das Programm von meinem kleinen Snackautomat




    Hier der Programmcode zu 1:


    Code
    #!/usr/bin/env python[/color]# -*- coding: utf8 -*-import RPi.GPIO as GPIOimport MFRC522import signalimport timecontinue_reading =  True # Capture SIGINT for cleanup when the script is aborteddef end_read(signal,frame):   global continue_reading   print "Ctrl+C captured, ending read."   continue_reading = False   GPIO.cleanup()# Hook the SIGINTsignal.signal(signal.SIGINT, end_read)# Create an object of the class MFRC522MIFAREReader = MFRC522.MFRC522()# Welcome messageprint "Bitte Produktauswahl bezahlen"while continue_reading:      # Scan for cards       (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)   # If a card is found   if status == MIFAREReader.MI_OK:       print "Bitte warten"       time.sleep(5)       print "Zahlung wird geprüft"       time.sleep(5)       print "Zahlung genehmigt"       time.sleep(5)       print "Ihr Produkt wird ausgeworfen"       print "Vielen Danke für ihren Kauf"      # Get the UID of the card   (status,uid) = MIFAREReader.MFRC522_Anticoll()   # If we have the UID, continue   if status == MIFAREReader.MI_OK:       # Print UID       print "Zahlungsprüfung: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3])          # This is the default key for authentication       key = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]              # Select the scanned tag       MIFAREReader.MFRC522_SelectTag(uid)       # Authenticate       status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid)       # Check if authenticated       if status == MIFAREReader.MI_OK:           MIFAREReader.MFRC522_Read(8)           MIFAREReader.MFRC522_StopCrypto1()       else:           print "Zahlungsfehler"[color=#333333]

    [/color]




    Hier der Programmcode zu 2:


    Python
    #!/usr/bin/env python# -*- coding: utf8 -*-import RPi.GPIO as GPIOimport spiimport signalimport time class MFRC522: NRSTPD = 22  MAX_LEN = 16  PCD_IDLE       = 0x00 PCD_AUTHENT    = 0x0E PCD_RECEIVE    = 0x08 PCD_TRANSMIT   = 0x04 PCD_TRANSCEIVE = 0x0C PCD_RESETPHASE = 0x0F PCD_CALCCRC    = 0x03  PICC_REQIDL    = 0x26 PICC_REQALL    = 0x52 PICC_ANTICOLL  = 0x93 PICC_SElECTTAG = 0x93 PICC_AUTHENT1A = 0x60 PICC_AUTHENT1B = 0x61 PICC_READ      = 0x30 PICC_WRITE     = 0xA0 PICC_DECREMENT = 0xC0 PICC_INCREMENT = 0xC1 PICC_RESTORE   = 0xC2 PICC_TRANSFER  = 0xB0 PICC_HALT      = 0x50  MI_OK       = 0 MI_NOTAGERR = 1 MI_ERR      = 2  Reserved00     = 0x00 CommandReg     = 0x01 CommIEnReg     = 0x02 DivlEnReg      = 0x03 CommIrqReg     = 0x04 DivIrqReg      = 0x05 ErrorReg       = 0x06 Status1Reg     = 0x07 Status2Reg     = 0x08 FIFODataReg    = 0x09 FIFOLevelReg   = 0x0A WaterLevelReg  = 0x0B ControlReg     = 0x0C BitFramingReg  = 0x0D CollReg        = 0x0E Reserved01     = 0x0F  Reserved10     = 0x10 ModeReg        = 0x11 TxModeReg      = 0x12 RxModeReg      = 0x13 TxControlReg   = 0x14 TxAutoReg      = 0x15 TxSelReg       = 0x16 RxSelReg       = 0x17 RxThresholdReg = 0x18 DemodReg       = 0x19 Reserved11     = 0x1A Reserved12     = 0x1B MifareReg      = 0x1C Reserved13     = 0x1D Reserved14     = 0x1E SerialSpeedReg = 0x1F  Reserved20        = 0x20   CRCResultRegM     = 0x21 CRCResultRegL     = 0x22 Reserved21        = 0x23 ModWidthReg       = 0x24 Reserved22        = 0x25 RFCfgReg          = 0x26 GsNReg            = 0x27 CWGsPReg          = 0x28 ModGsPReg         = 0x29 TModeReg          = 0x2A TPrescalerReg     = 0x2B TReloadRegH       = 0x2C TReloadRegL       = 0x2D TCounterValueRegH = 0x2E TCounterValueRegL = 0x2F  Reserved30      = 0x30 TestSel1Reg     = 0x31 TestSel2Reg     = 0x32 TestPinEnReg    = 0x33 TestPinValueReg = 0x34 TestBusReg      = 0x35 AutoTestReg     = 0x36 VersionReg      = 0x37 AnalogTestReg   = 0x38 TestDAC1Reg     = 0x39 TestDAC2Reg     = 0x3A TestADCReg      = 0x3B Reserved31      = 0x3C Reserved32      = 0x3D Reserved33      = 0x3E Reserved34      = 0x3F    serNum = []  def __init__(self, dev='/dev/spidev0.0', spd=1000000):   spi.openSPI(device=dev,speed=spd)   GPIO.setmode(GPIO.BOARD)   GPIO.setup(22, GPIO.OUT)   GPIO.output(self.NRSTPD, 1)   self.MFRC522_Init()  def MFRC522_Reset(self):   self.Write_MFRC522(self.CommandReg, self.PCD_RESETPHASE)  def Write_MFRC522(self, addr, val):   spi.transfer(((addr<<1)&0x7E,val))  def Read_MFRC522(self, addr):   val = spi.transfer((((addr<<1)&0x7E) | 0x80,0))   return val[1]  def SetBitMask(self, reg, mask):   tmp = self.Read_MFRC522(reg)   self.Write_MFRC522(reg, tmp | mask)    def ClearBitMask(self, reg, mask):   tmp = self.Read_MFRC522(reg);   self.Write_MFRC522(reg, tmp & (~mask))  def AntennaOn(self):   temp = self.Read_MFRC522(self.TxControlReg)   if(~(temp & 0x03)):     self.SetBitMask(self.TxControlReg, 0x03)  def AntennaOff(self):   self.ClearBitMask(self.TxControlReg, 0x03)  def MFRC522_ToCard(self,command,sendData):   backData = []   backLen = 0   status = self.MI_ERR   irqEn = 0x00   waitIRq = 0x00   lastBits = None   n = 0   i = 0      if command == self.PCD_AUTHENT:     irqEn = 0x12     waitIRq = 0x10   if command == self.PCD_TRANSCEIVE:     irqEn = 0x77     waitIRq = 0x30      self.Write_MFRC522(self.CommIEnReg, irqEn|0x80)   self.ClearBitMask(self.CommIrqReg, 0x80)   self.SetBitMask(self.FIFOLevelReg, 0x80)      self.Write_MFRC522(self.CommandReg, self.PCD_IDLE);        while(i<len(sendData)):     self.Write_MFRC522(self.FIFODataReg, sendData[i])     i = i+1      self.Write_MFRC522(self.CommandReg, command)        if command == self.PCD_TRANSCEIVE:     self.SetBitMask(self.BitFramingReg, 0x80)      i = 2000   while True:     n = self.Read_MFRC522(self.CommIrqReg)     i = i - 1     if ~((i!=0) and ~(n&0x01) and ~(n&waitIRq)):       break      self.ClearBitMask(self.BitFramingReg, 0x80)    if i != 0:     if (self.Read_MFRC522(self.ErrorReg) & 0x1B)==0x00:       status = self.MI_OK       if n & irqEn & 0x01:         status = self.MI_NOTAGERR            if command == self.PCD_TRANSCEIVE:         n = self.Read_MFRC522(self.FIFOLevelReg)         lastBits = self.Read_MFRC522(self.ControlReg) & 0x07         if lastBits != 0:           backLen = (n-1)*8 + lastBits         else:           backLen = n*8                  if n == 0:           n = 1         if n > self.MAX_LEN:           n = self.MAX_LEN            i = 0         while i<n:           backData.append(self.Read_MFRC522(self.FIFODataReg))           i = i + 1;     else:       status = self.MI_ERR   return (status,backData,backLen)   def MFRC522_Request(self, reqMode):   status = None   backBits = None   TagType = []      self.Write_MFRC522(self.BitFramingReg, 0x07)      TagType.append(reqMode);   (status,backData,backBits) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, TagType)    if ((status != self.MI_OK) | (backBits != 0x10)):     status = self.MI_ERR        return (status,backBits)   def MFRC522_Anticoll(self):   backData = []   serNumCheck = 0      serNum = []    self.Write_MFRC522(self.BitFramingReg, 0x00)      serNum.append(self.PICC_ANTICOLL)   serNum.append(0x20)      (status,backData,backBits) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE,serNum)      if(status == self.MI_OK):     i = 0     if len(backData)==5:       while i<4:         serNumCheck = serNumCheck ^ backData[i]         i = i + 1       if serNumCheck != backData[i]:         status = self.MI_ERR     else:       status = self.MI_ERR    return (status,backData)  def CalulateCRC(self, pIndata):   self.ClearBitMask(self.DivIrqReg, 0x04)   self.SetBitMask(self.FIFOLevelReg, 0x80);   i = 0   while i<len(pIndata):     self.Write_MFRC522(self.FIFODataReg, pIndata[i])     i = i + 1   self.Write_MFRC522(self.CommandReg, self.PCD_CALCCRC)   i = 0xFF   while True:     n = self.Read_MFRC522(self.DivIrqReg)     i = i - 1     if not ((i != 0) and not (n&0x04)):       break   pOutData = []   pOutData.append(self.Read_MFRC522(self.CRCResultRegL))   pOutData.append(self.Read_MFRC522(self.CRCResultRegM))   return pOutData  def MFRC522_SelectTag(self, serNum):   backData = []   buf = []   buf.append(self.PICC_SElECTTAG)   buf.append(0x70)   i = 0   while i<5:     buf.append(serNum[i])     i = i + 1   pOut = self.CalulateCRC(buf)   buf.append(pOut[0])   buf.append(pOut[1])   (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, buf)      if (status == self.MI_OK) and (backLen == 0x18):     print "Size: " + str(backData[0])     return    backData[0]   else:     return 0  def MFRC522_Auth(self, authMode, BlockAddr, Sectorkey, serNum):   buff = []   # First byte should be the authMode (A or B)   buff.append(authMode)   # Second byte is the trailerBlock (usually 7)   buff.append(BlockAddr)   # Now we need to append the authKey which usually is 6 bytes of 0xFF   i = 0   while(i < len(Sectorkey)):     buff.append(Sectorkey[i])     i = i + 1   i = 0   # Next we append the first 4 bytes of the UID   while(i < 4):     buff.append(serNum[i])     i = i +1   # Now we start the authentication itself   (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_AUTHENT,buff)   # Check if an error occurred   if not(status == self.MI_OK):     print "AUTH ERROR!!"   if not (self.Read_MFRC522(self.Status2Reg) & 0x08) != 0:     print "AUTH ERROR(status2reg & 0x08) != 0"   # Return the status   return status  def MFRC522_StopCrypto1(self):   self.ClearBitMask(self.Status2Reg, 0x08) def MFRC522_Read(self, blockAddr):   recvData = []   recvData.append(self.PICC_READ)   recvData.append(blockAddr)   pOut = self.CalulateCRC(recvData)   recvData.append(pOut[0])   recvData.append(pOut[1])   (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, recvData)   if not(status == self.MI_OK):     print "Error while reading!"   i = 0   if len(backData) == 16:     print "Sector "+str(blockAddr)+" "+str(backData)  def MFRC522_Write(self, blockAddr, writeData):   buff = []   buff.append(self.PICC_WRITE)   buff.append(blockAddr)   crc = self.CalulateCRC(buff)   buff.append(crc[0])   buff.append(crc[1])   (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, buff)   if not(status == self.MI_OK) or not(backLen == 4) or not((backData[0] & 0x0F) == 0x0A):       status = self.MI_ERR      print str(backLen)+" backdata &0x0F == 0x0A "+str(backData[0]&0x0F)   if status == self.MI_OK:       i = 0       buf = []       while i < 16:           buf.append(writeData[i])           i = i + 1       crc = self.CalulateCRC(buf)       buf.append(crc[0])       buf.append(crc[1])       (status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE,buf)       if not(status == self.MI_OK) or not(backLen == 4) or not((backData[0] & 0x0F) == 0x0A):           print "Error while writing"       if status == self.MI_OK:           print "Data written" def MFRC522_DumpClassic1K(self, key, uid):   i = 0   while i < 64:       status = self.MFRC522_Auth(self.PICC_AUTHENT1A, i, key, uid)       # Check if authenticated       if status == self.MI_OK:           self.MFRC522_Read(i)       else:           print "Authentication error"       i = i+1 def MFRC522_Init(self):   GPIO.output(self.NRSTPD, 1)    self.MFRC522_Reset();         self.Write_MFRC522(self.TModeReg, 0x8D)   self.Write_MFRC522(self.TPrescalerReg, 0x3E)   self.Write_MFRC522(self.TReloadRegL, 30)   self.Write_MFRC522(self.TReloadRegH, 0)      self.Write_MFRC522(self.TxAutoReg, 0x40)   self.Write_MFRC522(self.ModeReg, 0x3D)   self.AntennaOn()






    Hier der Programmcode zu 3



    Code
    # -*- coding: utf-8 -*-from Tkinter import *                                   #Benutzeroberflächeimport tkFontimport globimport smbus                                            #I2C Busimport time                                             #Wartezeit/Verzögerungimport sysimport RPi.GPIO as gpio, signal                         #Input/Output Schnittstelleimport smtplib#Email Bib.import MFRC522import signal                                                        #_______________________________________________________________________________from email.mime.text import MIMETextfrom email.header import Headerfrm  = 'Hobbyraum>'to   = 'Empfänger<extra weggemacht da privat>'subj = 'Übertemperatur'subj2= 'Ware Nachfuellen'#_______________________________________________________________________________# 1-Wire Temperatursensor wird ausgelesengpio.setmode(gpio.BCM)gpio.setwarnings(False)gpio.setup(4, gpio.IN, pull_up_down=gpio.PUD_UP)print'Warte auf Initialisierung TempSensor'base_dir ='/sys/bus/w1/devices/'WIRE='/sys/devices/w1_bus_master1/28-80000003aa6d/w1_slave'#_______________________________________________________________________________# Temperatur alle 30 s auslesen und anzeigendef temp():       with open(WIRE) as f:           f.readline()                            # Erste Zeile ignorieren           s=f.readline()                          # zweite Zeile           n=s.find('t=')                          # dort 't=' finden           if(n>0):                   t= float(s[n+2:])/1000                   lbl2.configure(text='Temperatur: %6.1f°C' %t)                   root.after(30000, temp)         # Messung neustarten nach 30 Sekunden                   # Bei mehr als 30°C - Automatische Email an den Betreiber           time.sleep(10.0)           if(t>30):                                         #Bedingung                   try:                           mime = MIMEText(msg,'plain','utf-8')                           mime['From']= frm                           mime['To']= to                           mime['Subject']= Header(subj,'utf-8')                                                      server=smtplib.SMTP('smtp.gmail.com') #Einwählen auf Website                           server.starttls()                     #Verschlüsselung                  #Verschlüsselung                                  server.login('weggemacht da privat')       #Benutzername - Passwort                           server.sendmail(frm, [to],mime.as_string())                           server.quit()                           print'Email Temp gesendet'                   except:                           print("Email konnte nicht gesendet werden.",sys.exc_info())                       #_______________________________________________________________________________                   #Initialisierung und Adressierung SMBus - MCP23017                    b = smbus.SMBus(1)                                  # System Management Bus 1address = 0x20                                      # I2C Adresse Portexpander MCP23017def set(row,data):   b.write_byte_data(0x20,0x00,0x00)               # MCP23017 Bank A Ausgang   b.write_byte_data(0x20,0x01,0x00)               # MCP23017 Bank B Ausgang   write = b.write_byte_data(address,row,data)#_______________________________________________________________________________#Ansteuerung und Freigabe Motor1 - Twix AusgabecounterTwix=0def MotorTwix():                # Funktion Motor Twix  global counterTwix  counterTwix +=1  print counterTwix  if counterTwix < 9:   print'Ausgabe Twix'         # Ausgabe Text in Konsole   row=0x14                    # Bank A wird ausgewählt   i = 0                       # Hilfsvariable      while i < 513:              # 512 Schritte - 360 Grad       i += 1                  # Variable i +1 pro durschlauf                               set(row,0x80)           # Ansteuerung Motorspulen (1000 000)       time.sleep(0.001)       # Zeitverzoegerung - 1ms       set(row,0xC0)           # (1100 0000)                           time.sleep(0.001)                                  set(row,0x40)           # (0100 0000)                           time.sleep(0.001)                                  set(row,0x60)           # (0110 0000)                       time.sleep(0.001)                                  set(row,0x20)           # (0010 0000)                           time.sleep(0.001)                                  set(row,0x30)           # (0011 0000)                           time.sleep(0.001)                                  set(row,0x10)           # (0001 0000)                           time.sleep(0.001)                                  set(row,0x90)           # (1001 0000)                           time.sleep(0.001)                                  set(row,0x00)         if counterTwix == 7:   mime = MIMEText(msg2,'plain','utf-8')   mime['From']= frm   mime['To']= to   mime['Subject']= Header(subj2,'utf-8')   server=smtplib.SMTP('smtp.gmail.com') #Einwählen auf Website   server.starttls()                     #Verschlüsselung                  #Verschlüsselung   server.login('weggemacht da privat')       #Benutzername - Passwort   server.sendmail(frm, [to],mime.as_string())   server.quit()   print'Email Gesendet'      return#_______________________________________________________________________________#Ansteuerung und Freigabe Motor2 - Snickers AusgabecounterSnickers=0def MotorSnickers():  global counterSnickers  counterSnickers += 1  if counterSnickers < 9:             print'Ausgabe Snickers'   row=0x14   i = 0      while i < 513:                                  # 512 Schritte - 360 Grad       i += 1                                             set(row,0x08)       time.sleep(0.001)       set(row,0x0C)       time.sleep(0.001)       set(row,0x04)       time.sleep(0.001)       set(row,0x06)       time.sleep(0.001)       set(row,0x02)       time.sleep(0.001)       set(row,0x03)       time.sleep(0.001)       set(row,0x01)       time.sleep(0.001)       set(row,0x09)       time.sleep(0.005)       set(row,0x00)  if counterSnickers == 7:   mime = MIMEText(msg2,'plain','utf-8')   mime['From']= frm   mime['To']= to   mime['Subject']= Header(subj2,'utf-8')   server=smtplib.SMTP('smtp.gmail.com') #Einwählen auf Website   server.starttls()                     #Verschlüsselung                  #Verschlüsselung   server.login('weggemacht da privat')       #Benutzername - Passwort   server.sendmail(frm, [to],mime.as_string())   server.quit()   return#_______________________________________________________________________________#Ansteuerung und Freigabe Motor3 - Mars AusgabecounterMars=0def MotorMars():  global counterMars  counterMars +=1  if counterMars < 9:   print'Ausgabe Mars'      row=0x15                                        # Bank B wird ausgewählt   i = 0      while i < 513:                                  # 512 Schritte - 360 Grad       i += 1                                             set(row,0x80)                                      time.sleep(0.001)                           # Zeitverzoegerung - 1ms       set(row,0xC0)                                      time.sleep(0.001)                                  set(row,0x40)                                      time.sleep(0.001)                                  set(row,0x60)                                  time.sleep(0.001)                                  set(row,0x20)                                      time.sleep(0.001)                                  set(row,0x30)                                      time.sleep(0.001)                                  set(row,0x10)                                      time.sleep(0.001)                                  set(row,0x90)                                      time.sleep(0.001)                                  set(row,0x00)         if counterMars == 7:   mime = MIMEText(msg2,'plain','utf-8')   mime['From']= frm   mime['To']= to   mime['Subject']= Header(subj2,'utf-8')   server=smtplib.SMTP('smtp.gmail.com') #Einwählen auf Website   server.starttls()                     #Verschlüsselung                  #Verschlüsselung   server.login('weggemacht da privat')       #Benutzername - Passwort   server.sendmail(frm, [to],mime.as_string())   server.quit()   return#_______________________________________________________________________________#Ansteuerung und Freigabe Motor4 - Kinderriegel AusgabecounterKinderriegel=0def MotorKinderriegel():  global counterKinderriegel  counterKinderriegel += 1  if counterKinderriegel < 9:     print'Ausgabe Kinderriegel'   row=0x15   i = 0      while i < 513:                                  # 512 Schritte - 360 Grad       i += 1                                             set(row,0x08)       time.sleep(0.001)       set(row,0x0C)       time.sleep(0.001)       set(row,0x04)       time.sleep(0.001)       set(row,0x06)       time.sleep(0.001)       set(row,0x02)       time.sleep(0.001)       set(row,0x03)       time.sleep(0.001)       set(row,0x01)       time.sleep(0.001)       set(row,0x09)       time.sleep(0.001)       set(row,0x00)  if counterKinderriegel == 7:   mime = MIMEText(msg2,'plain','utf-8')   mime['From']= frm   mime['To']= to   mime['Subject']= Header(subj2,'utf-8')   server=smtplib.SMTP('smtp.gmail.com') #Einwählen auf Website   server.starttls()                     #Verschlüsselung                  #Verschlüsselung   server.login('')       #Benutzername - Passwort   server.sendmail(frm, [to],mime.as_string())   server.quit()      return#_______________________________________________________________________________# Benutzeroberflächeroot = Tk()#root.attributes("-fullscreen", True)   #Automatische Erstellung eines Fullscreen#root.wm_overrideredirect(True)         #Titelleiste und Fensterahmen ausblendenroot.title("PS")            #Fenster Überschriftroot.geometry('1200x750')                #Fenster Größeroot.configure(bg="white")              #Hintergrundfarbe Weißlbl1 = Label (root, bg="white", text="Hey Jungs, sucht euch etwas aus.")lbl2 = Label (root, bg="white")                            image1 = PhotoImage(file="/home/pi/Desktop/Images - Touch/Kinderriegel.png")  image2 = PhotoImage(file="/home/pi/Desktop/Images - Touch/twix.png")    image3 = PhotoImage(file="/home/pi/Desktop/Images - Touch/mars.png")    image4 = PhotoImage(file="/home/pi/Desktop/Images - Touch/snickers.png")pw = Entry(root,)temp()                                                 #Temperatur auslesen, lbl2-Text einstellenc = Button(root, bd="0p", bg="white", image=image1, command=MotorKinderriegel)d = Button(root, bd="0p", bg="white", image=image2, command=MotorTwix)e = Button(root, bd="0p", bg="white", image=image3, command=MotorMars)f = Button(root, bd="0p", bg="white", image=image4, command=MotorSnickers)lbl1.pack()                     # Platzierung mit pack = zentriertlbl2.place(x=350, y=350)        # Platzierung Temperaturausgabec.place(x=60, y=40)             # Koordinaten Twix-Button auf dem Screend.place(x=500,y=40)             # Koordinaten Snickers-Button auf dem Screene.place(x=60,y=200)             # Koordinaten Mars-Button auf dem Screenf.place(x=500,y=200)            # Koordinaten Kinderriegel-Button auf dem Screeng.place(x=400,y=200)root.mainloop()

  • 1. Bitte UNBDINGT den ersten Beitrag bearbeiten -> Unten rechts von Deinem Beitrag -> Und deine Scripte in CODE Blöcke packen !!
    FAQ => Nützliche Links / Linksammlung => HowTo: CODE / PHP Code im Forum posten


    2. Bitte unterlasse innerhalb der Code Blöcke irgendwelche Farbliche Codierung - funktioniert eh nicht


    3. Wenn du schon dabei bist dann ändere bitte auch die Überschrift! "Hilfe" ist nicht wirklich aussage kräftig über dein tatsächliches Anliegen!



    Solange diese 3 Punkte von Dir nicht korrigiert sind, tu ich mir es nicht an deinen Beitrag zu lesen