Jump to content

Damla

Members
  • Gesamte Inhalte

    7
  • Benutzer seit

  • Letzter Besuch

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

Damla's Achievements

Newbie

Newbie (1/14)

0

Reputation in der Community

  1. Ist es vielleicht auch möglich, dass ich dem Programm sage, Gib mir nur dann eine Ausgabe, falls du Signale von Channel 1 kriegst. Bisher habe ich selbst definiert, dass mein Channel_number=1 ist (siehe oben). Jedoch ist nun der Schritt, dass auch ein Signal B gegeben wird. Ich habe es mit diesem Schritt versucht, aber irgendwie funktioniert es nicht so ganz: def channel_number (channel): if channel == BrickletIndustrialDigitalIn4V2.CHANNEL_0: # Configure rising edge count (channel 3) with 10ms debounce idi4.set_edge_count_configuration(channel=0, edge_type=1, debounce=1) elif channel == BrickletIndustrialDigitalIn4V2.CHANNEL_1: print('Falsche Richtung') leider kriege ich aber keine Werte so rausgespuckt.. Hier nochmal der ganze Skript: HOST = "localhost" PORT = 4223 UID = "PN5" # Change XYZ to the UID of your Industrial Digital In 4 Bricklet 2.0 import math import time from tinkerforge.bricklet_industrial_digital_in_4_v2 import BrickletIndustrialDigitalIn4V2 from tinkerforge.ip_connection import IPConnection def channel_number (channel): global count if channel == BrickletIndustrialDigitalIn4V2.CHANNEL_0: # Configure rising edge count (channel 0) with 10ms debounce idi4.set_edge_count_configuration(channel=0, edge_type=1, debounce=1) count = idi4.get_edge_count(channel=0, reset_counter=False) elif channel == BrickletIndustrialDigitalIn4V2.CHANNEL_1: print('Falsche Richtung') if __name__ == "__main__": ipcon = IPConnection() # Create IP connection idi4 = BrickletIndustrialDigitalIn4V2(UID, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brick b = 0.0 endTime = time.time() + 60*60*8 print(time.ctime() + "\tStart Logging..") print("-----------------------------------------------------") while time.time() < endTime: time.sleep(1) r = 0.03 # meter alpha = (count * 360) / 1024 # P = Anzahl Impulse, PPR = Impulse pro Umdrehung = 1024 d = b b = (alpha / 360) * 2 * math.pi * r # - b_old if b > 0.0 and b != d: print(time.ctime() + "\t" + str(b)) print("-----------------------------------------------------") print(time.ctime() + "\tEnd of the Log") # input("Press key to exit\n") # Use raw_input() in Python 2 ipcon.disconnect()
  2. Noch eine allerletzte Frage: Ist es möglich, dass das Status des Programmes beispielsweise nach 8h selbstständig gekillt wird? Und am nächsten Tag soll er wieder automatisch gestartet werden --> Dazu kann ich ja einfach den automatisch schedule einsetzen oder nicht? Danke für die Hilfe :)
  3. Ja, das war wohl der Grund. Jetzt funktioniert es einwandfrei :) Dankeschön :)
  4. Da hast du natürlich Recht :) hier ist mein Python Skript, wenn ich es über Python ausführe funktioniert alles einwandfrei. Nur wenn ich es "offline" durchführe bekomme ich nur Ergebnisse für n*360grad HOST = "localhost" PORT = 4223 UID = "PN5" # Change XYZ to the UID of your Industrial Digital In 4 Bricklet 2.0 import time from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_industrial_digital_in_4_v2 import BrickletIndustrialDigitalIn4V2 if __name__ == "__main__": ipcon = IPConnection() # Create IP connection idi4 = BrickletIndustrialDigitalIn4V2(UID, ipcon) # Create device object channel_number = 1 ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected # Configure rising edge count (channel 3) with 10ms debounce idi4.set_edge_count_configuration(channel=channel_number, edge_type=1, debounce=1) # Get edge count 10 times with 1s delay for i in range(10): time.sleep(1) count = idi4.get_edge_count(channel=channel_number, reset_counter=False) r= 0.03 alpha= (count*360)*10/1000 b= (alpha/360)*2*math.pi*r print("Count" + str(b) + time.ctime()) input("Press key to exit\n") # Use raw_input() in Python 2 ipcon.disconnect() Kurz als Input: Mein Messsystem ist ein Drehgeber Encoder und das Ziel ist es die Impulse aus dem Drehgeber in eine Längeneinheit umzuwandeln. In Python selbst gibt er mir die Richtigen Werte raus. Aber in der Logs File im Brick Viewer rundet er die Daten bis auf eine ganze Umdrehung auf. Siehe auch die Bilder als Vergleich: Hier sind die Ergebnisse in Python, er gibt mir unterschiedliche Werte für jede Sekunde aus Und hier die Ergebnisse von Brick Viewer, welcher mir konstante Werte angibt, bis eine Umdrehung abgeschlossen ist.
  5. Danke Photron für die Antwort. nun funktioniert es ohne ein Laptop. Jedoch habe ich jetzt ein weiteres Problem, dass er mir die Signale nicht pro Sekunde ausgibt sondern Pro Umdrehung des drehgebers 🤯🤯 hast du vielleicht dazu auch eine Idee 🙈
  6. Genau das weiß ich. nur dafür brauche ich zur Zeit immernoch mein Laptop damit ich ich den Python Skript starten kann. aber ich will es ganz ohne Laptop benutzen.
  7. Hallo Liebes Community, Im Rahmen meiner Masterarbeit bin ich zur Zeit dabei ein Messsystem zu bauen. Das ganze soll in Tinkerforge gewährleistet werden. Ich habe das grobe System bereits vorbereitet : Red Brick, Masterbrick und ein Industrial 4IN Bricklet. Einen Programm habe ich auch in Python schon geschrieben. Jedoch will ich das Messsystem auch ohne ein Laptop benutzen. Dazu müsste ich ja auf dem RED Brick bzw. auf der darin integrierten SD-Karte programmieren oder? Nun stellt sich jedoch die Frage: - Wie kann ich es auf dem Red Brick umsetzen? --> Ich weiss, dass es mit einem Rasperry Pi möglich wäre, darf ich aber leider nicht benutzen. Ich würde mich auf eure Antworten und Tipps freuen :) Viele Grüße
×
×
  • Neu erstellen...