#include #include HardwareSerial Sender(2); // Define a Serial port instance called 'Sender' using serial port 1 #define Sender_Txd_pin 17 #define Sender_Rxd_pin 16 int EtatLED = 0; int EtatBP = 0; int EtatPrecd = 0; int EtatLEDPrecd =0; bool Unefois = false; DFRobot_MCP23017 mcp027(Wire, /*addr =*/0x27);//constructor, change the Level of A2, A1, A0 via DIP switch to revise I2C address within 0x20~0x27 //Prepare: connect the LED to a digital pin of IO expansion board(eg:eGPA7) void setup(void) { Serial.begin(115200); // Define and start serial monitor Sender.begin(9600, SERIAL_8N1, Sender_Txd_pin, Sender_Rxd_pin); while(mcp027.begin() != 0){ Serial.println("Initialization of the chip failed, please confirm that the chip connection is correct!"); delay(1000); } mcp027.pinMode(/*pin = */mcp027.eGPB0, /*mode = */OUTPUT); mcp027.pinMode(/*pin = */mcp027.eGPA0, /*mode = */INPUT); } void loop(void) { EtatPrecd = EtatBP ; EtatBP = mcp027.digitalRead(/*pin = */mcp027.eGPA0); delay(100); //Serial.print("EtatBP :"); //Serial.println(EtatBP); /*delay(1000); Serial.print("verrou1 :"); Serial.println(verrou);*/ if ((EtatPrecd == 1) && (EtatBP == 0 )) { Serial.print("BP pressé :"); //Serial.println(verrou); EtatLEDPrecd = EtatLED; EtatLED = !EtatLED; Serial.print("EtatLED :"); Serial.println(EtatLED); } if(EtatLED == 0 ){ mcp027.digitalWrite(mcp027.eGPB0, LOW); if ( Unefois == false ) { Sender.print("allume"); Unefois = !Unefois ; } Serial.print("Valeur transmise avec appui BP : "); Serial.println(EtatLED ); delay(100); } else if (( EtatLED ==1 ) && (EtatLEDPrecd == 0)) { mcp027.digitalWrite(mcp027.eGPB0, HIGH); //Sender.print(EtatLED ); if ( Unefois == true) { Sender.print("eteint"); Unefois = !Unefois ; } Serial.print("Valeur transmise sans appui BP : "); Serial.println(EtatLED ); delay(100); } }