Arduino - calculadora de conversión de variables

 
Vista:

calculadora de conversión de variables

Publicado por carlos areiza (1 intervención) el 09/06/2022 22:34:11
void setup() {
//Calculadora que pueda cambiar entre las siguientes bases: binaria, octal, decimal, hexadecimal
// Menú 1- pedir al usuarion en que base quiere trabajar 2- desirle a usuario ingresé número 3- a qué base quiere convertir el número 4- mostrar número
// se debe emplear un teclado matricial
// ya la parte logica esta lista, faltaria solo acoplar el menú que no se como hacerlo

}

void loop() {
// put your main code here, to run repeatedly:

// Varibles que vamos a usar
int numero; // Numero que ingresa el usuario
int base_actual; // Base en que esta representado el numero ingresado
int base_destino; // Base a la que se desea convertir el numero


// E: Leer los datos de entrada


// Leer la base actual del KeyPad
base_actual = keypad.ReadInt(); /// Investigar como

// leer la cadena del keypad
String cadena;

// Tarea : investigar ocmo leer el key pad esperando dos segundos para recibir la entrada
cadena = keypad.readstr();

numero = entradaABase( cadena, base_actual );

// P: Cuando ya he leido el numero y la base destino
String resultado;

resultado = numeroABase( numero, base_destino );

// S: Mostrar el resultado

lcd.print( resultado );
}

// Convierte un numero a su representacion en un sistema de numeracion
// numero: cifra que se quiere representar
// base: es la base del sistema de numeracion
String numeroABase( int numero, int base ){
// Cadena que se va a mostrar
String resultado = "";

// Residuo de la division por la base
int residuo;
int cociente=numero;
// Tabla que indica el carcter a usar para cada digito segun la base
char caracteres [] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };

while( cociente > base ){
residuo = cociente % base;
cociente = cociente / base;

resultado = caracteres[residuo] + resultado;
}
resultado = caracteres[cociente] + resultado;
return resultado;
}

// Convierte una cadena leida del key pad en un numero en la base deseada
int entradaABase( String cadena, int base ){
// Variable qu econtiene el valor de un digito segun su posicion en el numero
int valor_posicional;
// Acumulador que va llevando la suma de los valores posicionales de cada digito
int suma=0;

// POsicion dentro de la cadena en cada repeticion del ciclo
int pos;
pos = strlen( cadena ) - 1;

valor_posicional = 1;
while( pos >= 0 ){
int temp = (int)cadena[pos];
int digito;
if( temp >= 48 && temp <= 58)
digito = temp - 48;
if( temp >= 65 && temp <= 75 )
digito = temp - 55;

int valor = digito * valor_posicional;
suma = suma + valor;
pos = pos - 1;
valor_posicional = valor_posicional * base;
}
return suma;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder