BouncingON WAY history short
newest img in topbounce100msecbuttonstorcapacitor.png 470 nF bounce50mseccapacitor.png 39 nF bounce200msecbuttoncapacitor.png 39 nF bounce100msecbuttoncapacitor.png bounce50msecpin.png bounce50msecbutton.png bounce5msecpin.png bounc1msecbutton.png bounce1msecpin.png bounce5msec.png /* INTERRUPTS Arduino uno/mega https://jensd.dk/edu/doc/arduino/ards.html is an pin overview . Look for pins marked INT0, INT1,... Board int.0 int.1 int.2 int.3 int.4 int.5 Uno, Ethernet 2 3 Mega2560 2 3 21 20 19 18 */ const int pin = 2; //define interrupt pin to 2 const int respPin = 13; volatile int state = LOW; // To make sure variables shared between an ISR //the main program are updated correctly,declare them as volatile. volatile int intCnt = 0; volatile unsigned long last = 0; boolean p8 = false; void blinkk() { //ISR function if (30 <= (millis() - last)) { // at least 30 msec between two intr intCnt++; last = millis(); state = !state; //toggle the state when the interrupt occurs digitalWrite(8, (p8 = !p8)); } } void setup() { Serial.begin(115200); pinMode(respPin, OUTPUT); //set pin 13 as output pinMode(pin, INPUT_PULLUP); // intr on pin 2 (UNO) pinMode(8, OUTPUT); // for togling every time an intr is received digitalWrite(8, LOW); attachInterrupt(digitalPinToInterrupt(pin), blinkk, FALLING); //CHANGE); } int oldCnt = 0; void loop() { /* if (old != intCnt) { Serial.println(intCnt); old = intCnt; } */ // DEBUG if (oldCnt != intCnt) { oldCnt = intCnt; Serial.println(oldCnt); } digitalWrite(respPin, state); //pin 13 equal the state value } Jens |