Jump to content

FlyingDoc

Members
  • Gesamte Inhalte

    459
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von FlyingDoc

  1. Die Step-Down Power Supply muss immer ganz unten in den Stapel. Ansonsten stört es nicht wenn man sie zwischendurch ausschaltet. Der Rest funktioniert trotzdem, Es sei denn Sie brauchen mehr Strom oder eine extra Stromversorgung.
  2. Bring deinen Master einfach in den Bootloader Modus und flashe ihn auf den Aktuellen Stand. Das kannst du auch mit dem aktuellen Brickdemon und Viewer machen.
  3. FlyingDoc

    Lüfter-Brick(let)

    Lüfter Ub5u3-10 30x30x3mm 5V 13,84 €
  4. FlyingDoc

    Lüfter-Brick(let)

    Das ist ein Drugschluß. Ich glaub du musst dich ein klein Wenig mit Strömungstechnick beschäftigen. Axiallüfter ziehen die Luft eher im Kegel von direkt vor dem Lüfter.
  5. FlyingDoc

    Lüfter-Brick(let)

    Da hast du das Proplem das du kein Bricklet mehr darübersetzen kannst. Es würde den Luftstrom zu sehr behindern. Mein Link sollte eigentlich nur die Bauform aufzeigen. Mann bekommt sie sicher auch günstiger als bei Conrad.
  6. FlyingDoc

    Lüfter-Brick(let)

    Ich würde an Stelle diese Lüfters einen anderen vorschlagen der die Luft seitlich anzieht. Diese Typen sind meistens in Notebooks verbaut. Zum Beispiel den hier. Mini-Blower-Sunon-UB3H3
  7. Du klemmst die Schalter komplett aus dem Stromkreis aus. Mit den 220V haben sie nichts mehr zu tun. Dafür nimmst du die 5 V vom IO16 zum Schalten. Anstelle der Schalter kommen die Ralais-Bricklets zum Einsatz. Du steuerst dann sozusagen im Handbetrieb über die Schalter -> IO16 -> Programm -> Relais-Bricklet -> Motor deine Rollos an. Und im Programm kannst du entscheiden wer Vorrang bei der Steuerung der Rollos hat. Entweder ein Programm oder deine Schalter. Die beiden Stromkreise dürfen galvanisch nichts miteinander zu tun haben. Sonst geht deine Hardware kaputt oder du weil du nen elektrischen Schlag bekommst. Also Vorsicht.
  8. Funktioniert schon. Nur das du eben statt der 220V 5V mit den Schaltern als Schaltspannung nimmst.
  9. Verbinde doch deine Schalter mit dem IO16 Bricklet statt mit dem Rollo. So kannst du die Schalter abfragen (Callback nehmen) und reagieren, aber trotzdem die Rollos steuern. Du steuerst dann halt die Rollos nicht direkt über die Schalter , sondern gehst den "Umweg" über das Programm. Im Programm kannst du dann selber entscheiden wer Vorrang hat.
  10. Nimm doch ein geschirmtes Kabel dafür. Die gibt es mit verschiedenen Adernanzahlen und Querschnitten.
  11. Der Fehler mit der IPCON_CALLBACK_ENUMERATE Funktion ist ja inzwischen von euch gefixt worden. Läuft also unter QT. Bin gerade bei Anpassungen im Programm.
  12. Und wenn du versuchst über eine Zeitkonstante die Erwärmung zu errechnen oder mit dem Temperature IR Bricklet den du in die Mitte der Fahrspur am Startpunkt hinter der Lichtschranke einlässt, die Motortemperatur zu ermitteln? Du nimmst einfach einen Callback des IO16 für den Eingang dieser Lichtschranke und liesst dann den Wert der IR Bricklet aus.
  13. Ich versuch mal den Erklärbär! Ein Array ist um es mal leicht vorstellbar zu erklären, eine Tabelle (Stapel) im Speicher wo in jeder "Zelle" ein Zeiger (die Adresse) zu einer Variable oder oder eine Struktur im Speicher steht. Das ganze ist dynamisch. Kann also seine Größe ändern. Er will sozusagen eine Struktur für jedes Brick oder Bricklet anlegen und in die Tabelle eintragen und dann in einer View anzeigen. Zum Testen.
  14. Nein. Das sind keine Array. Jeder Brick oder Bricklet wird einzeln gemeldet. Also für jeden bekommst dun einen Callback Aufruf. Ins Array musst du sie schon selbst "reinklimpern".
  15. Der Beispielcode hängt von der Programmiersprache ab. Die Funktion ist schon richtig. Hier mal meine Funktion in c++ geschrieben. void cb_enumerate(const char *uid, const char *connected_uid, char position, uint8_t hardware_version[3], uint8_t firmware_version[3], uint16_t device_identifier, uint8_t enumeration_type, void *user_data) { /****************************************************************************/ /* Antwort auf Komponentenabfrage (Bricks,Bricklets) */ /****************************************************************************/ // printf("device_uid: %s\tdevice_name: %s\tdevice_stack_id: %d\t is_new: %d\n\n", device_uid, device_name, device_stack_id,is_new); /****************************************************************************/ /* Testen ob IMU Brick gefunden */ /****************************************************************************/ if(device_identifier==IMU_DEVICE_IDENTIFIER) { Create_IMU(uid,device_identifier, connected_uid, position,true); } if(device_identifier==MASTER_DEVICE_IDENTIFIER) { Create_Master(uid,device_identifier, connected_uid, position,true); } if(device_identifier==ANALOG_IN_DEVICE_IDENTIFIER) { Create_AnalogIn(uid,device_identifier, connected_uid, position,true); } if(device_identifier==ROTARY_POTI_DEVICE_IDENTIFIER) { Create_RotaryPoti(uid,device_identifier, connected_uid, position,true); } if(device_identifier==TEMPERATURE_DEVICE_IDENTIFIER) { Create_Temperature(uid,device_identifier, connected_uid, position,true); } if(device_identifier==BAROMETER_DEVICE_IDENTIFIER) { Create_Barometer(uid,device_identifier, connected_uid, position,true); } if(device_identifier==IO16_DEVICE_IDENTIFIER) { Create_IO16(uid,device_identifier, connected_uid, position,true); } if(device_identifier==GPS_DEVICE_IDENTIFIER) { Create_GPS(uid,device_identifier, connected_uid, position,true); } } Hier findest du auch eine Liste. Die device_identifier sind jeweils in der dazugehörigen .h Datei definiert.
  16. Du nimmst die Callback Funktion für den TempSensor. Diese wird immer aufgerufen wenn sich die Temperatur ändert. Diesen Wert vergleichst du dann mit deiner Vorgabe und reagierst entsprechend. So musst du kein Polling der Werte einbauen.
  17. THX
  18. So. Neuster Stand. Mit "kleinen" Schwierigkeiten jetzt komplett ohne Visual Studio dafür mit der reinen QT Entwicklerumgebung das Projekt zum Laufen gebracht. Jetz muss ich es mal direkt unter Linux zum laufen bringen. Aber immer noch Probleme mit der ipconnect Klasse bei der IPCON_CALLBACK_ENUMERATE Funktion. Hab ich erstmal "von Hand" gefixt in dem inch direkt in der Klasse eingegiffen hab.
  19. Wo kann ich das einstellen?
  20. Bringt 0 Punkte. Kann ja auch nicht. Hatte ha schon geschrieben das schon nach Umwandlung des Datenpacketes mit enumerate_callback = (EnumerateCallback *)packet; ein 0 drinn steht. Aus 0 kann man nun mal nix machen.
  21. Die Null hat er sofort nach dem Umwandeln in die EnumerateCallback Struktur hab ich gerade herausgefunden. enumerate_callback = (EnumerateCallback *)packet; Ich habe mal von Hand die Daten auseinanderklamüstert. Der Wert steht an der richtigen Stelle. Trotzdem ist er 0. Tante Edit sagt: Ich hab in der ip_connection.cpp mal die Struktur probeweise geändert. typedef struct { PacketHeader header; char uid[8]; char connected_uid[8]; char position; uint8_t hardware_version[3]; uint8_t firmware_version[3]; uint8_t device_identifier; uint8_t enumeration_type; } ATTRIBUTE_PACKED EnumerateCallback; Natürlich ist dann der enumeration_type flasch. War aber nur zum Test.
  22. Noch mal genauer debugt. Unzwar schon die ip_connection.cpp Der device_identifier ist wie zu sehen im Datenblock vorhanden. Wird aber als 0 übergeben.
  23. Hier mal ein Screen von den Variablen
  24. Ich schau beim Debuggen die Variable direkt an. Und da steht Nullinger drinn. Alle anderen haben einen Wert.
  25. void cb_enumerate(const char *uid, const char *connected_uid, char position, uint8_t hardware_version[3], uint8_t firmware_version[3], uint16_t device_identifier, uint8_t enumeration_type, void *user_data) { /****************************************************************************/ /* Antwort auf Komponentenabfrage (Bricks,Bricklets) */ /****************************************************************************/ // printf("device_uid: %s\tdevice_name: %s\tdevice_stack_id: %d\t is_new: %d\n\n", device_uid, device_name, device_stack_id,is_new); /****************************************************************************/ /* Testen ob IMU Brick gefunden */ /****************************************************************************/ if(device_identifier==IMU_DEVICE_IDENTIFIER) { Create_IMU(uid,device_identifier, connected_uid, position,true); } if(device_identifier==MASTER_DEVICE_IDENTIFIER) { Create_Master(uid,device_identifier, connected_uid, position,true); } if(device_identifier==ANALOG_IN_DEVICE_IDENTIFIER) { Create_AnalogIn(uid,device_identifier, connected_uid, position,true); } if(device_identifier==ROTARY_POTI_DEVICE_IDENTIFIER) { Create_RotaryPoti(uid,device_identifier, connected_uid, position,true); } if(device_identifier==TEMPERATURE_DEVICE_IDENTIFIER) { Create_Temperature(uid,device_identifier, connected_uid, position,true); } if(device_identifier==BAROMETER_DEVICE_IDENTIFIER) { Create_Barometer(uid,device_identifier, connected_uid, position,true); } if(device_identifier==IO16_DEVICE_IDENTIFIER) { Create_IO16(uid,device_identifier, connected_uid, position,true); } if(device_identifier==GPS_DEVICE_IDENTIFIER) { Create_GPS(uid,device_identifier, connected_uid, position,true); } }
×
×
  • Neu erstellen...