Hi all !
I am currently trying to make a 7-segment 2 digit display that can display numbers from 00 - 99. I found a code that can show numbers from 0-20 and the display functioned fine. Then I wanted to show on the display value from a potentiometer. I added and changed the code the code and it works quite well for numbers 80 - 99... everything else is weird.
int pin1 = 2;
int pin2 = 3; // --6--
int pin3 = 4; // 5 | | 7
int pin4 = 5; // |--4--|
int pin5 = 6; // 1 | | 3
int pin6 = 7; // --2--
int pin7 = 8;
int gnd1 = 11; // gnd1 is display 1's gnd
int gnd2 = 9; // gnd2 is display 2's gnd
int timer = 500; // A timer, to run the for loop 500 times, which turns out as 1 second.
int sens1 = 0; // Analog measurement pin
int gildi = 0;
int gildi1 = 0;
int fyrritala = 0; // The first 7-segment display
int seinnitala = 0; // The second 7-segment display
//int gamla = 0;
void setup(){
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT); //The following sets up all of the pins for use.
pinMode(pin5, OUTPUT);
pinMode(pin6, OUTPUT);
pinMode(pin7, OUTPUT);
pinMode(gnd1, OUTPUT);
pinMode(gnd2, OUTPUT);
pinMode(sens1, INPUT);
Serial.begin(9600);
}
void loop()
{
gildi1 = analogRead(sens1);
int gildi = map(gildi1, 0, 1023, 0, 99);
Serial.println(gildi);
if (0 <= gildi < 10){
fyrritala = 0;
seinnitala = gildi;
}
if (10 <= gildi < 20){
fyrritala = 1;
seinnitala = gildi - 10;
}
if (20 <= gildi < 30){
fyrritala = 2;
seinnitala = gildi - 20;
}
if (30 <= gildi < 40){
fyrritala = 3;
seinnitala = gildi - 30;
}
if (40 <= gildi < 50){
fyrritala = 4;
seinnitala = gildi - 40;
}
if (50 <= gildi < 60){
fyrritala = 5;
seinnitala = gildi - 50;
}
if (60 <= gildi < 70){
fyrritala = 6;
seinnitala = gildi - 60;
}
if (70 <= gildi < 80){
fyrritala = 7;
seinnitala = gildi - 70;
}
if (80 <= gildi < 90){
fyrritala = 8;
seinnitala = gildi - 80;
}
if (90 <= gildi){
fyrritala = 9;
seinnitala = gildi - 90;
}
Serial.println(fyrritala);
Serial.println(seinnitala);
for (int i=0; i<timer; i++){
digitalWrite(gnd1, B0);
if (fyrritala == 0){
tala0();
}
if (fyrritala == 1){
tala1();
}
if (fyrritala == 2){
tala2();
}
if (fyrritala == 3){
tala3();
}
if (fyrritala == 4){
tala4();
}
if (fyrritala == 5){
tala5();
}
if (fyrritala == 6){
tala6();
}
if (fyrritala == 7){
tala7();
}
if (fyrritala == 8){
tala8();
}
if (fyrritala == 9){
tala9();
}
delay(0.5);
digitalWrite(gnd2, B0);
digitalWrite(gnd1, B1);
if (seinnitala == 0){
tala0();
}
if (seinnitala == 1){
tala1();
}
if (seinnitala == 2){
tala2();
}
if (seinnitala == 3){
tala3();
}
if (seinnitala == 4){
tala4();
}
if (seinnitala == 5){
tala5();
}
if (seinnitala == 6){
tala6();
}
if (seinnitala == 7){
tala7();
}
if (seinnitala == 8){
tala8();
}
if (seinnitala == 9){
tala9();
}
delay(0.5);
digitalWrite(gnd2, B1);
}
fyrritala = 0;
seinnitala = 0;
}
void tala0(){ //Writes the number 0 to the display
digitalWrite(pin1, B1);
digitalWrite(pin2, B1);
digitalWrite(pin3, B1);
digitalWrite(pin4, B0);
digitalWrite(pin5, B1);
digitalWrite(pin6, B1);
digitalWrite(pin7, B1);
}
void tala1(){
digitalWrite(pin1, B0);
digitalWrite(pin2, B0);
digitalWrite(pin3, B1);
digitalWrite(pin4, B0);
digitalWrite(pin5, B0);
digitalWrite(pin6, B0);
digitalWrite(pin7, B1);
}
void tala2(){
digitalWrite(pin1, B1);
digitalWrite(pin2, B1);
digitalWrite(pin3, B0);
digitalWrite(pin4, B1);
digitalWrite(pin5, B0);
digitalWrite(pin6, B1);
digitalWrite(pin7, B1);
}
void tala3(){
digitalWrite(pin1, B0);
digitalWrite(pin2, B1);
digitalWrite(pin3, B1);
digitalWrite(pin4, B1);
digitalWrite(pin5, B0);
digitalWrite(pin6, B1);
digitalWrite(pin7, B1);
}
void tala4(){
digitalWrite(pin1, B0);
digitalWrite(pin2, B0);
digitalWrite(pin3, B1);
digitalWrite(pin4, B1);
digitalWrite(pin5, B1);
digitalWrite(pin6, B0);
digitalWrite(pin7, B1);
}
void tala5(){
digitalWrite(pin1, B0);
digitalWrite(pin2, B1);
digitalWrite(pin3, B1);
digitalWrite(pin4, B1);
digitalWrite(pin5, B1);
digitalWrite(pin6, B1);
digitalWrite(pin7, B0);
}
void tala6(){
digitalWrite(pin1, B1);
digitalWrite(pin2, B1);
digitalWrite(pin3, B1);
digitalWrite(pin4, B1);
digitalWrite(pin5, B1);
digitalWrite(pin6, B1);
digitalWrite(pin7, B0);
}
void tala7(){
digitalWrite(pin1, B0);
digitalWrite(pin2, B0);
digitalWrite(pin3, B1);
digitalWrite(pin4, B0);
digitalWrite(pin5, B0);
digitalWrite(pin6, B1);
digitalWrite(pin7, B1);
}
void tala8(){
digitalWrite(pin1, B1);
digitalWrite(pin2, B1);
digitalWrite(pin3, B1);
digitalWrite(pin4, B1);
digitalWrite(pin5, B1);
digitalWrite(pin6, B1);
digitalWrite(pin7, B1);
}
void tala9(){
digitalWrite(pin1, B0);
digitalWrite(pin2, B0);
digitalWrite(pin3, B1);
digitalWrite(pin4, B1);
digitalWrite(pin5, B1);
digitalWrite(pin6, B1);
digitalWrite(pin7, B1);
}
It is like it doesn´t matter what numbers there are below 80, the computer always subtracts 80 from what ever the number is. Serial shows me that for the number 79, the first digit is 8 and the second is -1. For the number 63 the first is 8 and second -17
What is wrong with my logic ?