#include <avr/sleep.h> #include <avr/power.h> #include "pindefs.h" // globais volatile int buttonChanged = 0; void pciSetup (byte pin) { *digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin)); // enable pin PCIFR |= bit (digitalPinToPCICRbit(pin)); // clear any outstanding interruptjk PCICR |= bit (digitalPinToPCICRbit(pin)); // enable interrupt for the group } void disable (byte pin) { *digitalPinToPCMSK(pin) &= ~bit (digitalPinToPCMSKbit(pin)); } ISR (PCINT1_vect) { // handle pin change interrupt for A0 to A5 here buttonChanged=1; } void setup() { pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode (LED3, OUTPUT); pinMode(LED4, OUTPUT); digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); pinMode (KEY1, INPUT_PULLUP); pinMode (KEY2, INPUT_PULLUP); pinMode(KEY3, INPUT_PULLUP); pciSetup(KEY1); pciSetup(KEY2); pciSetup(KEY3); Serial.begin(9600); } void loop() { Serial.print("!"); delay(10); if (buttonChanged) { digitalWrite(LED1,digitalRead(KEY1)); digitalWrite(LED2,digitalRead(KEY2)); buttonChanged = 0; } }