I made some simple code to be able to display (almost) every letter in the alphabeth with a single digit 7 segment display but it don't seem to work

so i used functions for all the letters to simply be able to call them when i need to.
the display is put in right. i tested it, but the problem arose when i used the functions. i'm really new to this so it's probably completely useless code but it's all i could find online. (the l stands for led)

#define lb 3
#define lc 4
#define ld 5
#define le 6
#define lf 7
#define lg 8
#define punt 9

void setup(){
  pinMode(la, OUTPUT);
  pinMode(lb, OUTPUT);
  pinMode(lc, OUTPUT);
  pinMode(ld, OUTPUT);
  pinMode(le, OUTPUT);
  pinMode(lf, OUTPUT);
  pinMode(lg, OUTPUT);
  pinMode(punt, OUTPUT);
}
void wipe(){
  digitalWrite(la, LOW);
  digitalWrite(lb, LOW);
  digitalWrite(lc, LOW);
  digitalWrite(ld, LOW);
  digitalWrite(le, LOW);
  digitalWrite(lf, LOW);
  digitalWrite(lg, LOW);
  digitalWrite(punt, LOW);
}
void a(){
  digitalWrite(la, HIGH);
  digitalWrite(lb, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void b(){
  digitalWrite(la, HIGH);
  digitalWrite(lb, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void c(){
  digitalWrite(la, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  wipe();
}
void d(){
  digitalWrite(la, HIGH);
  digitalWrite(lb, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  wipe();
}
void e(){
  digitalWrite(la, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void f(){
  digitalWrite(la, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void g(){
  digitalWrite(la, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  wipe();
}
void h(){
  digitalWrite(lb, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void i(){
  digitalWrite(lb, HIGH);
  digitalWrite(lc, HIGH);
  wipe();
}
void j(){
  digitalWrite(lb, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  wipe();
}
void k(){
  h();
}
void l(){
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  wipe();
}
void n(){
  digitalWrite(lc, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void o(){
  digitalWrite(la, HIGH);
  digitalWrite(lb, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  wipe();
}
void p(){
  digitalWrite(la, HIGH);
  digitalWrite(lb, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void r(){
  digitalWrite(la, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  wipe();
}
void s(){
  digitalWrite(la, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(lf, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void u(){

  digitalWrite(lb, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lf, HIGH);
  wipe();
}
void y(){
  digitalWrite(lb, HIGH);
  digitalWrite(lc, HIGH);
  digitalWrite(lf, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void z(){
  digitalWrite(la, HIGH);
  digitalWrite(lb, HIGH);
  digitalWrite(ld, HIGH);
  digitalWrite(le, HIGH);
  digitalWrite(lg, HIGH);
  wipe();
}
void loop(){
  h();
  delay(1000);
  e();
  delay(1000);
  l();
  delay(1000);
  l();
  delay(1000);
  o();
  delay(1000);
}```

Please post a wiring diagram (hand drawn is best) and describe the problem: what did you expect to happen, and what happened instead?

1 Like

You are wiping the display immediately after turning on the segments.

Move the call to wipe() to the beginning of each function

2 Likes

thx lol