const int dip1 = 8; // Connect DIP switch 1 to pin 2
const int dip2 = 9; // Connect DIP switch 2 to pin 3
const int dip3 = 10; // Connect DIP switch 3 to pin 4
const int dip4 = 11; // Connect DIP switch 4 to pin 5
const int dip5 = 12;
const int dip6 = 13;
const int SwitchResult = A1;
// Segment patterns for decimal digits (common cathode)
const byte segmentPatterns[64] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8 0-15
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111, // 9
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111, // 9
0b00000110, // 1
};
const int segmentA = 2;
const int segmentB = 3;
const int segmentC = 4;
const int segmentD = 5;
const int segmentE = 6;
const int segmentF = 7;
const int segmentG = A0;
void setup() {
pinMode(dip1, INPUT);
pinMode(dip2, INPUT);
pinMode(dip3, INPUT);
pinMode(dip4, INPUT);
pinMode(dip5, INPUT);
pinMode(dip6, INPUT);
pinMode(segmentA, OUTPUT);
pinMode(segmentB, OUTPUT);
pinMode(segmentC, OUTPUT);
pinMode(segmentD, OUTPUT);
pinMode(segmentE, OUTPUT);
pinMode(segmentF, OUTPUT);
pinMode(segmentG, OUTPUT);
pinMode(SwitchResult, OUTPUT);
// Set up pins for 7-segment display (A to G and digit pins)
// Adjust pin numbers according to your wiring
}
void loop() {
// Read the binary input from DIP switches
int binaryValue = digitalRead(dip6) << 5 |
digitalRead(dip5) << 4 |
digitalRead(dip4) << 3 |
digitalRead(dip3) << 2 |
digitalRead(dip2) << 1 |
digitalRead(dip1);
// Convert binary to decimal
int decimalValue = binaryToDecimal(binaryValue);
// Display the decimal value on the 7-segment display
displayDecimal(decimalValue);
delay (100); // Wait for a second
}
int binaryToDecimal(int binary) {
int decimal = 0;
int base = 1;
while (binary > 0) {
int lastDigit = binary % 64;
decimal += lastDigit * base;
base *= 2;
binary /= 64;
}
return decimal;
}
void displayDecimal(int value) {
// Display the decimal value on the 7-segment display
// Implement your logic here based on the segmentPatterns array
// and your specific pin connections.
// Example: digitalWrite(segmentA, bitRead(segmentPatterns[value], 0));
// digitalWrite(segmentB, bitRead(segmentPatterns[value], 1));
// Repeat for all segments and digits.
digitalWrite(segmentA, bitRead(segmentPatterns[value],0));
digitalWrite(segmentB, bitRead(segmentPatterns[value],1));
digitalWrite(segmentC, bitRead(segmentPatterns[value],2));
digitalWrite(segmentD, bitRead(segmentPatterns[value],3));
digitalWrite(segmentE, bitRead(segmentPatterns[value],4));
digitalWrite(segmentF, bitRead(segmentPatterns[value],5));
digitalWrite(segmentG, bitRead(segmentPatterns[value],6));
}