#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección I2C y tamaño de la pantalla (ajusta según tu configuración)
int posFilaCursor = 1;
int posColumnaCursor = 0;
int nuevoNumero = 0;
String temporalNum;
const int longitudArray = 5; // Definir la longitud del array, ajusta según tus necesidades
int miArray[longitudArray]; // Array para almacenar los dígitos del número
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600);
escribirNumero();
// Inicializar el array con algunos valores de ejemplo
for (int i = 0; i < longitudArray; ++i) {
miArray[i] = 0;
}
escribirLCD(posColumnaCursor, posFilaCursor, ">");
Serial.println("Bienvenido: ");
}
void loop() {
limpiarBufferSerial();
if (Serial.available() > 0) {
char opcionElegida = Serial.read();
Serial.println(opcionElegida);
if (opcionElegida == 'a' && posColumnaCursor >= 1){
escribirLCD(posColumnaCursor, posFilaCursor, " ");///borrar posicion anterior
posColumnaCursor --;
escribirLCD(posColumnaCursor, posFilaCursor, ">");
Serial.print("Fila: ");
Serial.println(posFilaCursor);
Serial.print("Columna: ");
Serial.println(posColumnaCursor);
}
else if (opcionElegida == 'd' && posColumnaCursor <= 5){
escribirLCD(posColumnaCursor, posFilaCursor, " ");///borrar posicion anterior
posColumnaCursor ++;
escribirLCD(posColumnaCursor, posFilaCursor, ">");
Serial.print("Fila: ");
Serial.println(posFilaCursor);
Serial.print("Columna: ");
Serial.println(posColumnaCursor);
if (posColumnaCursor == 5){
// Concatenar los dígitos para formar un nuevo número
nuevoNumero = concatenarDigitos(miArray, longitudArray);
temporalNum = String(nuevoNumero);
lcd.clear();
escribirLCD(0, 0, temporalNum);
// Imprimir el nuevo número
Serial.print("Nuevo número: ");
Serial.println(nuevoNumero);
delay(2000);
escribirNumero();
posColumnaCursor = 0;
escribirLCD(posColumnaCursor, posFilaCursor, ">");
}
}
else if (opcionElegida == 'w' && miArray[posColumnaCursor] <= 8){
miArray[posColumnaCursor] ++;
escribirNumero();
}
else if (opcionElegida == 's' && miArray[posColumnaCursor] >= 1){
miArray[posColumnaCursor] --;
escribirNumero();
}
}
}
// Función para concatenar dígitos y formar un número
int concatenarDigitos(int array[], int longitud) {
int numeroConcatenado = 0;
for (int i = 0; i < longitud; ++i) {
numeroConcatenado = numeroConcatenado * 10 + array[i];
}
return numeroConcatenado;
}
// Función para escribir en la pantalla LCD en una posición específica
void escribirLCD(int columna, int fila, String mensaje) {
lcd.setCursor(columna, fila); //posicionar cursor
lcd.print(mensaje.c_str()); // Convierte el String a una cadena de caracteres
}
void escribirNumero() {
for (int j = 0; j < longitudArray; ++j) {
temporalNum = String(miArray[j]);
escribirLCD(j, 0, temporalNum);
}
}
void limpiarBufferSerial() {
while (Serial.available() > 0) {
Serial.read();
}
}