Hey,
I am relatively new to the Arduino world. At work I incorporate a lot of Teensy boards into my designs, I am the Mechanical Engineer so no software or firmware writing on my end. I began to get curious at to these little guys and got an Arduino. back story over.
I am trying to write a library based on SevSeg library. Mine will display characters on a 4dig sev seg display. I wrote a program that works great, however I would like to turn that into a library so I can simplify and reuse the function.
Here is the sketch that works:
int message[]={0,0,0,0,21,6,20,21,0,0,0,0};
int messagelength = 12;
int scrollspeed = 25;
int dig[4]={0,1,2,3};
int segA = 4;
int segB = 5;
int segC = 6;
int segD = 7;
int segE = 8;
int segF = 9;
int segG = 12;
int del=800;
int lightsensor = 1;
int lightsens;
int on = HIGH;
int off = LOW;
int m=0;
int n=0;
void setup()
{
messagelength=messagelength-3;
pinMode(dig[0],OUTPUT);
pinMode(dig[1],OUTPUT);
pinMode(dig[2],OUTPUT);
pinMode(dig[3],OUTPUT);
pinMode(segA,OUTPUT);
pinMode(segB,OUTPUT);
pinMode(segC,OUTPUT);
pinMode(segD,OUTPUT);
pinMode(segE,OUTPUT);
pinMode(segF,OUTPUT);
pinMode(segG,OUTPUT);
}
void loop()
{
scrollmessage();
}
void scrollmessage()
{
for(int m=0;m<messagelength;m++)
{
for(int n=0;n<scrollspeed;n++)
{
digitalWrite(dig[0],LOW);
digit(message[m]);
delayMicroseconds(del);
digitalWrite(dig[0],HIGH);
delayMicroseconds(del);
digitalWrite(dig[1],LOW);
digit(message[m+1]);
delayMicroseconds(del);
digitalWrite(dig[1],HIGH);
delayMicroseconds(del);
digitalWrite(dig[2],LOW);
digit(message[m+2]);
delayMicroseconds(del);
digitalWrite(dig[2],HIGH);
delayMicroseconds(del);
digitalWrite(dig[3],LOW);
digit(message[m+3]);
delayMicroseconds(del);
digitalWrite(dig[3],HIGH);
delayMicroseconds(del);
}
}
}
// ---------------- TURN OFF ALL DISPLAYS
void alloff()
{
digitalWrite(dig[0],HIGH);
digitalWrite(dig[1],HIGH);
digitalWrite(dig[2],HIGH);
digitalWrite(dig[3],HIGH);
}
// --------------------- LETTER CALLOUTS FOR DISPLAY
int digit(int var)
{
if(var<0)
{
var=0;
}
switch (var)
{
case 0: //BLANK
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,off);
digitalWrite(segE,off);
digitalWrite(segF,off);
digitalWrite(segG,off);
break;
case 1:
digitalWrite(segA,on);
digitalWrite(segB,on);
digitalWrite(segC,on);
digitalWrite(segD,off);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 2:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 3:
digitalWrite(segA,on);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,off);
break;
case 4:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,off);
digitalWrite(segG,on);
break;
case 5:
digitalWrite(segA,off);
digitalWrite(segB,on);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,off);
digitalWrite(segG,on);
break;
case 6:
digitalWrite(segA,on);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 7:
digitalWrite(segA,on);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,off);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 8:
digitalWrite(segA,on);
digitalWrite(segB,on);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,off);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 9:
digitalWrite(segA,off);
digitalWrite(segB,on);
digitalWrite(segC,on);
digitalWrite(segD,off);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 10:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,on);
digitalWrite(segD,off);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 11:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,off);
digitalWrite(segE,on);
digitalWrite(segF,off);
digitalWrite(segG,off);
break;
case 12:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,off);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,off);
break;
case 13:
digitalWrite(segA,off);
digitalWrite(segB,on);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,off);
digitalWrite(segG,off);
break;
case 14:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,off);
break;
case 15:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,on);
digitalWrite(segD,off);
digitalWrite(segE,on);
digitalWrite(segF,off);
digitalWrite(segG,on);
break;
case 16:
digitalWrite(segA,on);
digitalWrite(segB,on);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,off);
break;
case 17:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,off);
digitalWrite(segG,on);
break;
case 18:
digitalWrite(segA,on);
digitalWrite(segB,on);
digitalWrite(segC,off);
digitalWrite(segD,off);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 19:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,off);
digitalWrite(segE,on);
digitalWrite(segF,off);
digitalWrite(segG,on);
break;
case 20:
digitalWrite(segA,on);
digitalWrite(segB,off);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,off);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 21:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,off);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 22:
digitalWrite(segA,off);
digitalWrite(segB,on);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,off);
break;
case 23:
digitalWrite(segA,off);
digitalWrite(segB,off);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,off);
digitalWrite(segG,off);
break;
case 24:
digitalWrite(segA,off);
digitalWrite(segB,on);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,on);
digitalWrite(segG,off);
break;
case 25:
digitalWrite(segA,off);
digitalWrite(segB,on);
digitalWrite(segC,on);
digitalWrite(segD,on);
digitalWrite(segE,off);
digitalWrite(segF,on);
digitalWrite(segG,on);
break;
case 26:
digitalWrite(segA,on);
digitalWrite(segB,on);
digitalWrite(segC,off);
digitalWrite(segD,on);
digitalWrite(segE,on);
digitalWrite(segF,off);
digitalWrite(segG,on);
break;
}
}
This scrolls the word "tESt" across the display over and over. Great.
See the attachments for the library files. They are not working, hence the Forum post.
I am getting lots of errors and cannot figure out what to change.
Please lend some advice/code fixing.
Thanks!
Ezoom404
SevSegmessage.cpp (7.37 KB)
SevSegmessage.h (697 Bytes)