#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#include "Keypad.h"
const byte ROWS = 4; // number of rows
const byte COLS = 4; // number of columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'#','0','*','D'}
};

byte rowPins[ROWS] = {13, 12 , 11, 10}; // row pinouts of the keypad R1 = D8, R2 = D7, R3 = D6, R4 = D5
byte colPins[COLS] = {9, 8, 7, 6};    // column pinouts of the keypad C1 = D4, C2 = D3, C3 = D2
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

const int SCREEN_WIDTH = 128;
const int SCREEN_HEIGT = 64;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGT, &Wire, -1);

//determinamos los pines de entrada
void setup(){
Serial.begin(9600);
 pinMode(5, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(2, OUTPUT);
 pinMode(A3, OUTPUT);
 pinMode(A2, OUTPUT);

  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { 
    Serial.println(F("SSD1306 allocation failed"));
    while(true);
  } 
display.clearDisplay();

//determinamos que en el cursor (1,0) apararezca el numero 1
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 10);
  //determinamos que al inicio en el cursor aparezca la palabra "HOLA"
  display.println("HOLA");
  display.setCursor(0, 32);
  //determinamos que al inicio en el cursor aparezca la palabra "PROGRAMA"
  display.println("PROGRAMA");
  display.display();
  delay(2000);


}

void loop() {
  // put your main code here, to run repeatedly:
char key = keypad. getKey();
 if (key != NO_KEY)
 {
   display.clearDisplay();

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 10);
  
  //Mostramos la palabra letra en nuestra pantalla
  display.println("Letra");
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0, 32);
  //
  display.println(key);
  display.display();
 }

  ///Determinamos la secuencia para que al pulsar cada numero, se refleje en la pantalla y se refleje en numero binario.
  //Para el 0 deben estar todos apagados
  if (key == '0')
  {
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(2, LOW);
  digitalWrite(5, LOW);
  }

  //Para el 1 debe encender el pin 2 y mantener los demas apagados
  if (key == '1')
  {
  digitalWrite(2, HIGH);
 }

 //Para el 2 debe apagar el 2 y encender el pin 3
 if (key == '2')
  {
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  }

  //Para el 3 debe encender el 2 y el 3 pin permanecer encendido
  if (key == '3')
  {
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  }

  // Para el 4 deben apagar el (2,3) y encender el pin 4
  if (key == '4')
  {
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  }

  //para el 5 deben encender los pines (2,4)
if (key == '5')
  {
  digitalWrite(2, HIGH);
  digitalWrite(4, HIGH);
  }
  //Para el 6 debe apagar el pin 2 y encender el pin 3
if (key == '6')
  {
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  }

  //Para el 7 debe encender el los pines(3,4,2)
if (key == '7')
  {
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(2, HIGH);
  }

  //Para el 8 Debe apagar todos y encender el pin 5
if (key == '8')
  {
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(2, LOW);
  digitalWrite(5, HIGH);
  }

  //Para el 9 deben encender solo los pines (2,5)
if (key == '9')
  {
  digitalWrite(2, HIGH);
  digitalWrite(5, HIGH);
  }

  //Determinamos para que al presionar la letra A, active una bombilla en AC
  if (key == 'A')
  {
  digitalWrite(A3, HIGH);
  }

  //Determianamos que al presionar la letra B, apague la bombilla
  if (key == 'B')
  {
  digitalWrite(A3, LOW);
  }
  //Determianamos que al presionar la letra C, encienda un  motor DC
   if (key == 'C')
  {
  digitalWrite(A2, HIGH);
  }

  //Determianamos que al presionar la letra D, apague el motor
   if (key == 'D')
  {
  digitalWrite(A2, LOW);
  }


 
}
$abcdeabcde151015202530fghijfghij