We need more info, like, what kind of 7 segment you using, and how you connecting them.
Well, in case you using ShiftRegisters. Here you have a very basic code, isn't the best, but works perfectly.
On the Shift Registers outputs, it's connected like this:
Q0 -> a Segment
Q1 -> b Segment
Q2 -> c Segment
Q3 -> d Segment
Q4 -> e Segment
Q5 -> f Segment
Q6 -> g Segment
Q7 -> DecimalPoint Segment
int potPin = A0;
int potValueMapped;
int digitOne;
int digitTwo;
const int latchPin = 8; // Pin connected to Pin 12 of 74HC595 (Latch)
const int dataPin = 11; // Pin connected to Pin 14 of 74HC595 (Data)
const int clockPin = 12; // Pin connected to Pin 11 of 74HC595 (Clock)
void setup() {
Serial.begin(9600); //Remove after testings
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
potValueMapped = map(analogRead(potPin), 0, 1023, 0, 50); //Reads the Analog Input and map it with values from 0 to 50
digitOne = (potValueMapped/10); //We get the 1st digit, simply dividing by 10
Serial.println(digitOne); //Remove after testings
displayDigitOne(digitOne); //This function will ShiftOut the 1st digit (It's made this way, bc only using 1 7 segment and digitone I want it with the decimal point ON)
delay(500); //This delay you have to remove it's just so I can see both numbers in only 1 7 Segments
digitTwo = (potValueMapped - (10*digitOne)); //We get the 2nd digit with this math. Example, for a value of 39 it is making 39 - 3 * 10 = 9
Serial.println(digitTwo); //Remove after testings
displayDigitTwo(digitTwo); //This function will ShiftOut the 2nd digit (This function doesn't turn on the decimal point)
delay(500); // This is your refresh time
}
//The reason for 2 "functions" is bc the numbers on digit one, will always have the decimal point
//This code should be replaced depending on how you are sending data to the 7 segments
//In this code, it's done for using 2 Shift Registers
void displayDigitOne(int value) {
switch (value) {
case 0:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11111101);
digitalWrite(latchPin, HIGH);
break;
case 1:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b01100001);
digitalWrite(latchPin, HIGH);
break;
case 2:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11011011);
digitalWrite(latchPin, HIGH);
break;
case 3:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11110011);
digitalWrite(latchPin, HIGH);
break;
case 4:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b01100111);
digitalWrite(latchPin, HIGH);
break;
case 5:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b10110111);
digitalWrite(latchPin, HIGH);
break;
case 6:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b10111111);
digitalWrite(latchPin, HIGH);
break;
case 7:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11100001);
digitalWrite(latchPin, HIGH);
break;
case 8:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11111111);
digitalWrite(latchPin, HIGH);
break;
case 9:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11100111);
digitalWrite(latchPin, HIGH);
break;
case '.':
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000001);
digitalWrite(latchPin, HIGH);
break;
case 'OFF':
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
break;
default:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
break;
}
}
void displayDigitTwo(int value) {
switch (value) {
case 0:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11111100);
digitalWrite(latchPin, HIGH);
break;
case 1:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b01100000);
digitalWrite(latchPin, HIGH);
break;
case 2:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11011010);
digitalWrite(latchPin, HIGH);
break;
case 3:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11110010);
digitalWrite(latchPin, HIGH);
break;
case 4:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b01100110);
digitalWrite(latchPin, HIGH);
break;
case 5:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b10110110);
digitalWrite(latchPin, HIGH);
break;
case 6:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b10111110);
digitalWrite(latchPin, HIGH);
break;
case 7:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11100000);
digitalWrite(latchPin, HIGH);
break;
case 8:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11111110);
digitalWrite(latchPin, HIGH);
break;
case 9:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11100110);
digitalWrite(latchPin, HIGH);
break;
case '.':
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000001);
digitalWrite(latchPin, HIGH);
break;
case 'OFF':
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
break;
default:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
break;
}
}
But of course, you can use some Library for the outs.