#include <LiquidCrystal.h>

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
int position = 0;
int letter = 1;
int line = 0;

byte dark[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};

byte light[8] = {
  B11111,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B11111
};


void setup() {
  lcd.begin(20, 4);
  pinMode(0, OUTPUT);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  lcd.createChar(1, light);
  lcd.createChar(2, dark);
  lcd.home();
  lcd.print("a");
  lcd.cursor();
  
}

void loop() {

  digitalWrite(0, HIGH);

  if (digitalRead(2) == HIGH){
    position = position + 1;
    lcd.setCursor(position, line);
    lcd.print("a");
    letter = 1;

  }
  if (digitalRead(3) == HIGH){
    lcd.setCursor(position, line);
    letter = letter + 1;
    if(letter == 2){
      lcd.print("b");
    }
    if(letter == 3){
      lcd.print("c");
    }
    if(letter == 4){
      lcd.print("d");
    }
    if(letter == 5){
      lcd.print("e");
    }
    if(letter == 6){
      lcd.print("f");
    }
    if(letter == 7){
      lcd.print("g");
    }
    if(letter == 8){
      lcd.print("h");
    }
    if(letter == 9){
      lcd.print("i");
    }
    if(letter == 10){
      lcd.print("j");
    }
    if(letter == 11){
      lcd.print("k");
    }
    if(letter == 12){
      lcd.print("l");
    }
    if(letter == 13){
      lcd.print("m");
    }
    if(letter == 14){
      lcd.print("n");
    }
    if(letter == 15){
      lcd.print("o");
    }
    if(letter == 16){
      lcd.print("p");
    }
    if(letter == 17){
      lcd.print("q");
    }
    if(letter == 18){
      lcd.print("r");
    }
    if(letter == 19){
      lcd.print("s");
    }
    if(letter == 20){
      lcd.print("t");
    }
    if(letter == 21){
      lcd.print("u");
    }
    if(letter == 22){
      lcd.print("v");
    }
    if(letter == 23){
      lcd.print("w");
    }
    if(letter == 24){
      lcd.print("x");
    }
    if(letter == 25){
      lcd.print("y");
    }
    if(letter == 26){
      lcd.print("z");
    }
    if(letter == 27){
      lcd.print("!");
    }
    if(letter == 28){
      lcd.print(".");
    }
    if(letter == 29){
      lcd.print("&");
    }
    if(letter == 30){
      lcd.print("(");
    }
    if(letter == 31){
      lcd.print(")");
    }
    if(letter == 32){
      lcd.print(" ");
    }
    if(letter == 33){
      lcd.print("a");
      letter = 1;
    }

  }
  if (digitalRead(4) == HIGH){
    position = position + 2;
    lcd.setCursor(position, line);
    letter = 1;
    lcd.print("a");
  }
  if (digitalRead(5) == HIGH){
    position = 0;
    line = 0;
    lcd.noCursor();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Clearing...");
    lcd.setCursor(0,2);
    lcd.print("You can now release");
    lcd.setCursor(4,3);
    lcd.print("the button!");

    delay(5000);
    lcd.home();
    lcd.clear();
    lcd.print("a");
    letter = 1;
    lcd.cursor();

  }
  if (digitalRead(7) == HIGH){
    
    lcd.setCursor(position, line);
    lcd.print(" ");
    position = position - 1;
    lcd.setCursor(position, line);
    lcd.print("a");
    letter = 1;

  }
  if (digitalRead(6) == HIGH){
    lcd.setCursor(position, line);
    if(letter == 1){
      lcd.print(" ");
    }
    if(line != 3){
      position = 0;
      line = line + 1;
      lcd.setCursor(position, line);
      lcd.print("a");
      letter = 1;
    }
    else
    {
      line = 0;
      position = 0;
      lcd.setCursor(position, line);
      lcd.print("a");
      letter = 1;

    }
  }
  if (digitalRead(1) == HIGH){
    lcd.setCursor(position, line);
    letter = letter - 1;
    if(letter == 0){
      lcd.print(" ");
      letter = 32;
    }
    if(letter == 1){
      lcd.print("a");
    }
    if(letter == 2){
      lcd.print("b");
    }
    if(letter == 3){
      lcd.print("c");
    }
    if(letter == 4){
      lcd.print("d");
    }
    if(letter == 5){
      lcd.print("e");
    }
    if(letter == 6){
      lcd.print("f");
    }
    if(letter == 7){
      lcd.print("g");
    }
    if(letter == 8){
      lcd.print("h");
    }
    if(letter == 9){
      lcd.print("i");
    }
    if(letter == 10){
      lcd.print("j");
    }
    if(letter == 11){
      lcd.print("k");
    }
    if(letter == 12){
      lcd.print("l");
    }
    if(letter == 13){
      lcd.print("m");
    }
    if(letter == 14){
      lcd.print("n");
    }
    if(letter == 15){
      lcd.print("o");
    }
    if(letter == 16){
      lcd.print("p");
    }
    if(letter == 17){
      lcd.print("q");
    }
    if(letter == 18){
      lcd.print("r");
    }
    if(letter == 19){
      lcd.print("s");
    }
    if(letter == 20){
      lcd.print("t");
    }
    if(letter == 21){
      lcd.print("u");
    }
    if(letter == 22){
      lcd.print("v");
    }
    if(letter == 23){
      lcd.print("w");
    }
    if(letter == 24){
      lcd.print("x");
    }
    if(letter == 25){
      lcd.print("y");
    }
    if(letter == 26){
      lcd.print("z");
    }
    if(letter == 27){
      lcd.print("!");
    }
    if(letter == 28){
      lcd.print(".");
    }
    if(letter == 29){
      lcd.print("&");
    }
    if(letter == 30){
      lcd.print("(");
    }
    if(letter == 31){
      lcd.print(")");
    }

  }
  if(line == 3 && position == 20){
    line = 0;
    position = 0;
    letter = 1;
    lcd.setCursor(position, line);
    lcd.print("a");

  }

  digitalWrite(0,LOW);
  delay(1000);
}
$abcdeabcde151015202530354045505560fghijfghij