Taisomas Mcp23017

Jump to navigation Jump to search

Dėmesio: Jūs nesate prisijungęs. Jūsų IP adresas bus viešai matomas, jei atliksite kokius nors keitimus. Jeigu prisijungsite arba sukursite paskyrą, jūsų keitimai bus priskirti jūsų naudotojo vardui; drauge įgysite naujų galimybių.

Keitimas gali būti atšauktas. Prašome patikrinti palyginimą, esantį žemiau, kad patvirtintumėte, kad jūs tai ir norite padaryti, ir tada išsaugokite pakeitimus, esančius žemiau, kad užbaigtumėte keitimo atšaukimą.

Dabartinė versija Jūsų tekstas
7 eilutė: 7 eilutė:
 
= ESP32 Wiring =
 
= ESP32 Wiring =
  
[[Vaizdas:D8fddce06241296363242bc44a0fffc8804a5295 2 641x500.jpg]]
+
* SDA -> pin 21
[[Vaizdas:Esquema.png]]
+
* SCL -> pin 22
 
+
* VSS -> GND
* Board 3.3V output to MCP23017 Vdd
+
* VDD -> VIN
* Board ground/GND to MCP23017 Vss
+
* 17 -> GND
* Board SCL (pin 22) to MCP23017 SCL
+
* 16 -> GND
* Board SDA (pin 21) to MCP23017 SDA
+
* 15 -> GND
* MCP23017 SCL to 4.7 KΩ resistor connected to 3.3V
 
* MCP23017 SDA to 4.7 KΩ resistor connected to 3.3V
 
* MCP23017 A0 to ground
 
* MCP23017 A1 to ground
 
* MCP23017 A2 to ground
 
* MCP23017 reset to 1K resistor connected to 3.3V
 
 
 
== I2C Scanner ==
 
  
 
<Syntaxhighlight lang="cpp">
 
<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>
 
#include <Wire.h>
+
void setup()
void setup() {
+
{
  Wire.begin();
+
Serial.begin (115200);
  Serial.begin(115200);
+
Wire.begin (21, 22); // sda= GPIO_21 /scl= GPIO_22
  Serial.println("\nI2C Scanner");
+
}
 +
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++;
 
}
 
}
 
void loop() {
 
  byte error, address;
 
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
 
  for(address = 1; address < 127; 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.println(address,HEX);
 
      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);         
 
 
}
 
}
</syntaxhighlight>
+
Serial.print ("Found ");  
 
+
Serial.print (count, DEC); // numbers of devices
== Example code ==
+
Serial.println (" device(s).");
 
 
<syntaxhighlight lang="cpp">
 
// Install library first
 
#include <Adafruit_MCP23X17.h>
 
 
 
#define LED_PIN 0    // MCP23XXX pin LED is attached to
 
 
 
Adafruit_MCP23X17 mcp;
 
 
 
void setup() {
 
  Serial.begin(115200);
 
  //while (!Serial);
 
  Serial.println("MCP23xxx Blink Test!");
 
 
 
  // uncomment appropriate mcp.begin
 
  if (!mcp.begin_I2C()) {
 
  //if (!mcp.begin_SPI(CS_PIN)) {
 
    Serial.println("Error.");
 
    while (1);
 
  }
 
 
 
  // configure pin for output
 
mcp.pinMode(LED_PIN, OUTPUT);
 
Serial.println("Looping...");
 
 
}
 
}
 
+
void loop()
void loop() {
+
{
  Serial.println("Turn on");
+
Scanner ();
  mcp.digitalWrite(LED_PIN, HIGH);
+
delay (100);
  delay(1000);
 
  Serial.println("Turn off");
 
  mcp.digitalWrite(LED_PIN, LOW);
 
  delay(1000);
 
  Serial.println("loop again");
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Primename, kad viskas, kas patenka į Žinynas, yra skelbiama pagal GNU Free Documentation License 1.2 (plačiau – Žinynas:Autorinės teisės). Jei nenorite, kad jūsų indėlis būtų be gailesčio kaitaliojamas ir platinamas, nerašykite čia.
Jūs taip pat pasižadate, kad tai jūsų pačių rašytas turinys arba kopijuotas iš viešų ar panašių nemokamų šaltinių. Nekopijuokite autorinėmis teisėmis apsaugotų darbų be leidimo!

Kad apsaugotume vikį nuo automatinio keitimų šlamšto, prašome išspręsti šį CAPTCHA:

Atšaukti Kaip redaguoti (atsidaro naujame lange)