Lego Mindstorm EV3 sensors connect with Arduino via I2C

Hello people,
I've had the problem for four days now that I can't read my sensors data from my Lego Mindstorm Ev3 with my Arduino. What was my approach is that I first need the address of the sensors. To do this, I needed the classic 4 connections, VCC GND SDA and SCL. These must also be properly connected to my Arduino as well as to the sensor(s). For this I also used the I2C scanner scetch from the arduino playground. Now the problem is that no I2C usable device is found. Can it be that you can only use the sensors with the Ev3 Brick and must connect your arduino with the Ev3 Brick?

If there are any questions left in my description I can of course answer them directly.

I would be very grateful for any help.

Hi @lukasknauer

I think the power of the Lego Mindstorm Ev3 sensors is 9V.

Ref: EV3 Power Consumption Data
RV mineirim

Oh Wow, that could be the first mistake i made.

Now I don't have the problem that it doesn't find a device anymore, but instead this is just says Scanning... with no message following it.So it should now recognize the sensor but somehow not quite....The expected message with device found and the following address unfortunately does not appear.

// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    https://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
// Version 6, November 27, 2015.
//    Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
 
#include <Wire.h>
 
 
void setup()
{
  Wire.begin();
 
  Serial.begin(9600);
  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.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    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("Unknown 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
}

The Code should be finde.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.