See the code in action on Tinkercad
/* Simple method to set a number between 0 and 7 Dip switch pin 4 enables or disables the voltage coming from A3 */ #define MEGABoard uint8_t shieldVersion = 0; //Shield Version Pins #ifdef MEGABoard #define testPIN A4 //Used to Trigger Shield Version ID #define verPIN0 A3 //Used to ID Shield Version 1s bit #define verPIN1 A2 //Used to ID Shield Version 1s bit #define verPIN2 A1 //Used to ID Shield Version 2s bit #define verPIN3 A0 //Used to ID Shield Version 4s bit #endif void setup() { Serial.begin(9600); #ifdef MEGABoard pinMode(verPIN0, INPUT); //Used for Shield Versioning bit value 1 pinMode(verPIN1, INPUT); //Used for Shield Versioning bit value 2 pinMode(verPIN2, INPUT); //Used for Shield Versioning bit value 4 pinMode(verPIN3, INPUT); //Used for Shield Versioning bit value 4 pinMode(testPIN, OUTPUT); #endif //boardVersion(); //Use the function here during production } void loop() { boardVersion(); //Placing function here enables testing Serial.println(shieldVersion); delay(1000); } void boardVersion() { #ifdef MEGABoard digitalWrite(testPIN, HIGH); delay(10); shieldVersion = digitalRead(verPIN0) | (digitalRead(verPIN1) << 1) | (digitalRead(verPIN2) << 2) | (digitalRead(verPIN3) << 3); digitalWrite(testPIN, LOW); #else shieldVersion = 0; #endif }