I am having trouble with this project I am doing. I am trying to make a digital scale using an Uno and a 4 digit 7 segment SR410561N. I am also using a 1k pot to use as the values for my digital scale. The numbers are reading right but I am having a trouble displaying different numbers for each digit at the same time because its not being put in serially. I don't really understand how I would be able to accomplish it with just the hardware at hand. I am open to many suggestions if possible! Here is the code I have so far.
#define ON HIGH
#define OFF LOW
// segment should be low
int digit1=2;
int digit2=3;
int digit3=4;
int digit4=5;
int arrayD[]= {digit1, digit2, digit3, digit4};
int segA=6;
int segB=7;
int segC=8;
int segD=9;
int segE=10;
int segF=11;
int segG=12;
int segDot = 13;
int potPin = 5;
int val = 0;
float voltage;
int digiScale[4];
void setup() {
Serial.begin(9600);
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(segDot, OUTPUT);
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
}
void loop(){
val = analogRead(potPin);
Serial.println(val);
delay(1000);
voltage = val * (5.0 / 1023.0);
Serial.println(voltage);
Serial.print("\n");
delay(1000);
// int reset = 0;
// int dot;
//
// switch(dot){
// case 1:
// digitalWrite(digit1, ON);
// break;
// case 2:
// digitalWrite(digit2, ON);
// break;
// case 3:
// digitalWrite(digit3, ON);
// break;
// case 4:
// digitalWrite(digit4, ON);
// break;
// }
//digitalWrite(digit1, ON);
//digitalWrite(digit2, ON);
//digitalWrite(digit3, ON);
//digitalWrite(digit4, ON);
//delay(1000);
Serial.println("\n");
int one = val % 10;
Serial.println(one);
int two = val % 100/10;
Serial.println(two);
int three = val % 1000 / 100;
Serial.println(three);
int four = val / 1000;
Serial.println(four);
digiScale[0] = four;
digiScale[1] = three;
digiScale[2] = two;
digiScale[3] = one;
digitalWrite(digit1, ON);
digitalWrite(digit2, ON);
digitalWrite(digit3, ON);
digitalWrite(digit4, ON);
if (digit1 == 1){
numbers(digiScale[0]);
}
if (digit2 == 1){
numbers(digiScale[1]);
}
if (digit3 == 1){
numbers(digiScale[2]);
}
if (digit4 == 1){
numbers(digiScale[3]);
}
delay(1000);
dispScale();
digitalWrite(digit1, OFF);
digitalWrite(digit2, OFF);
digitalWrite(digit3, OFF);
digitalWrite(digit4, OFF);
//digitalWrite(digit1, ON);
//numbers(digiScale[3]);
//digitalWrite(digit2, OFF);
//digitalWrite(digit3, OFF);
//digitalWrite(digit4, OFF);
//delay(100);
//
//digitalWrite(digit2, ON);
//numbers(digiScale[2]);
//digitalWrite(digit3, ON);
//numbers(digiScale[1]);
//digitalWrite(digit4, ON);
//numbers(digiScale[0]);
//digitalWrite(digit1, OFF);
//digitalWrite(digit2, OFF);
//digitalWrite(digit3, OFF);
//digitalWrite(digit4, OFF);
//delay(1000);
}
void numbers(int digit){
// digitalWrite(digit1, ON);
// digitalWrite(digit2, ON);
// digitalWrite(digit3, ON);
// digitalWrite(digit4, ON);
// delay(1000);
switch(digit){
case 0:
digitalWrite(segA, OFF);
digitalWrite(segB, OFF);
digitalWrite(segC, OFF);
digitalWrite(segD, OFF);
digitalWrite(segE, OFF);
digitalWrite(segF, OFF);
digitalWrite(segG, ON);
break;
case 1:
digitalWrite(segA, ON);
digitalWrite(segB, OFF);
digitalWrite(segC, OFF);
digitalWrite(segD, ON);
digitalWrite(segE, ON);
digitalWrite(segF, ON);
digitalWrite(segG, ON);
break;
case 2:
digitalWrite(segA, OFF);
digitalWrite(segB, OFF);
digitalWrite(segC, ON);
digitalWrite(segD, OFF);
digitalWrite(segE, OFF);
digitalWrite(segF, ON);
digitalWrite(segG, OFF);
break;
case 3:
digitalWrite(segA, OFF);
digitalWrite(segB, OFF);
digitalWrite(segC, OFF);
digitalWrite(segD, OFF);
digitalWrite(segE, ON);
digitalWrite(segF, ON);
digitalWrite(segG, OFF);
break;
case 4:
digitalWrite(segA, ON);
digitalWrite(segB, OFF);
digitalWrite(segC, OFF);
digitalWrite(segD, ON);
digitalWrite(segE, ON);
digitalWrite(segF, OFF);
digitalWrite(segG, OFF);
break;
case 5:
digitalWrite(segA, OFF);
digitalWrite(segB, ON);
digitalWrite(segC, OFF);
digitalWrite(segD, OFF);
digitalWrite(segE, ON);
digitalWrite(segF, OFF);
digitalWrite(segG, OFF);
break;
case 6:
digitalWrite(segA, OFF);
digitalWrite(segB, ON);
digitalWrite(segC, OFF);
digitalWrite(segD, OFF);
digitalWrite(segE, OFF);
digitalWrite(segF, OFF);
digitalWrite(segG, OFF);
break;
case 7:
digitalWrite(segA, OFF);
digitalWrite(segB, OFF);
digitalWrite(segC, OFF);
digitalWrite(segD, ON);
digitalWrite(segE, ON);
digitalWrite(segF, ON);
digitalWrite(segG, ON);
break;
case 8:
digitalWrite(segA, OFF);
digitalWrite(segB, OFF);
digitalWrite(segC, OFF);
digitalWrite(segD, OFF);
digitalWrite(segE, OFF);
digitalWrite(segF, OFF);
digitalWrite(segG, OFF);
break;
case 9:
digitalWrite(segA, OFF);
digitalWrite(segB, OFF);
digitalWrite(segC, OFF);
digitalWrite(segD, OFF);
digitalWrite(segE, ON);
digitalWrite(segF, OFF);
digitalWrite(segG, OFF);
break;
case 10:
digitalWrite(segA, ON);
digitalWrite(segB, ON);
digitalWrite(segC, ON);
digitalWrite(segD, ON);
digitalWrite(segE, ON);
digitalWrite(segF, ON);
digitalWrite(segG, ON);
break;
}
}
void dispScale(){
for(int i = 0; i < 4; i++){
digitalWrite(arrayD*, ON);*
_ numbers(digiScale*);_
_ Serial.print("\n");_
_ delay(1000);_
_ }_
_ delay(2000);_
_ numbers(10);_
_}*_
//Also all leds are connected with resistors.