Mcp23017: Skirtumas tarp puslapio versijų

Iš Žinynas.
Jump to navigation Jump to search
15 eilutė: 15 eilutė:
 
* 15 -> GND
 
* 15 -> GND
  
 +
<Syntaxhighlight lang="cpp">
 +
// ESP32 I2C Scanner
 +
// Based on code of Nick Gammon http://www.gammon.com.au/forum/?id=10896
 +
// ESP32 DevKit - Arduino IDE 1.8.5
 +
// Device tested PCF8574 - Use pullup resistors 3K3 ohms !
 +
// PCF8574 Default Freq 100 KHz
 +
#include <Wire.h>
 +
void setup()
 +
{
 +
Serial.begin (115200);
 +
Wire.begin (21, 22); // sda= GPIO_21 /scl= GPIO_22
 +
}
 +
void Scanner ()
 +
{
 +
Serial.println ();
 +
Serial.println ("I2C scanner. Scanning ...");
 +
byte count = 0;
 +
Wire.begin();
 +
for (byte i = 8; i < 120; i++)
 +
{
 +
Wire.beginTransmission (i); // Begin I2C transmission Address (i)
 +
if (Wire.endTransmission () == 0) // Receive 0 = success (ACK response)
 +
{
 +
Serial.print ("Found address: ");
 +
Serial.print (i, DEC);
 +
Serial.print (" (0x");
 +
Serial.print (i, HEX); // PCF8574 7 bit address
 +
Serial.println (")");
 +
count++;
 +
}
 +
}
 +
Serial.print ("Found ");
 +
Serial.print (count, DEC); // numbers of devices
 +
Serial.println (" device(s).");
 +
}
 +
void loop()
 +
{
 +
Scanner ();
 +
delay (100);
 +
}
 +
</syntaxhighlight>
  
 
= ESP8266 =
 
= ESP8266 =

03:37, 26 lapkričio 2022 versija

Mcp23017-pinout.jpg.webp

Mcp23017-and-8-leds schem.png-2.webp

This port expander provides you 16 more GPIOs and cost you around 1€. And because it communicates via I²C it only uses two GPIOs of your ESP8266 and you can address up to 8 MCP23017. That makes up to 126 additional GPIOs.

ESP32 Wiring

  • SDA -> pin 21
  • SCL -> pin 22
  • VSS -> GND
  • VDD -> VIN
  • 17 -> GND
  • 16 -> GND
  • 15 -> GND
// ESP32 I2C Scanner
// Based on code of Nick Gammon http://www.gammon.com.au/forum/?id=10896
// ESP32 DevKit - Arduino IDE 1.8.5
// Device tested PCF8574 - Use pullup resistors 3K3 ohms !
// PCF8574 Default Freq 100 KHz
#include <Wire.h>
void setup()
{
Serial.begin (115200); 
Wire.begin (21, 22); // sda= GPIO_21 /scl= GPIO_22
}
void Scanner ()
{
Serial.println ();
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;
Wire.begin();
for (byte i = 8; i < 120; i++)
{
Wire.beginTransmission (i); // Begin I2C transmission Address (i)
if (Wire.endTransmission () == 0) // Receive 0 = success (ACK response) 
{
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX); // PCF8574 7 bit address
Serial.println (")");
count++;
}
}
Serial.print ("Found "); 
Serial.print (count, DEC); // numbers of devices
Serial.println (" device(s).");
}
void loop()
{
Scanner ();
delay (100);
}

ESP8266

https://medium.com/@wilko.vehreke/more-gpios-for-the-esp8266-with-the-mcp23017-b89f5e15cde3