#include "ssd.h"
const unsigned char digits[] = {BLANK,BLANK,BLANK, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE,BLANK,BLANK,BLANK};
//const unsigned char digits[] = {BLANK,BLANK,H,I,A,D,I,L,BLANK,BLANK};
#define btn 2
static unsigned char ssd[MAX_SSD_CNT];
volatile int state = HIGH;
int size = sizeof(digits)/sizeof(digits[0]);
void setup() {
init_ssd();
pinMode(2,INPUT);
pinMode(12,OUTPUT);
attachInterrupt(digitalPinToInterrupt(btn),toggle,CHANGE);
}
void toggle(){
state = !state;
}
void reverse(){
static int wait = 0;
static int i = 0 ;
ssd[0] = digits[i];
ssd[1] = digits[i+1];
ssd[2] = digits[i+2];
ssd[3] = digits[i+3];
display(ssd);
if (!wait--) {
i++;
if (i == size-2 ){
i = 0;
}
wait = 5000;
}
}
void loop() {
// reading button using and controlling direction via level triggering
if(state){
reverse();
}
else{
forward();
}
}
void forward(){
static int wait = 0;
static int i = size-1 ;
ssd[0] = digits[i-3];
ssd[1] = digits[i-2];
ssd[2] = digits[i-1];
ssd[3] = digits[i];
display(ssd);
if (!wait--) {
i--;
if (i == 0 ){
i = size -1;
}
wait = 5000;
}
}