8
// set up an interrupt handler on pin 2 to nitice fan pulses
9
attachInterrupt( 0, fanPulseHandler, RISING );
10
digitalWrite( 2, HIGH );
12
// set up output pins (4 to 13) for the led array
13
for( int a = 4; a < 14; a++ )
20
// when non-zero, the time (in microseconds) of a new fan pulse that has just
21
// occurred, which means that segment drawing needs to be restarted
22
static unsigned long new_pulse_at = 0;
24
// interrupt handler to count the number of fan pulses
25
void fanPulseHandler()
27
// ignore every other pulse
28
static bool ignore = true;
32
// set a new pulse time
33
new_pulse_at = micros();
37
// wait until it is time to draw the next segment or a new pulse has occurred
38
void endOfSegmentDelay()
40
while( micros() < next_segment_at && !new_pulse_at );
47
unsigned long loop_start_time = micros();
49
// wait till it's time to draw the next segment