You only have one set of segment outputs, so to show more than one digit you have to light each one in turn:
const int Brightness = 10; // Higher number = brighter but more flicker
// segment pin definitions
const int SegA = 7;
const int SegB = 8;
const int SegC = 9;
const int SegD = 10;
const int SegE = 11;
const int SegF = 12;
const int SegG = 13;
// common pins of the four digits definitions
//USING ANALOG A0-3 PINS, IN STARTUP FUNCTION
const int TrigPin = 2;
const int EchoPin = 3;
const int buttonPin = 4;
const int greenLED = 5;
const int redLED = 6;
// variables that will change
double cm, inchDouble, feetDouble;
int inch, feet, number;
byte current_digit;
void displayOff()
{
digitalWrite(A0, HIGH);
digitalWrite(A1, HIGH);
digitalWrite(A2, HIGH);
digitalWrite(A3, HIGH);
}
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(SegA, OUTPUT);
pinMode(SegB, OUTPUT);
pinMode(SegC, OUTPUT);
pinMode(SegD, OUTPUT);
pinMode(SegE, OUTPUT);
pinMode(SegF, OUTPUT);
pinMode(SegG, OUTPUT);
displayOff();
feet = 12;
inch = 34;
}
void SetSegments(int digit)
{
switch (digit)
{
case 0:
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, HIGH);
break;
case 1:
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, HIGH);
break;
case 2:
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, HIGH);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, LOW);
break;
case 3:
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, LOW);
break;
case 4:
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 5:
digitalWrite(SegA, LOW);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 6:
digitalWrite(SegA, LOW);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 7:
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, HIGH);
break;
case 8:
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 9:
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
}
}
void loop()
{
SetSegments(feet / 10);
digitalWrite(A0, LOW);
delay(Brightness);
digitalWrite(A0, HIGH);
SetSegments(feet % 10); // '%' is 'modulo', remainder after division. This gets the 1's digit.
digitalWrite(A1, LOW);
delay(Brightness);
digitalWrite(A1, HIGH);
SetSegments(inch / 10);
digitalWrite(A2, LOW);
delay(Brightness);
digitalWrite(A2, HIGH);
SetSegments(inch % 10); // '%' is 'modulo', remainder after division. This gets the 1's digit.
digitalWrite(A3, LOW);
delay(Brightness);
digitalWrite(A3, HIGH);
// State Change Detection for the button.
boolean buttonIsPressed = digitalRead(buttonPin) == LOW;
static boolean buttonWasPressed = false;
if (buttonIsPressed != buttonWasPressed)
{
buttonWasPressed = buttonIsPressed;
if (buttonIsPressed)
{
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0;
cm = (int(cm * 100.0)) / 100.0;
inchDouble = cm * 0.39370079;
feetDouble = inchDouble / 12.00;
feet = inchDouble / 12;
inch = (feetDouble - feet) * 12;
Serial.print("Distance: ");
Serial.print(feet);
Serial.print("' ");
Serial.print(inch);
Serial.println("\"");
}
}
}