Jump to content

MaDe

Members
  • Gesamte Inhalte

    8
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von MaDe

  1. Entschuldigung den Teil des Codes hab ich vergessen anzuhängen.

    Hier mal die Callbacks press und count wie sie hintereinander im code stehen:

    Ich finde da keinen Fehler  :-\

     

        # Rotary für die Eingabe der Emissionswerte    
        def cb_rotary2_press(self):
    
            self.press = True
            if self.press== True:
                self.Tick2 = self.Tick2 +1    
            else:
                self.Tick2 = self.Tick2
            if self.Tick2 == 2:
                self.Tick2 = 0
    
            if self.Tick2 ==0:
    
                reset= True    
                self.re2.get_count(reset)
                self.count_e1=self.press_counter2[0]
    
                if self.count_e2 != self.press_counter2[1]:
                    self.ir2.set_emissivity(int(self.e2_ir))
                    #log.info("e2_ir:" + str(int(self.e2_ir)))
                if self.button_pressed == 1:
                    if self.button_counter[1] % 4 == 1:
                        self.lcd.write_line(3,10," ")
                        self.lcd.write_line(2,10,"-")
                        
            else:
                reset= True
                self.re2.get_count(reset)
                self.count_e2=self.press_counter2[1]
                if self.count_e1 != self.press_counter2[0]:
                    self.ir1.set_emissivity(int(self.e1_ir))
                    #log.info("e1_ir:" + str(int(self.e1_ir)))
                if self.button_pressed == 1:
                    if self.button_counter[1] % 4 == 1:
                        self.lcd.write_line(2,10," ")
                        self.lcd.write_line(3,10,"-")
                       
        def cb_rotary2_count(self,count):
                      
            if self.Tick2 == 0:
                self.press_counter2[0]= self.count_e1 + (count*0.1)                 
                self.e1 = self.press_counter2[0]*0.1
                if self.e1 > 1.0:
                    self.e1 = 1.0
                if self.e1 < 0.0:
                    self.e1 = 0.0
                self.e1_ir= self.e1*65535            
                #log.info("e1:" + str(self.e1))
                if self.button_pressed == 1:
                    if self.button_counter[1] % 4 == 1:
                        self.lcd.write_line(3,10," ") 
                        text5 = 'e:%0.2f- ' % (self.e1)
                        self.lcd.write_line(2, 4, text5)
                        
            if self.Tick2 == 1:
                self.press_counter2[1]= self.count_e2 + (count*0.1)                      
                self.e2 = self.press_counter2[1]*0.1
                if self.e2 > 1.0:
                    self.e2 = 1.0
                if self.e2 < 0.0:
                    self.e2 = 0.0     
                self.e2_ir= self.e2*65535
                #log.info("e2:" + str(self.e2))
                if self.button_pressed == 1:
                    if self.button_counter[1] % 4 == 1:
                        self.lcd.write_line(2,10," ")
                        text6 = 'e:%0.2f- ' % (self.e2)
                        self.lcd.write_line(3, 4, text6)

  2. Hi liebe Tinkerunity,

     

    ich habe von einem RotV1 auf einen RotV2 umgerüstet und nun funktioniert eine Funktion nicht mehr und ich finde den Fehler nicht.

    Ich habe mal die wesentlichen drei Ausschnitte aus dem Code hier reinkopiert. Der erste Teil ist klar, hier wird der Rotary Encoder initialisiert - sollte soweit passen. Die Funktion des Rotary Encoders bei mir ist es durch mehrere einstellbare Werten durchzuklicken und den jeweils durch einen Knopfdruck bestätigten zu verändern. Nun lässt sich durch die einzelnen Werte durchcrollen aber er erkennt den Knopfdruck nicht, mit welchem ich den Wert bestätige den ich einstellen will.

    Wäre super wenn mir jemand helfen könnte, ich bin gerade etwas am verzweifeln  :)

     

    elif device_identifier == BrickletRotaryEncoderV2.DEVICE_IDENTIFIER and uid == 'rot2':
                    try:
                        self.re2 = BrickletRotaryEncoderV2(uid, self.ipcon)
                        self.re2.set_count_callback_configuration(1000, False, "x", 0, 0)                   #wurde auf den neuesten Stand gebracht!
                        self.re2.register_callback(self.re2.CALLBACK_COUNT, self.cb_rotary2_count)
                        self.re2.register_callback(self.re2.CALLBACK_PRESSED, self.cb_rotary2_press)
                        reset= True
                        self.re2.get_count(reset)
                        log.info('Rotary2 initialized')
                    except Error as e:
                        log.error('Rotary2 init failed: ' + str(e.description))
                        self.re2 = None
    
            self.press = True       
            if self.press== True:
                self.Tick1 = self.Tick1 + 1
            else:
                self.Tick1 = self.Tick1
            if self.Tick1 == 7:
                self.Tick1 = 0
            #log.info('Tick1: ' + str(self.Tick1))
    
            if self.Tick1 == 0:
                reset= True    
                self.re1.get_count(reset)
                self.count_clo = self.press_counter1[0]
                if self.button_pressed == 2:
                    if self.button_counter[2] % 3 == 0:
                        self.lcd.write_line(1,8,"-")
                        self.lcd.write_line(2,8," ")
                        self.lcd.write_line(3,8," ")
                        self.lcd.write_line(0,19," ")
                        self.lcd.write_line(1,19," ")
                        self.lcd.write_line(2,19," ")
                        self.lcd.write_line(3,19," ")
    
        def cb_rotary1_count(self,count):       
               
            if self.Tick1 == 0:
                self.press_counter1[0]= self.count_clo + count
                self.clo = self.press_counter1[0]*0.1
                if self.clo > 2.0:
                    self.clo  = 2.0
                if self.clo  < 0.0:
                    self.clo  = 0.0
                if self.button_pressed == 2:
                    if self.button_counter[2] % 3 == 0:
                        text2 = 'clo %0.2f- ' % (self.clo)
                        self.lcd.write_line(1, 0, text2)
    

  3. Hi,

    ich erhalte beim Ausführen meines Programms neuerdings folgende Fehlermeldung

    mit der ich leider momentan recht wenig anfangen kann.

    Die erwähnte line 4 in meinem code ist import.sys

     

    Traceback (most recent call last):
      File "Python-Code__geändert2.0.py", line 4, in <module>
        import ipdb; ipdb.set_trace()
    ImportError: No module named 'ipdb'
    
    
    2000-01-01T01:20:17.923835+0200

     

    Hat jemand eine Idee woher das Problem kommen könnte, oder noch besser wie man das Problem lösen kann?

    Vielen Dank im Voraus

    Matthias

  4. Momentan stell ich mich mit dem debuggen noch etwas schwerfällig an.

    Jedes Mal wenn ich am Code was geändert habe lade ich das File über dieses 8 Schritte Programm im Brickviewer auf den Redbrick um auf Fehlersuche zu gehen.

    Dabei lässt sich allerdings nur über die eingefügten Logs ermitteln in welche Zeilen er gekommen ist und welche er gar nicht erst erreicht hat. Gibt es auch eine Möglichkeit direkt aus Spyder den Python Code zu debuggen. Da kommt logischer Weise derzeit nur die Meldung:

        from tinkerforge.ip_connection import IPConnection
    
    ModuleNotFoundError: No module named 'tinkerforge'

  5. Guter Hinweis, das mit Initialisieren funktioniert mittlerweile bei allen Bricklets. Dummerweise hänge ich immer noch im Willkommen Screen fest.

     

     

    Ich weiß, dass es brutal viel Code (im Anhang) ist, aber falls jemand nen Fehler auf Anhieb findet,wäre ich sehr dankbar, ich komm gerade nicht weiter. Es scheint so als würde er immer wieder initialisieren. Ein Drücken der Buttons hat komischer Weise keine Wirkung.

    Python-Code__geAndert2.0.py

  6. Hi,

     

    ich bin noch relativ neu im Thema Tinker Forge und habe momentan meine Probleme damit einen Messstand nachzubauen der von meinem Vorgänger entwickelt wurde.

    Der Versuchsaufbau misst Lufttemp., Strahlungstemp., relative Feuchte usw. um die hygrothermische Behaglichkeit bewerten zu können.

    Nun habe ich das Humidtity Bricklet durch einen V2, die Rotary Encorder und die IR durch IRV2 ausgetauscht aber irgendwie bring ich die Kiste nicht zum Laufen.

    Die Funktion der Bricklets habe ich im Brickviewer überprüft. Ein Teil der Bricklets wird aber irgendwie nicht initialisiert. Ich habe mir mal in einer Lof-Datei alle ausgeben lassen die gefunden werden.

    INFO:root:Messsystem: Start

     

    INFO:root:device identifier: 17

    INFO:root:device identifier: 17

    INFO:root:device identifier: 13

    INFO:root:device identifier: 13

    INFO:root:device identifier: 13

    INFO:root:device identifier: 13

    INFO:root:device identifier: 226

    INFO:root:Temperature2 initialized

    INFO:root:device identifier: 212

    INFO:root:LCD 20x4 initialized

    INFO:root:device identifier: 263

    INFO:root:OLED initialized

    INFO:root:device identifier: 262

    INFO:root:CO2 initialized

    INFO:root:device identifier: 226

    INFO:root:Globethermometer initialized

    INFO:root:device identifier: 294

     

    Es scheint, dass er mir die V2 Rotary und V2 IR-Temps nicht initialisieren kann.

     

     # Bricklets initialisieren    
        def cb_enumerate(self, uid, connected_uid, position, hardware_version, firmware_version, device_identifier, enumeration_type):
            
            
            log.info('device identifier: '+ str(device_identifier))
                
            if enumeration_type == IPConnection.ENUMERATION_TYPE_CONNECTED or \
               enumeration_type == IPConnection.ENUMERATION_TYPE_AVAILABLE:
                   
                #log.info('device identifier: '+ str(device_identifier))
                
                if device_identifier == LCD20x4.DEVICE_IDENTIFIER:
                    try:
                        self.lcd = LCD20x4(uid, self.ipcon)
                        self.lcd.clear_display()
                        self.lcd.register_callback(self.lcd.CALLBACK_BUTTON_PRESSED, self.cb_pressed) 
                        log.info('LCD 20x4 initialized')
                        self.lcd.backlight_on()
                        text2 = 'Willkommen'
                        self.lcd.write_line(1, 5, text2)
                    except Error as e:
                        log.error('LCD 20x4 init failed: ' + str(e.description))
                        self.lcd = None
                
                elif device_identifier == BrickletOLED128x64.DEVICE_IDENTIFIER:
                    try:
                        self.oled = BrickletOLED128x64(uid, self.ipcon)
                        self.oled.clear_display()            
                        log.info('OLED initialized')
                    except Error as e:
                        log.error('OLED init failed: ' + str(e.description))
                        self.oled = None
                        
                elif device_identifier == BrickletHumidityV2.DEVICE_IDENTIFIER:
                    try:
                        self.hum = BrickletHumidityV2(uid, self.ipcon)
                        self.hum.set_humidity_callback_period(1000)
                        self.hum.register_callback(self.hum.CALLBACK_HUMIDITY, self.cb_humidity)
                        log.info('Humidity initialized')
                    except Error as e:
                        log.error('Humidity init failed: ' + str(e.description))
                        self.hum = None
    
                elif device_identifier == BrickletPTC.DEVICE_IDENTIFIER and uid == 'temp1':
                    try:
                        self.ptc1 = BrickletPTC(uid, self.ipcon)
                        self.ptc1.set_temperature_callback_period(1000)
                        self.ptc1.register_callback(self.ptc1.CALLBACK_TEMPERATURE, self.cb_temperature1)
                        log.info('Temperature1 initialized')
                    except Error as e:
                        log.error('Temperature1 init failed: ' + str(e.description))
                        self.ptc1 = None
    
                elif device_identifier == BrickletPTC.DEVICE_IDENTIFIER and uid == 'temp2':
                    try:
                        self.ptc2 = BrickletPTC(uid, self.ipcon)
                        self.ptc2.set_temperature_callback_period(1000)
                        self.ptc2.register_callback(self.ptc2.CALLBACK_TEMPERATURE, self.cb_temperature2)
                        log.info('Temperature2 initialized')
                    except Error as e:
                        log.error('Temperature2 init failed: ' + str(e.description))
                        self.ptc2 = None
                        
                        
    
                elif device_identifier == BrickletPTC.DEVICE_IDENTIFIER and uid == 'gLobe':
                    try:
                        self.ptc3 = BrickletPTC(uid, self.ipcon)
                        self.ptc3.set_wire_mode(4)
                        self.ptc3.set_temperature_callback_period(1000)
                        self.ptc3.register_callback(self.ptc3.CALLBACK_TEMPERATURE, self.cb_globe)
                        log.info('Globethermometer initialized')
                    except Error as e:
                        log.error('Globethermometer init failed: ' + str(e.description))
                        self.ptc3 = None
                        
                elif device_identifier == BrickletRotaryEncoderV2.DEVICE_IDENTIFIER and uid == 'rot1':
                    try:
                        self.re1 = BrickletRotaryEncoderV2(uid, self.ipcon)
                        self.re1.set_count_callback_period(50)
                        self.re1.register_callback(self.re1.CALLBACK_COUNT, self.cb_rotary1_count)
                        self.re1.register_callback(self.re1.CALLBACK_PRESSED, self.cb_rotary1_press)
                        reset= True
                        self.re1.get_count(reset)
                        log.info('Rotary1 initialized')
                    except Error as e:
                        log.error('Rotary1 init failed: ' + str(e.description))
                        self.re1 = None        
    
                elif device_identifier == BrickletTemperatureIRV2.DEVICE_IDENTIFIER and uid == 'ir1':
                    try:
                        self.ir1 = BrickletTemperatureIRV2(uid, self.ipcon)
                        self.ir1.set_object_temperature_callback_period(1000)
                        self.ir1.register_callback(self.ir1.CALLBACK_OBJECT_TEMPERATURE, self.cb_irtemperature1)
                        self.ir1.set_emissivity(62258)
                        log.info('IR1 initialized')
                    except Error as e:
                        log.error('IR1 init failed: ' + str(e.description))
                        self.ir1 = None
    
                elif device_identifier == BrickletRotaryEncoderV2.DEVICE_IDENTIFIER and uid == 'rot2':
                    try:
                        self.re2 = BrickletRotaryEncoderV2(uid, self.ipcon)
                        self.re2.set_count_callback_period(50)
                        self.re2.register_callback(self.re2.CALLBACK_COUNT, self.cb_rotary2_count)
                        self.re2.register_callback(self.re2.CALLBACK_PRESSED, self.cb_rotary2_press)
                        reset= True
                        self.re2.get_count(reset)
                        log.info('Rotary2 initialized')
                    except Error as e:
                        log.error('Rotary2 init failed: ' + str(e.description))
                        self.re2 = None
                        
                elif device_identifier == BrickletTemperatureIRV2.DEVICE_IDENTIFIER and uid == 'ir2':
                    try:
                        self.ir2 = BrickletTemperatureIRV2(uid, self.ipcon)
                        self.ir2.set_object_temperature_callback_period(1000)
                        self.ir2.register_callback(self.ir2.CALLBACK_OBJECT_TEMPERATURE, self.cb_irtemperature2)
                        self.ir2.set_emissivity(62258)
                        log.info('IR2 initialized')
                    except Error as e:
                        log.error('IR2 init failed: ' + str(e.description))
                        self.ir2 = None
    
                elif device_identifier == BrickletCO2.DEVICE_IDENTIFIER:
                    try:
                        self.co2 = BrickletCO2(uid, self.ipcon)
                        self.co2.set_co2_concentration_callback_period(1000)
                        self.co2.register_callback(self.co2.CALLBACK_CO2_CONCENTRATION, self.cb_co2_concentration)
                        log.info('CO2 initialized')
                    except Error as e:
                        log.error('CO2 init failed: ' + str(e.description))
                        self.co2 = None

     

    Wo habe ich da den Fehler drin :(

×
×
  • Neu erstellen...