Here is my test sketch. int isr_ctr =0; //debug how many times the ISR runs int stop = 2; int yellow = 2; int go = 7; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(8,OUTPUT); //Red LED pinMode(9,OUTPUT); //Yellow LED pinMode(10,OUTPUT); //green LED pinMode (11,OUTPUT); // OUTSIDE GREEN LED --BUTTON PUSHED // pinMode(5,INPUT_PULLUP); //input red switch flapping input // pinMode(6,INPUT ); //input red switch with 5k pullup digitalWrite(8,HIGH); Serial.println ("traffic-- int_ctr INITIALIZING" ); Serial.print ("Stop Variable is "); Serial.println ( stop ); digitalWrite(9,HIGH); Serial.print ("Yellow Variable is "); Serial.println ( yellow ); digitalWrite(10,HIGH); Serial.print ("Go Variable is "); Serial.println ( go); digitalWrite (11, HIGH); attachInterrupt (0, changeTime,RISING); // FALLING EDGE, INT0-PIN3 (D2) isr= changeTime delay( 1000); } void loop() { // put your main code here, to run repeatedly: golight(go); yieldlight(yellow); stoplight (stop); } void golight (int time) { digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,HIGH); Serial.println ("time - go - ISR "); Serial.print (time); Serial.print (" -- "); Serial.print (go); // debug Serial.print (" -- "); Serial.println( isr_ctr); Serial.println(""); delay(time * 500 ); digitalWrite(11,LOW); go = 2; } void yieldlight (int time) { digitalWrite(8,LOW); digitalWrite(9,HIGH); digitalWrite(10,LOW); delay(time * 500 ); } void stoplight (int time) { digitalWrite(8,HIGH); digitalWrite(9,LOW); digitalWrite(10,LOW); delay(time * 500 ); } void changeTime(){ // interrupt service routine - IO D3 momentary switch closed. isr_ctr++; // debug count go = 5; digitalWrite(11,HIGH);
|