2 pins, 2 recorders 4 inputs each
20 Serial.begin(9600); // FIXME check speed
22 pinMode(REC_MASTER, INPUT_PULLUP); // pullup for jumper/button
24 pinMode(REC_1_A, INPUT);
25 pinMode(REC_1_B, INPUT);
26 pinMode(REC_1_C, INPUT);
27 pinMode(REC_1_D, INPUT);
29 pinMode(REC_2_A, INPUT);
30 pinMode(REC_2_B, INPUT);
31 pinMode(REC_2_C, INPUT);
32 pinMode(REC_2_D, INPUT);
38 int recorder_inputs( int PinA, int PinB, int PinC, int PinD ) {
39 int StateA = digitalRead( PinA );
40 int StateB = digitalRead( PinB );
41 int StateC = digitalRead( PinC );
42 int StateD = digitalRead( PinD );
44 if ( StateA + StateB + StateC + StateD != 1 ) { // only one active at a time
50 } else if ( StateB ) {
52 } else if ( StateC ) {
54 } else if ( StateD ) {
58 return 0; // receiver off
61 #define LED_NO_ACTIVE_INPUTS 2000
63 #define LED_SERIAL 250
67 int blink_interval = LED_NO_ACTIVE_INPUTS; // 2 sec on/off no receivers turned on
73 int sat = recorder_inputs( REC_1_A, REC_1_B, REC_1_C, REC_1_D );
77 if ( sat < 0 ) { // error
78 blink_interval = LED_ERROR;
79 } else if ( sat == 0 ) {
80 blink_interval = LED_NO_ACTIVE_INPUTS;
83 if ( digitalRead(REC_MASTER) == HIGH ) try_slave = 0;
85 if ( current_L != sat ) {
87 blink_interval = LED_OFF;
89 for(int repeat=0; repeat<2; repeat++) {
92 Serial.println( 'A' - 1 + sat );
94 for(int i=0; i<sat; i++) {
95 digitalWrite(LED, HIGH);
97 digitalWrite(LED, LOW);
100 delay( 2000 - sat * LED_SERIAL ); // sleep up to 2s
106 if ( try_slave == 1 ) {
108 sat = recorder_inputs( REC_2_A, REC_2_B, REC_2_C, REC_2_D );
109 goto again_for_slave;
112 // handle next led blink event in time
114 if ( blink_interval != 0 && m > next_blink ) {
115 digitalWrite(LED, ! digitalRead(LED));
116 next_blink = m + blink_interval;