Hi,
I'm quite new here and using an Arduino MKR WiFi 1010 board. I'm facing a few problems right now and I'm hoping to get any help.
I try to connect my MKR WiFi 1010 to a Grove - Sunlight Sensor this sensor needs to communicatie with my Arduino through the I2C protocol which is were my issue occurs.
One of the chips (I believe the WiFi module) is using the 0x60
I2C address. The sunlight sensor is using the same I2C address 0x60
and therefore it is impossible to receive any data from the sensor, changing the address seems impossible either.
To fix it I bought a TCA9548A - I2C Multiplexer to communicatie with the sensor. The I2C Multiplexer is by default using address 0x70
. But after running a I2C scanner script (posted below) I see the following output (I would expect to see at lease address 0x70
here):
Image of my MKR WiFi 1010 connected to the I2C Multiplexer
Before connecting the multiplexer:
I2C Scanner
Scanning...
I2C device found at address 0x60 !
I2C device found at address 0x6B !
done
After connecting the multiplexer
I2C Scanner
Scanning...
I2C device found at address 0x60 !
I2C device found at address 0x6B !
done
I2C scanner script
// --------------------------------------
// i2c_scanner https://playground.arduino.cc/Main/I2cScanner/
//
// 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
}