// Define pin numbers for each segment of the 7-segment displays
const int segmentPins1[] = {13, 14, 15, 16, 17, 18, 19}; // Display 1
const int segmentPins2[] = {21, 22, 23, 25, 26, 27, 32}; // Display 2
const int segmentPins3[] = {33, 34, 35, 4, 2, 0, 5}; // Display 3
const int segmentPins4[] = {12, 13, 14, 15, 16, 17, 18}; // Display 4 (using some overlapping pins)
// Define IR receiver pins
const int irReceivers[] = {33, 32, 14, 27};
// Segment patterns for numbers 0-9 (common cathode)
// Each bit corresponds to a segment (A-G)
const byte numberPatterns[10] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
void setup() {
// Initialize segment pins as outputs
for (int i = 0; i < 7; i++) {
pinMode(segmentPins1[i], OUTPUT);
pinMode(segmentPins2[i], OUTPUT);
pinMode(segmentPins3[i], OUTPUT);
pinMode(segmentPins4[i], OUTPUT);
}
// Initialize IR receiver pins as inputs
for (int i = 0; i < 4; i++) {
pinMode(irReceivers[i], INPUT);
}
Serial.begin(115200); // Start serial communication for debugging
}
// Function to display a number (0-9) on a 7-segment display
void displayNumber(int number, const int segmentPins[]) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], (numberPatterns[number] >> i) & 0x01);
}
}
void loop() {
// Check IR receivers and update the 7-segment displays accordingly
for (int i = 0; i < 4; i++) {
int irState = digitalRead(irReceivers[i]);
if (irState == HIGH) {
// If the IR receiver detects an object, display the corresponding number (i+1) on the 7-segment display
Serial.print("IR Receiver ");
Serial.print(i + 1);
Serial.println(" detected something!");
if (i == 0) {
displayNumber(1, segmentPins1); // Display 1 on 7-segment Display 1
} else if (i == 1) {
displayNumber(2, segmentPins2); // Display 2 on 7-segment Display 2
} else if (i == 2) {
displayNumber(3, segmentPins3); // Display 3 on 7-segment Display 3
} else if (i == 3) {
displayNumber(4, segmentPins4); // Display 4 on 7-segment Display 4
}
} else {
// If nothing is detected, clear the display (set all segments to off)
if (i == 0) {
displayNumber(0, segmentPins1); // Display 0 (or clear) on 7-segment Display 1
} else if (i == 1) {
displayNumber(0, segmentPins2); // Display 0 (or clear) on 7-segment Display 2
} else if (i == 2) {
displayNumber(0, segmentPins3); // Display 0 (or clear) on 7-segment Display 3
} else if (i == 3) {
displayNumber(0, segmentPins4); // Display 0 (or clear) on 7-segment Display 4
}
}
}
delay(500); // Add a small delay to reduce flickering
}