Hi,
I am trying to use the I2C expansion MCP23017 chip using the board shown below with a WeMos D1 mini.
I know that it should have 0x20 default I2C address but I tried to scan anyway just to check if the device is working. Wiring is quite simple. I am powering the device connecting the Vcc and Gnd to the respective WeMos pins (I tried both the 3.3Vdc and 5Vdc for power) and I have connected the SCL pin of the device to the D1 pin of WeMos and the SDA to D2 which I am pretty sure should be correct (I tried both pulling up SDA and SCL via 4.7Kohm to 3.3Vdc but nothing changed).
What could I be possibly doing wrong?
Anyone has experience with this board?
thanks
To scan I am using this code, but the number of devices is always 0 and the scan fails to identify the I2C address of the device
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
			
			I am trying to use the I2C expansion MCP23017 chip using the board shown below with a WeMos D1 mini.
I know that it should have 0x20 default I2C address but I tried to scan anyway just to check if the device is working. Wiring is quite simple. I am powering the device connecting the Vcc and Gnd to the respective WeMos pins (I tried both the 3.3Vdc and 5Vdc for power) and I have connected the SCL pin of the device to the D1 pin of WeMos and the SDA to D2 which I am pretty sure should be correct (I tried both pulling up SDA and SCL via 4.7Kohm to 3.3Vdc but nothing changed).
What could I be possibly doing wrong?
Anyone has experience with this board?
thanks
To scan I am using this code, but the number of devices is always 0 and the scan fails to identify the I2C address of the device
			
				B4X:
			
		
		
		#Region Project Attributes
    #AutoFlushLogs: True
    #CheckArrayBounds: True
    #StackBufferSize: 300
#End Region
Sub Process_Globals
    Public Serial1 As Serial
    Public Wire As WireMaster
    Private wireerror As Byte = 0
    Private deviceaddress As Byte   
End Sub
Private Sub AppStart
    Serial1.Initialize(115200)
    Wire.Initialize
  
    Dim ii As Int
    For ii = 0 To 10
        'Try 10 times
       Scanning
    Next
  
End Sub
Private Sub Scanning
    Private bc As ByteConverter
    Dim b(1) As Byte
    Dim devices As Int
    Log("Scanning started...")
    devices = 0
    For i = 0 To 127 
        deviceaddress = i     
        RunNative("icwirebegintransmisson", deviceaddress)
        Delay(20)
        RunNative("icwireendtransmisson", Null)
        Delay(20)
        b(0) = deviceaddress     
        If wireerror = 0 Then
            Log("I2C device found at address: 0x", bc.HexFromBytes(b), " (", deviceaddress, ")")
            devices = devices + 1
        End If
        If wireerror = 4 Then
            Log("I2C device unknown at address: 0x", bc.HexFromBytes(b), " (", deviceaddress, ")")
        End If
    Next
    If (devices = 0) Then
        Log("No I2C devices.")
    End If
    Log("Scanning completed.")
End Sub
#if C
#include <Wire.h>
void icwirebegintransmisson (B4R::Object* o) {
  Wire.beginTransmission(b4r_main::_deviceaddress);
}
void icwireendtransmisson (B4R::Object* o) {
  b4r_main::_wireerror = Wire.endTransmission();
}
#End if
			
				Last edited: