Hi inka,
ich habe die MultiIO mit M32 z.Zt. nicht so aufgebaut und gejumpert, kann also nicht testen.
Wenn ich dazu komme, teste ich das auch mal.
Werbung
Hi inka,
ich habe die MultiIO mit M32 z.Zt. nicht so aufgebaut und gejumpert, kann also nicht testen.
Wenn ich dazu komme, teste ich das auch mal.
Gruß
Dirk
hi Dirk,
super, danke...
ich hab in der "RP6Control_LFSBumperLib.c" noch diese beiden variablen gefunden, die masseinheit in [ ] - hat die was zu bedeuten?
double distsrf02_l; // Left SRF02 distance [mm]
double distsrf02_r; // Right SRF02 distance [mm]
werden die überhaupt irgendwo verwendet?
gruß inka
Hi,
Die Variablen sind für dich bzw. für dein Hauptprogramm reserviert:ich hab in der "RP6Control_LFSBumperLib.c" noch diese beiden variablen gefunden, die masseinheit in [ ] - hat die was zu bedeuten?
double distsrf02_l; // Left SRF02 distance [mm]
double distsrf02_r; // Right SRF02 distance [mm]
werden die überhaupt irgendwo verwendet?
Wenn du SRF02_measure() im Modus MODE_US (also Mikrosekunden-Messung) aufrufst, kannst du den Ausgabewert danach mit SRF02_calculate() in einen Millimeterabstand umrechnen. Das Ergebnis ist dann eine Fließkomma-Variable, die man z.B. in distsrf02_l packen kann:
Beispiel: distsrf02_l = SRF02_calculate(SRF02_measure(CH_SRF02_L, MODE_US));
Gruß
Dirk
hallo Dirk,
danke für die erklärung...
habe es ausprobiert, und zwar diese zwei varianten:
beide liefern die entfernung in mm, allerdings nur in sprüngen von 343,40 (sonic speed konstante) wie hier zu sehen:Code:1) us_distanz = SRF02_measure(CH_SRF02_1, MODE_US); distsrf02_1 = SRF02_calculate(us_distanz); 2) distsrf02_1 = SRF02_calculate(SRF02_measure(CH_SRF02_1, MODE_US));
es sieht mir so aus, als würde sich die "time_ms", bzw. die "us" variable in der "SRF_02_calculate" funktion nur in den jeweiligen (1x /2x /3x) sprüngen ändern?Code:SRF02 SENSOR_1 -> Distance: 49.00 cm SRF02 SENSOR_1 -> Distance: 19.00 inch SRF02 SENSOR_1 -> Distance: 343.40 mm SRF02 SENSOR_1 -> Distance: 69.00 cm SRF02 SENSOR_1 -> Distance: 27.00 inch SRF02 SENSOR_1 -> Distance: 686.80 mm SRF02 SENSOR_1 -> Distance: 105.00 cm SRF02 SENSOR_1 -> Distance: 41.00 inch SRF02 SENSOR_1 -> Distance: 1030.20 mm
gruß inka
Hi inka,
da bist du wohl bei der mm-Ausgabe auf einen Bug in der RP6Control LFS Bumper Library gestoßen!
(Wie gesagt: Ich kann z.Zt. nicht testen!)
Probier mal, die Funktion SRF02_calculate() in der Datei RP6Control_LFCBumperLib.c so zu ändern:
Klappt das so besser?Code:double SRF02_calculate(uint16_t us) { double time_ms = us / 2000.0f; // One way [ms] return (SONIC_SPEED * time_ms); // Distance [mm] }
P.S.:
Dieses Problem hat aber nichts mit deinem anfänglichen Problem zu tun, dass der jeweils 1. Meßwert nicht zuverlässig ist.
Gruß
Dirk
Hi Dirk,
danke für die schnelle hilfe...
ja. die schwankungen sind denke ich normal...
was bedeutet eigentlich dieses ".0f"?
auch wenn ich nur die messung in mm durchführe, ohne die vorher laufenden messungen in inch oder cm (die evtl. etwas an der initialisierung beeinflussen könnten)Code:SRF02 SENSOR_1 -> Distance: 32.00 cm SRF02 SENSOR_1 -> Distance: 13.00 inch SRF02 SENSOR_1 -> Distance: 324.00 mm SRF02 SENSOR_1 -> Distance: 33.00 cm SRF02 SENSOR_1 -> Distance: 12.00 inch SRF02 SENSOR_1 -> Distance: 330.35 mm SRF02 SENSOR_1 -> Distance: 57.00 cm SRF02 SENSOR_1 -> Distance: 22.00 inch SRF02 SENSOR_1 -> Distance: 575.37 mm SRF02 SENSOR_1 -> Distance: 57.00 cm SRF02 SENSOR_1 -> Distance: 22.00 inch SRF02 SENSOR_1 -> Distance: 574.51 mm SRF02 SENSOR_1 -> Distance: 77.00 cm SRF02 SENSOR_1 -> Distance: 30.00 inch SRF02 SENSOR_1 -> Distance: 771.28 mm
Code:SRF02 SENSOR_1 -> Distance: 495.87 mm SRF02 SENSOR_1 -> Distance: 495.87 mm SRF02 SENSOR_1 -> Distance: 502.74 mm SRF02 SENSOR_1 -> Distance: 495.01 mm SRF02 SENSOR_1 -> Distance: 498.45 mm SRF02 SENSOR_1 -> Distance: 495.01 mm SRF02 SENSOR_1 -> Distance: 502.74 mm
mit der nun funktionierenden messung in mm hat dieses problem etwas an seiner dringlichkeit verloren - ich kann ja nun messen![]()
gruß inka
Lesezeichen