i am using Arduino Mega.. ANd this is the code:
void bump(void);
void setup()
{
pinMode(19,INPUT);
attachInterrupt(4,bump,HIGH);
pinMode(13,OUTPUT);
}
void loop()
{
}
void bump()
{
for(float i = 0; i < 90000; i++){
digitalWrite(13,HIGH);
}
for(float i = 0; i < 10000; i++){
digitalWrite(13,LOW);
}
}
Although i give +5 V to it once, the LED will blink twice...! What is the solution?
1 Answer 1
After wondering over it for quite a long time, I finally came to the conclusion, that the interrupt should be made to trigger at RISING edge, if I want it to go into ISR the moment it gets HIGH.
Hence the setup line was change to
attachInterrupt(4,bump,RISING);
And the cod e works well.
I suppose that is because, when it receives a HIGH signal, than the period for which it receives HIGH is a bit long, during which it adds another interrupt into the queue, and so the ISR is executed once again.
-
Remember to mark your answer as solution in three days ;)Paolo Zanchi– Paolo Zanchi2015年04月24日 07:48:48 +00:00Commented Apr 24, 2015 at 7:48
digitalWrite(13,HIGH); delay(ONTIME); digitalWrite(13,LOW); delay(OFF_TIME);
do what you intend?