Code Monkey home page Code Monkey logo

Comments (2)

arminsalcin avatar arminsalcin commented on August 22, 2024 3

Hello try this code for interrupt with esp32 .

#include <Wire.h>
#include <Adafruit_MCP23017.h>

Adafruit_MCP23017 mcp;

byte ledPin = 8;
byte arduinoIntPin = 25;
volatile boolean awakenByInterrupt = false;
static uint16_t ledState = 0;
byte mcpPinA = 7;


void setup() {

  Serial.begin(9600);
  Serial.println("MCP23007 Interrupt Test");

  pinMode(arduinoIntPin, INPUT);

  mcp.begin();      // use default address 0
  mcp.pinMode(ledPin, OUTPUT);


  mcp.pinMode(mcpPinA, INPUT);
  mcp.pullUp(mcpPinA, HIGH);  // turn on a 100K pullup internally

  mcp.setupInterrupts(true, false, LOW);
  mcp.setupInterruptPin(mcpPinA, FALLING);

  mcp.readGPIOAB();

  attachInterrupt(digitalPinToInterrupt(arduinoIntPin), intCallBack, FALLING);

}

// The int handler will just signal that the int has happen
// we will do the work from the main loop.
void intCallBack() {
  awakenByInterrupt = true;
}

void handleInterrupt() {

  uint8_t pin = mcp.getLastInterruptPin();
  uint8_t val = mcp.getLastInterruptPinValue();

  if ( pin == mcpPinA && val == 0) { //  Test for release - pin pulled high
    if ( ledState ) {
      mcp.digitalWrite(ledPin, LOW);
    } else {
      mcp.digitalWrite(ledPin, HIGH);
    }

    ledState = ! ledState;
  }

  while ( !mcp.digitalRead(mcpPinA));
  // and clean queued INT signal
  cleanInterrupts();
}

void cleanInterrupts() {
  delay(50);
  mcp.readGPIOAB();
  awakenByInterrupt = false;
}

void loop() {
  if (awakenByInterrupt) handleInterrupt();
}

from adafruit-mcp23017-arduino-library.

caternuson avatar caternuson commented on August 22, 2024

Closing. Seems like above example resolved this.

from adafruit-mcp23017-arduino-library.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.