#define delayTime 3
#define charBreak 6

#define LED1      0
#define LED2      1
#define LED3      2
#define LED4      3

#define charWidth 4

void setup()
{
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
}

int g[]   = {15,  10,  10,  11};
int h[]   = {15,  8,   8,   11};
int n[]   = {15,  9,   9,   1};
int p[]   = {15,  9,   9,   13};

void displayLine(int line)
{
  int myline;
  myline = line;
  if (myline >= 8)  {digitalWrite(LED1, HIGH); myline -= 8;}  else {digitalWrite(LED1, LOW);}
  if (myline >= 4)  {digitalWrite(LED2, HIGH); myline -= 4;}  else {digitalWrite(LED2, LOW);}
  if (myline >= 2)  {digitalWrite(LED3, HIGH); myline -= 2;}  else {digitalWrite(LED3, LOW);}
  if (myline >= 1)  {digitalWrite(LED4, HIGH); myline -= 1;}  else {digitalWrite(LED4, LOW);}
}

void displayChar(char c)
{
  if (c == 'g'){for (int i = 0; i < charWidth; i++){displayLine(g[i]); delay(delayTime);} displayLine(0);}
  if (c == 'h'){for (int i = 0; i < charWidth; i++){displayLine(h[i]); delay(delayTime);} displayLine(0);} 
  if (c == 'n'){for (int i = 0; i < charWidth; i++){displayLine(n[i]); delay(delayTime);} displayLine(0);}
  if (c == 'p'){for (int i = 0; i < charWidth; i++){displayLine(p[i]); delay(delayTime);} displayLine(0);}
  
  delay(charBreak);
}

void displayString(char* s)
{
  for (int i = 0; i <= strlen(s); i++)
  {
    displayChar(s[i]);
  }
}

void loop()
{   
  displayString("n  g  h  p");
}
