-->
Page 1 of 1

WeMos D1 R2 and the Arduino 9-Axis Shield

PostPosted: Mon Jun 05, 2017 8:23 pm
by ispybadguys
I was wondering if anyone has gotten the WeMos D1 R2 to work with the Bosch 9-Axis shield. I have verified that the shield works with the 5V Arduino Mega and the 3.3V DUE but I can't get it to work with the WeMos.

I scoped the SDA and SLC lines and these look reasonable but the I2C Scanner code does not find the shield at address 0x28 like the DUE or Mega do.
Code: Select all#include <Wire.h>


void setup()
{
  Wire.begin(D2,D1);  //(SDA,SCL)

  Serial.begin(115200);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");

}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
      Serial.print("I2C scan address 0x"); Serial.print("0");
      Serial.print(address,HEX);
      Serial.print("  ! error=");

    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    Serial.println(error);

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }   
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

//  delay(5000);           // wait 5 seconds for next scan
}


Thanks

Kurt

Re: WeMos D1 R2 and the Arduino 9-Axis Shield

PostPosted: Tue Jun 06, 2017 4:51 pm
by QuickFix
I'm not sure with what board I had a similar problem, but I recall having to trace the lines of the pins of the board to the ESP to determine the used I/O-ports and not using the software constants of those pins, but the integer port values instead.

In the end I got the I2C-scanner working and it found the chip (for a display) in question.