Jump to content

borg

Administrators
  • Gesamte Inhalte

    3.655
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    65

Alle erstellten Inhalte von borg

  1. Anbei ein Beispiel: function matlab_example_continuous_callback() import com.tinkerforge.IPConnection; import com.tinkerforge.BrickletAccelerometerV2; HOST = 'localhost'; PORT = 4223; UID = 'XYZ'; % Change XYZ to the UID of your Accelerometer Bricklet 2.0 ipcon = IPConnection(); % Create IP connection a = handle(BrickletAccelerometerV2(UID, ipcon), 'CallbackProperties'); % Create device object ipcon.connect(HOST, PORT); % Connect to brickd % Don't use device before ipcon is connected % Register acceleration callback to function cb_acceleration set(a, 'ContinuousAcceleration16BitCallback', @(h, e) cb_continuous_acceleration(e)); % Get X, Y and Z axis continuous acceleration with 16-bit resolution a.setContinuousAccelerationConfiguration(true, true, true, BrickletAccelerometerV2.RESOLUTION_16BIT); input('Press key to exit\n', 's'); ipcon.disconnect(); end % Callback function for continuous acceleration callback function cb_continuous_acceleration(e) data_all = []; data_axis = []; for i = 1:length(e.acceleration) if mod(i, 3) ~= 0 data_axis = [data_axis double(e.acceleration(i)) / 10000.0]; else data_axis = [data_axis double(e.acceleration(i)) / 10000.0]; data_all = [data_all; data_axis]; data_axis = []; end end for i = 1:length(data_all) data_axis = data_all(i,; for j = 1:length(data_axis) if j == 1 fprintf('Acceleration [X]: %g g\n', data_axis(j)); elseif j == 2 fprintf('Acceleration [Y]: %g g\n', data_axis(j)); else fprintf('Acceleration [Z]: %g g\n\n', data_axis(j)); end end end fprintf('\n'); end
  2. Die Bricklets haben eine API die in vielen Programmiersprachen zur Verfügung steht (siehe Doku). Allerdings tauchen die Joystick/Poti Bricklets nicht als Gamecontroller unter Windows auf. Es müsste also eine Art Treiber geschrieben werden der unsere API nutzt und damit ein "Gamecontroller-Device" unter Windows implementiert. Das ist sicherlich möglich, ich vermute allerdings das es recht viel Aufwand ist.
  3. So 100%ig ist mir leider immernoch nicht klar wann genau das Problem auftritt. Fangen wir erstmal mit einem Master Brick + Ethernet Extension an (um irgendwelche Funkprobleme auszuschließen). Als erstes schließt du den Master Brick per USB an und konfigurierst die Ethernet Extension (feste IP oder DHCP). Dann ziehst du USB ab und machst dafür eine USB-Stromversorgung (oder Step Down Power Supply) dran. Dann verbindest du dich per Ethernet über die feste IP oder die per DHCP vergebene IP über den Brick Viewer mit der Ethernet Extension. Das funktioniert erst, richtig? Wenn du das jetzt eine Zeitlang laufen lässt (einfach den Master Brick Tab auflassen, da werden Daten übertragen), treten dann schon Verbindungsfehler auf? Wenn das noch geht, was passiert wenn du oben im Brick Viewer mehrfach Connect/Disconnect drückst? Treten dann die Fehler auf? Wenn das noch geht, treten die Fehler irgendwann auf nachdem du dein eigenes Programm startest/neustartest? Falls ja, treten die Fehler auch auf wenn du eines der minimalen Beispiele aus der Dokumentation ausführst?
  4. Oh, das ist meine Schuld. Da hat sich ein Bug in die 2.0.4 eingeschlichen, ich hab vergessen die Länge des Pakets zu setzen: https://github.com/Tinkerforge/humidity-v2-bricklet/commit/fb6c809ea06522a4b18446c936b432239c792d1b Bitte auf 2.0.5 aktualisieren!
  5. Der kann dafür genutzt werden. Es ist durchaus möglich das sich der Sensor selbst ein wenig erhitzt ("self-heating"). Diese Selbsterhitzung beläuft sich aber für gewöhnlich nur auf 1-2°C und ist konstant, kann man also recht einfach kalibrieren.
  6. Wenn du dein eigenes Programm beendest, den Stapel neustartest und dich dann per Brick Viewer mit dem Stapel verbindest. Dann passiert was genau? Musst du ein bestimmtes Tab auswählen damit ein Problem auftritt?
  7. Die Ethernet Extension unterstützt maximal 7 gleichzeitige Verbindungen. Ein Grund warum der Brick Viewer "could not connect" melden könnte ist, dass kein Socket mehr frei ist in der Ethernet Extension. Läuft vielleicht im Hintergrund ein Programm welches neue Verbindungen öffnet ohne diese wieder zu schließen und damit alle Sockets "aufbraucht"?
  8. On Windows with GCC you can use the command line to compile one of the examples, see here: https://www.tinkerforge.com/en/doc/Software/API_Bindings_C.html#gcc Don't forget to change the UID placeholder in the example to the UID of your Bricklet.
  9. You don't have to use a Makefile. Which operating system and which compiler/IDE do you use?
  10. You need an additional WIFI Extension 2.0 and a USB Power Supply.
  11. In terms of software you need to download the Brick Daemon, Brick Viewer and C API Bindings. You can get all of them here: https://www.tinkerforge.com/en/doc/Downloads.html To get started with the C Bindings you can take a look here: https://www.tinkerforge.com/en/doc/Software/API_Bindings_C.html In terms of hardware it obviously depends what you want to do. The absolute minimum that does something useful and is easy to understand would probably be a Master Brick together with a Temperature Bricklet 2.0. Hardware wise you need: * Mini USB cable * Master Brick * Bricklet cable (7p-10p) * Temperature Bricklet 2.0 Master Brick: https://www.tinkerforge.com/en/shop/bricks/master-brick.html Temperature Bricklet 2.0: https://www.tinkerforge.com/en/shop/bricklets/sensors/temperature-v2-bricklet.html You can pick the suitable cables as options in the shop. To get started, you connect the Bricklet to the Brick with the Bricklet cable and the Brick to your PC with the USB cable. Now you can view the temperature in Brick Viewer and use the C Bindings to read out the temperature in C++.
  12. Do you have any idea for a project or specific interest? Something easy to start with is always the weather stations. You can start with calling getters to get the measurements from the sensors and print then to the console. From there you can go anywhere (store data in a database, draw graphs, etc).
  13. Das Air Quality Bricklet nutzt die 5V nicht, da kann nichts passieren. Du könntest versuchen die Firmware nochmal neu drauf zu spielen, ich wüsste aber nicht warum das etwas bringen soll. Damit ich das richtig verstanden hab: Wenn du das Bricklet vom Strom trennst und wieder ansteckst liest es immernoch Nullen? Oder hatte es nur einmal kurzfristig nur Nullen gelesen?
  14. Schwer zu sagen, kannst du dein Python-Programm hier posten? Vielleicht lässt sich da ja noch etwas optimieren.
  15. Wenn du in diesem Fehlerfall bist, bekommst du dann denn irgendwelche Callbacks? Ich würde erwarten dass das Bricklet dann vielleicht irgendwelche Klicks sieht die gar nicht da sind o.ä.?
  16. Woran scheitert es denn? Hast du vielleicht Code der schon etwas tut aber nicht ganz funktioniert oder etwas ähnliches?
  17. Steckt das Kabel richtig drin? Vielleicht auch einmal das Kabel am Brick und Bricklet abmachen und schauen ob alle Pins noch gerade sind oder ob etwas verbogen ist etc.
  18. Ein E-Paper Bricklet ist bereits in der Entwicklung: https://github.com/Tinkerforge/e-paper-296x128-bricklet
  19. Wenn du die Auflösung von 16bit auf 8bit umstellst, bekommst du in der tat die Einheit 256/10000g anstatt 1/10000g zurück (die 8 niedrigsten Bits werden einfach abgeschnitten). Das ist nicht hinreichend gut dokumentiert, kümmere ich mich drum! Die Skalierung und Datenrate solltest du allerdings ändern können ohne das sich die Einheit ändert. Edit: Hier sind die Änderungen die ich an der Doku vorgenommen hab um das klarer zu machen: https://github.com/Tinkerforge/generators/commit/fcd32651d873a40a16322866ef3515a45415f7ab
  20. Wir können ein Beispiel machen welches diese Funktion implementiert. Das kann aber nicht teil der API sein. Die APIs die wir für die ganzen Programmiersprachen anbieten sind komplett auto-generiert. Wir haben ~120 Produkte und ~17 Programmiersprachen mit je ~3 Beispielen. Wenn du da das Kreuzprodukt draus bildest siehst du wie viel Code das ist. Es wäre unmöglich für uns das per Hand zu schreiben. Alle APIs, die Dokumentationen für die APIs und die meisten Beispiele sind auto-generiert. Der Generator nutzt fürs LCD128x64 diese Config: https://github.com/Tinkerforge/generators/blob/master/configs/bricklet_lcd_128x64_config.py Das sind also alle Informationen die zur Verfügung stehen die API, Beispiele und Dokumentation zu generieren.
  21. Die Firmware inklusive der Schrift und GUI ist aktuell 22kb groß. Wir haben in Summe 32kb zur Verfügung, davon werden 8kb immer vom Booloader belegt. Es sind also aktuell noch 2kb frei. Eine Bitmap-Schriftart in der Größe ist mehrere hunderte Kilobyte groß. Das wird also nichts . Und nein, ein TrueType-Renderer oder sowas passt auch nicht auf den Mikrocontroller. Aber für hübsche große Schriftarten kann man ja PIL oder ähnliches nutzen!
  22. Kommt mit dem nächsten Bindings-Release. Die Veröffentlichungen der Bindings und der Firmwares sind aktuell mehr oder weniger asynchron. Eine neue Firmware veröffentlichen dauert nur ein paar Sekunden, neue Bindings veröffentlichen ist mehr Aufwand. Daher gibt es neue Bindings meist nur alle paar Wochen.
  23. Meine Vermutung dazu: Du hast irgendwo im Code sowas stehen wie t1 = float_value und überschreibst damit ausversehen das "t1" Temperature Bricklet-Objekt. Vielleicht ist in Python2 der Scope von der Variable irgendwo leicht anders als in Python3 und dadurch tritt das jetzt erst auf?
  24. Schon wieder der Kühlkörper abgefallen? Normalerweise sollte der absolut Bombenfest sitzen. Der Kleber den wir da verwenden ist genau dafür gedacht. Wir gehen Montag den Lagerbestand durch und schauen ob wir weitere Kühlkörper abbrechen können. Anrauen sollte mit dem Kleber den wir verwenden soweit ich weiß nicht notwendig sein. Eventuell waren ein paar der Kühlkörper etwas "fettig" und wir hätten erst einmal mit IPA drüberwischen sollen? Wir werden das untersuchen. Wenn du den defekten Silent Stepper Brick zurück schickst können wir schauen was dort der Grund für die verlorenen Nachrichten ist. Es reicht wenn du den Brick einfach per Post in einem Luftpolsterumschlag oder so verschickt. Muss nicht schnell gehen.
  25. Wenn du sagst du bekommst keine Rückgabewerte, was bekommst du denn dann? Eine Exception oder falsche Werte? Welche Exception bzw welche falschen Werte bekommst du? Und zu Python 2 vs 3: Mit Python 2 funktioniert es mit allen Bricklets aber mit Python 3 funktioniert es nicht mit allen Bricklets? Hab ich das richtig verstanden?
×
×
  • Neu erstellen...