Hi guys! I have made an improvement to the seven segment library I made a while ago.
The library works for common cathode ssds. You can copy the below code in a new tab for your sketch:
#include<Arduino.h>
int a;
int b;
int c;
int d;
int e;
int f;
int g;
void sevensegpins(int z, int y, int x, int w, int v, int u, int t){
a=z;
b=y;
c=x;
d=w;
e=v;
f=u;
g=t;
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}
void clearall(){
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
void zero(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(d, HIGH);
digitalWrite(f, HIGH);
digitalWrite(e, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
}
void one(){
clearall();
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
}
void two(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(g, HIGH);
digitalWrite(e, HIGH);
digitalWrite(d, HIGH);
}
void three(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(g, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
}
void four(){
clearall();
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
}
void five(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
}
void six(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(f, HIGH);
digitalWrite(e, HIGH);
digitalWrite(g, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
}
void seven(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
}
void eight(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void nine(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
}
/*void a(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void b(){
clearall();
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(g, HIGH);
}
void d(){
clearall();
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void f(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(g, HIGH);
}
void h(){
clearall();
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(g, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
}
void l(){
clearall();
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
}
void p(){
clearall();
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void q(){
nine()
}
void s(){
five();
}
void u(){
clearall();
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
}*/
void sevenseg(int val){
if(val==0){
zero();
}
if(val==1){
one();
}
if(val==2){
two();
}
if(val==3){
three();
}
if(val==4){
four();
}
if(val==5){
five();
}
if(val==6){
six();
}
if(val==7){
seven();
}
if(val==8){
eight();
}
if(val==9){
nine();
}
}
The sevensegpins()function will do the pinModes for you. Put the pins the segments A to G are connected in the brackets in order.
The sevensegfunction displays. Example: sevenseg(5);
This is a sample:
#include"sevenseg.h" //include the library
int val=0; //integer to store analog readings
void setup(){
sevensegpins(13, 12, 11, 10, 9, 8, 7); //initialize the segment pins
}
void loop(){
val=(analogRead(0));
val=map(val, 0, 1023, 0, 9); //remap the sensor readings to 0-9
sevenseg(val); //display the sensor readings on seven segment display
}
Thank you for looking at this! Please comment!