Gerne, bin für jede Hilfe dankbar
Code:
#!/usr/bin/perl
use warnings;
use strict;
use Time::HiRes ('usleep');
use RPi::I2C;
my $SF10 = RPi::I2C->new(0x70);
my $version = undef;
my $loopcount = 0;
while(1) {
system('clear');
$loopcount++;
printf("Loop: %d\n", $loopcount);
$version = $SF10->read_byte(0);
printf("SF10 Version: %d (0x%X)\n", $version, $version);
usleep(65000);
last if($loopcount > 100);
}
Ich bin vom Modul Device::I2C zum Modul RPi::I2C gewechselt, da dies wohl neuer ist und einfach um auszuprobieren ob es daran lag. Hat aber am Verhalten nichts geändert.
Momentan wird nur die Version des Sensors ausgelesen. Aber auch bei Entfernungen verhält es sich gleich. Nach der selben Zeit erscheinen völlig falsche Werte (jup, scheint Zeitabhängig, nicht Abhängig von den Zugriffen).
Oszilloskop habe ich leider keines. Evtl. habe ich auch einfach nur den Sensor geschossen, wüsste aber nicht wodurch
Bei dem Beispielprogramm in C kommen bei mir die selben schrägen Werte raus wie wenn mein Programm ein paar Leseversuche hinter sich hat (cooler Link übrigens!)
**** SRF02/10/235 example program ****
Software v: 133
Range was: 32768
- - - Aktualisiert - - -
Was mir noch einfällt: Evtl. könnte noch die Art meiner Stromversorgung eine Rolle spielen.
Das Ganze wird durch einen 12V Bleigelakku versorgt.
MD25 (Motortreiber) hängt direkt am Akku.
SRF10 und Raspi hängen über einen Step Down Wandler auf 5V dran.
Es werden also sämtliche "Geräte" individuell mit Strom versorgt. Aber es hängen natürlich alle drei am selben Bus.
Naiv wie ich bin, dachte ich, dass das schon so laufen sollte (abgesehen vom SRF10 tut es das ja auch).
Lesezeichen