adafruit motor shield + srf10

Hallo,

Ich benutze das Arduino Uno in Verbindung mit einem SRF10 Ultraschall
Sensor. Bisher klappte das auslesen des Sensor Problemlos.

Aktuell versuche ich zusätzlich ein Motor Shield
https://learn.adafruit.com/adafruit-motor-shield-v... am I2C
zu betreiben.
Einzeln funktionieren sowohl Shield als auch der SRF10...
sobald jedoch der Sensor und Motorshield angeschlossen sind liefert der
Sensor nur noch unsinnige Werte :-/

Hier der Quellcode den ich zum auslesen des SRF10 benutze:
#include <Wire.h>

void setup()
{
Wire.begin(); // join i2c bus (address optional for
master)

Serial.begin(9600); // start serial communication at 9600bps
}

int reading = 0;

void loop()
{
// step 1: instruct sensor to read echoes
Wire.beginTransmission(112); // transmit to device #112 (0x70)
// the address specified in the datasheet
is 224 (0xE0)
// but i2c adressing uses the high 7 bits
so it's 112
Wire.write(byte(0x00)); // sets register pointer to the command
register (0x00)
Wire.write(byte(0x51)); // command sensor to measure in "inches"
(0x50)
// use 0x51 for centimeters
// use 0x52 for ping microseconds
Wire.endTransmission(); // stop transmitting

// step 2: wait for readings to happen
delay(70); // datasheet suggests at least 65
milliseconds

// step 3: instruct sensor to return a particular echo reading
Wire.beginTransmission(112); // transmit to device #112
Wire.write(byte(0x02)); // sets register pointer to echo #1
register (0x02)
Wire.endTransmission(); // stop transmitting

// step 4: request reading from sensor
Wire.requestFrom(112, 2); // request 2 bytes from slave device #112

// step 5: receive reading from sensor
if(2 <= Wire.available()) // if two bytes were received
{
reading = Wire.read(); // receive high byte (overwrites previous
reading)
reading = reading << 8; // shift high byte to be high 8 bits
reading |= Wire.read(); // receive low byte as lower 8 bits
Serial.println(reading); // print the reading
}

delay(250); // wait a bit since people have to read
the output :slight_smile:
}

das Motorshield (adresse 0x61) wird lediglich mit Spannung versorgt und
hängt wie der SRF10 auch an Analog4&5

wäre super wenn jemand einen tip für mich hätte wo das problem liegen
könnte :slight_smile:

habe aber eben mal versucht den sensor alleine am arduino mit 10k pullup
(wie auf dem shield verbaut) zu betreiben, funktioniert problemlos...
auch mit 20k pullup sind die messwerte des srf 10 noch einwandfrei...

steckt jedoch das shield wieder auf dem arduino und der sensor auf dem
shield, liefert dieser wie gehabt nur unsinnige werte. die komunikation
mit dem shield klappt jedoch komischerweise auch wenn der sensor
angesteckt ist

lg
markus