РЕШЕНО Mcp23017-e/sp и arduino

Тема в разделе "Arduino & Shields", создана пользователем Михаил123, 25 апр 2022.

Метки:
  1. приклеил MCP23017-E/SP к меге 2560.
    MCP23017-E/SP определяется сканером I2C.
    а вот тест с MCP23017-E/SP не проходит.

    На экране:
    23:13:53.884 -> Scanning...
    23:13:53.930 -> I2C device found at address 0x25 !
    23:13:53.976 -> done
    23:13:53.976 ->
    23:13:53.976 -> MCP23xxx Blink Test!
    23:13:53.976 -> Error.



    Код (C++):
    #include <Adafruit_MCP23X17.h>
    #include <Wire.h>
    #define LED_PIN 0     // MCP23XXX pin LED is attached to
    Adafruit_MCP23X17 mcp;

    void setup() {
        Wire.begin();
      Serial.begin(9600);
      //while (!Serial);

      int nDevices;
        Serial.println("Scanning...");
      byte error, address;
        nDevices = 0;
        for(address = 8; 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.print(address,HEX);
                Serial.println(" !");
                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");
      // uncomment appropriate mcp.begin
      Serial.println("MCP23xxx Blink Test!");
      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() {
      mcp.digitalWrite(LED_PIN, HIGH);
      delay(500);
      mcp.digitalWrite(LED_PIN, LOW);
      delay(500);
    }
    в чём подвох?
     
  2. ... подвох в том, что надо указывать адрес, если адрес не 0х20.

    Вопрос закрыт