/* Copyright (c) 2014-2015 NicoHood See the readme for credit to other people. PinChangeInterrupt_LowLevel Demonstrates how to use the library without the API Make sure to comment "//#define PCINT_API" in the settings file. To maximize speed and size also uncomment all not used pins above. Then you could also uncomment "#define PCINT_COMPILE_ENABLED_ISR" to get away the .a linkage overhead. Connect a button/cable to pin 7 and ground (Uno). Strong overwritten callback functions are called when an interrupt occurs. The Led state will change if the pin state does. PinChangeInterrupts are different than normal Interrupts. See readme for more information. Dont use Serial or delay inside interrupts! This library is not compatible with SoftSerial. The following pins are usable for PinChangeInterrupt: Arduino Uno/Nano/Mini: All pins are usable Arduino Mega: 10, 11, 12, 13, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69) Arduino Leonardo/Micro: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI) HoodLoader2: All (broken out 1-7) pins are usable Attiny 24/44/84: All pins are usable Attiny 25/45/85: All pins are usable Attiny 13: All pins are usable Attiny 441/841: All pins are usable ATmega644P/ATmega1284P: All pins are usable */ #include "PinChangeInterrupt.h" // choose a valid PinChangeInterrupt pin of your Arduino board // manually defined pcint number #define pinBlink 7 #define interruptBlink 23 void setup() { // set pin to input with a pullup, led to output pinMode(pinBlink, INPUT_PULLUP); pinMode(LED_BUILTIN, OUTPUT); // attach the new PinChangeInterrupts and enable event functions below attachPinChangeInterrupt(interruptBlink, CHANGE); } void PinChangeInterruptEvent(interruptBlink)(void) { // switch Led state digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); } void loop() { // nothing to do here }