Evaluación para el consolidado 2
Producto Académico N.° 2
Actividad Individual
Criterio Detalle
Resultado de Al finalizar la unidad, cada estudiante será capaz de elaborar programas
aprendizaje para microcontrolador que involucren el uso adecuado del manejo de
datos para el desarrollo de proyectos prácticos.
de la unidad
Temas 1. Tipos de datos
2. Entradas y salidas de datos
3. Funciones - librerías
Tipo de
producto Informe Individual.
académico
Enunciado / Ejercicio 1: Calcular el área de un polígono regular
Consigna Escribe un programa que solicite el número de lados y la longitud de un lado
de un polígono regular. Calcula y muestra el área del polígono utilizando la
fórmula:
Donde n es el número de lados y s es la longitud de un lado. El programa
debe validar que el número de lados sea mayor o igual a 3 y que la longitud
del lado sea positiva.
Entrada:
Número de lados del polígono
Longitud de un lado
Salida:
Área del polígono o mensaje de error.
int lados;
float lado, area;
void setup() {
Serial.begin(9600);
void loop() {
Serial.println("\nAREA POLIGONO");
Serial.println("Ingrese el numero de lados del poligono (mayor o igual a
3):");
while (Serial.available() == 0) {}
lados = Serial.parseInt();
1|Página
Serial.println(lados);
Serial.println("Ingrese la longitud de un lado (valor positivo):");
while (Serial.available() == 0) {}
lado = Serial.parseFloat();
Serial.println(lado);
if (lados < 3) {
Serial.println("El numero de lados debe ser mayor igual a 3.");
} else if (lado <= 0) {
Serial.println("La longitud del lado debe ser positiva.");
} else {
area = (lados * lado*lado) / (4 * tan(PI / lados));
Serial.print("El area del poligono es: ");
Serial.println(area);
}
Ejercicio 2: Verificar el estado de un número en una secuencia
aritmética
Escribe un programa que determine si un número dado es el primer, último o
un término medio en una secuencia aritmética. El programa debe solicitar el
primer término, la razón (diferencia común) y el número total de términos de
la secuencia, y luego verificar la posición del número dado en la secuencia.
Entrada:
Primer término de la secuencia
Razón de la secuencia
Número total de términos
Número por verificar
Salida:
Mensaje indicando si el número es el primero, último o un término medio.
int primerTermino, razon, numTerminos, numero, ultimoTermino;
void setup() {
Serial.begin(9600);
void loop() {
Serial.println("\nPOSICION EN SECUENCIA");
2|Página
Serial.println("Ingrese el primer termino de la secuencia:");
while (!Serial.available()) {}
primerTermino = Serial.parseInt();
Serial.println(primerTermino);
Serial.println("Ingrese la razon de la secuencia:");
while (!Serial.available()) {}
razon = Serial.parseInt();
Serial.println(razon);
Serial.println("Ingrese el numero total de terminos:");
while (!Serial.available()) {}
numTerminos = Serial.parseInt();
Serial.println(numTerminos);
Serial.println("Ingrese el numero a verificar:");
while (!Serial.available()) {}
numero = Serial.parseInt();
Serial.println(numero);
ultimoTermino = primerTermino + (numTerminos - 1) * razon;
if (numero == primerTermino) {
Serial.println("El número es el primer termino de la secuencia.");
} else if (numero== ultimoTermino) {
Serial.println("El numero es el último termino de la secuencia.");
} else if (numero > primerTermino && numero < ultimoTermino) {
Serial.println("El número es un termino medio de la secuencia.");
} else{
Serial.println("El número no es un termino de la secuencia");
}
Ejercicio 3: Resolver una ecuación cuadrática
Escribe un programa que resuelva una ecuación cuadrática de la forma
ax2+bx+c=0. El programa debe calcular las raíces y mostrarlas. Además,
debe validar que el coeficiente a no sea cero.
Entrada:
Coeficientes a, b y c
Salida:
Las raíces de la ecuación.
float a, b, c, discriminante, x1, x2;
void setup() {
3|Página
Serial.begin(9600);
}
void loop() {
Serial.println("\nSOLUCION DE ECUACION CUADRÁTICA");
Serial.println("Ingrese el coeficiente a (diferente de cero):");
while (!Serial.available()) {}
a = Serial.parseFloat();
Serial.println(a);
Serial.println("Ingrese el coeficiente b:");
while (!Serial.available()) {}
b = Serial.parseFloat();
Serial.println(b);
Serial.println("Ingrese el coeficiente c:");
while (!Serial.available()) {}
c = Serial.parseFloat();
Serial.println(c);
if (a == 0) {
Serial.println("El coeficiente a no puede ser cero. La ecuación no es
cuadrática.");
return;
}
discriminante = b * b - 4 * a * c;
if (discriminante >=0) {
x1 = (-b + sqrt(discriminante)) / (2 * a);
x2 = (-b - sqrt(discriminante)) / (2 * a);
Serial.print("Las raíces son: ");
Serial.print(x1);
Serial.print(" y ");
Serial.println(x2);
} else {
Serial.println("Las raices son imaginarias.");
}
}
Ejercicio 4: Conversión de coordenadas polares a cartesianas
Escribe un programa que convierta coordenadas polares (radio y ángulo en
grados) a coordenadas cartesianas (x, y). Debes validar que el radio sea no
negativo y convertir el ángulo de grados a radianes antes de realizar la
conversión.
Entrada:
4|Página
Radio
Ángulo en grados
Salida:
Coordenadas (x, y) en el sistema cartesiano.
float radio, anguloGrados, anguloRadianes, x, y;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("\nCONVERTIR COORDENADAS");
Serial.println("Ingrese el radio:");
while (!Serial.available()) {}
radio = Serial.parseFloat();
Serial.println(radio);
Serial.println("Ingrese el ángulo en grados:");
while (!Serial.available()) {}
anguloGrados = Serial.parseFloat();
Serial.println(anguloGrados);
if (radio < 0) {
Serial.println("El radio debe ser positivo.");
return;
}
anguloRadianes = anguloGrados * PI / 180;
x = radio * cos(anguloRadianes);
y = radio * sin(anguloRadianes);
Serial.print("Las coordenadas cartesianas son (");
Serial.print(x);
Serial.print(", ");
Serial.print(y);
Serial.println(")");
Ejercicio 5: Determinar la intersección de dos líneas
Escribe un programa que determine el punto de intersección de dos líneas
rectas en un plano, dadas sus ecuaciones en la forma general Ax+By+C=0.
5|Página
El programa debe validar que las líneas no sean paralelas (determinante no
nulo) y calcular el punto de intersección.
Entrada:
Coeficientes A1, B1, C1 de la primera línea
Coeficientes A2, B2, C2 de la segunda línea
Salida:
Punto de intersección (x, y) o mensaje indicando que las líneas son
paralelas.
float A_1, B_1, C_1, A_2, B_2, C_2, x, y, determinante;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("\nPUNTO INTERSECCION RECTAS");
Serial.println("Ingrese los coeficientes A1, B1, C1 de la primera recta:");
while (!Serial.available()) {}
A_1 = Serial.parseFloat();
Serial.println(A_1);
while (!Serial.available()) {}
B_1 = Serial.parseFloat();
Serial.println(A_1);
while (!Serial.available()) {}
C_1 = Serial.parseFloat();
Serial.println(C_1);
Serial.println("Ingrese los coeficientes A2, B2, C2 de la segunda recta:");
while (!Serial.available()) {}
A_2 = Serial.parseFloat();
Serial.println(A_2);
while (!Serial.available()) {}
B_2 = Serial.parseFloat();
Serial.println(B_2);
while (!Serial.available()) {}
C_2 = Serial.parseFloat();
Serial.println(C_2);
determinante = A_1 * B_2 - A_2 * B_1;
if (determinante == 0) {
Serial.println("Las rectas no se intersecan.");
} else {
x = (C_1 * B_2 - C_2 * B_1) / determinante;
6|Página
y = (A_1 * C_2 - A_2 * C_1) / determinante;
Serial.print("Punto de intersección es (");
Serial.print(x);
Serial.print(", ");
Serial.print(y);
Serial.println(")");
}
Ejercicio 6: Verificar si un número está en un rango específico
Desarrolla un programa que lea un número entero del usuario y determine en
qué rango se encuentra el número, o si está fuera de los rangos
especificados. El programa debe imprimir un mensaje indicando en qué
rango está el número o que está fuera de los rangos especificados.
Entrada:
Un número entero número proporcionado por el usuario.
Salida:
Mensaje indicando si el número está en el rango de 10 a 20.
Mensaje indicando si el número está en el rango de 21 a 30.
Mensaje indicando si el número está fuera de estos rangos.
int numero;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("\nRANGO DE UN NUMERO");
Serial.println("Ingrese un numero:");
while (!Serial.available()) {}
numero = Serial.parseInt();
Serial.println(numero);
if (numero >= 10 && numero <= 20) {
Serial.println("El numero está en el rango de 10 a 20.");
} else if (numero >= 21 && numero <= 30) {
Serial.println("El numero está en el rango de 21 a 30.");
} else {
Serial.println("El numero está fuera de rango.");
}
7|Página
}
Ejercicio 7: Calcular el volumen de un tetraedro
Escribe un programa que calcule el volumen de un tetraedro regular, dado el
valor de la longitud de sus aristas. Utiliza la fórmula:
Donde s es la longitud de una arista. El programa debe validar que la
longitud sea positiva.
Entrada:
Longitud de la arista
Salida:
Volumen del tetraedro o mensaje de error.
float arista, volumen;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("\nCALCULAR VOLUMEN TETRAEDRO");
Serial.println("Ingrese la longitud de la arista:");
while (!Serial.available()) {}
arista = Serial.parseFloat();
Serial.println(arista);
if (arista <= 0) {
Serial.println("La longitud de la arista debe ser positiva.");
return;
}
volumen = (sqrt(2) / 12) * pow(arista, 3);
Serial.print("El volumen del tetraedro es: ");
Serial.println(volumen);
Ejercicio 8: Determinar el ángulo entre dos vectores
Escribe un programa que calcule el ángulo entre dos vectores dados en el
plano (cada vector tiene dos componentes: x e y). Utiliza la fórmula del
8|Página
producto escalar para calcular el ángulo en grados.
Entrada:
Componentes (x1, y1) del primer vector
Componentes (x2, y2) del segundo vector
Salida:
Ángulo entre los dos vectores en grados.
float x1, y1, x2, y2, escalar, moduloV1, moduloV2, anguloRadianes,
anguloGrados;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("\nANGULO ENTRE VECTORES");
Serial.println("Ingrese las componentes x1 y y1 del primer vector:");
while (!Serial.available()) {}
x1 = Serial.parseFloat();
Serial.println(x1);
while (!Serial.available()) {}
y1 = Serial.parseFloat();
Serial.println(y1);
Serial.println("Ingrese las componentes x2 y y2 del segundo vector:");
while (!Serial.available()) {}
x2 = Serial.parseFloat();
Serial.println(x2);
while (!Serial.available()) {}
y2 = Serial.parseFloat();
Serial.println(y2);
escalar = x1 * x2 + y1 * y2;
moduloV1 = sqrt(x1 * x1 + y1 * y1);
moduloV2 = sqrt(x2 * x2 + y2 * y2);
anguloRadianes = acos(escalar / (moduloV1 * moduloV2));
anguloGrados = anguloRadianes * 180 / PI;
Serial.print("El angulo entre los dos vectores es: ");
Serial.println(anguloGrados);
9|Página
Ejercicio 9: Calcular el índice de masa corporal (IMC)
Escribe un programa que calcule el índice de masa corporal (IMC) de una
persona dado su peso en kilogramos y su altura en metros. El programa
debe clasificar el IMC en categorías como "Bajo peso", "Normal",
"Sobrepeso" y "Obesidad" según los valores estándar.
Entrada:
Peso en kilogramos
Altura en metros
Salida:
Valor del IMC y su clasificación.
float peso, altura, imc;
void setup() {
Serial.begin(9600);
void loop() {
Serial.println("\nCALCULO IMC");
Serial.println("Ingrese peso en kilogramos:");
while (!Serial.available()) {}
peso = Serial.parseFloat();
Serial.println(peso);
Serial.println("Ingrese altura en metros:");
while (!Serial.available()) {}
altura = Serial.parseFloat();
Serial.println(altura);
imc = peso / (altura * altura);
Serial.print("El IMC es: ");
Serial.println(imc);
if (imc < 18.5) {
Serial.println("Bajo peso");
} else if (imc >= 18.5 && imc <= 24.9) {
Serial.println("Normal");
} else if (imc >= 25 && imc < 29.9) {
Serial.println("Sobrepeso");
} else {
Serial.println("Obesidad");
}
10 | P á g i n a
}
Ejercicio 10: Verificar si un punto está dentro de un círculo
Escribe un programa que determine si un punto dado en el plano (x, y) está
dentro de un círculo de radio r centrado en el origen (0, 0). El programa debe
calcular la distancia del punto al origen y compararla con el radio.
Entrada:
Coordenadas (x, y) del punto
Radio r del círculo
Salida:
Mensaje indicando si el punto está dentro o fuera del círculo.
float x, y, r, distancia;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("\nPUNTO EN UN CIRCULO");
Serial.println("Ingrese las coordenadas x y y del punto:");
while (!Serial.available()) {}
x = Serial.parseFloat();
Serial.println(x);
while (!Serial.available()) {}
y = Serial.parseFloat();
Serial.println(y);
Serial.println("Ingrese el radio del círculo:");
while (!Serial.available()) {}
r = Serial.parseFloat();
Serial.println(r);
distancia = sqrt(x*x + y*y);
if (distancia <= r) {
Serial.println("El punto esta en el circulo.");
} else {
Serial.println("El punto esta fuera del circulo.");
}
Recursos de Goilav, N., y Loi, G. (2016). Estructuras de control. En Arduino. Aprender a
aprendizaje
11 | P á g i n a
obligatorios desarrollar para crear objetos inteligentes. Ediciones ENI.
https://www.eni-training.com/portal/client/mediabook/home
Temporal L. (2023). Arduino. Estructura de código y sintaxis. Recuperado el
20 de diciembre de 2023, de https://www.electrodaddy.com/arduino-
estructura-de-codigo-y-sintaxis/
Goilav, N., y Loi, G. (2016). Funciones. En Arduino. Aprender a desarrollar
para crear objetos inteligentes. Ediciones ENI. https://www.eni-
training.com/portal/client/mediabook/home
Bañuelos, M., Villegas, R., Pacheco, M. (2022) Arreglos unidimensionales.
En Prácticas con Arduino y DASA. Recuperado el 20 de diciembre de
2023, de https://iaciduino.enp.unam.mx/wpArduino/index.php/manual-
de-programacion-con-arduino/arreglos-unidimensionales/
Formato de Utilice Tinkercad para la implementación de los programas.
presentació
Debe entregar el trabajo en un solo archivo de Word. Los
n
programas en texto (NO en captura de imagen).
El envío de la actividad se realizará por el aula virtual, unidad 1,
apartado Producto académico 1.
Respete las indicaciones planteadas para esta actividad, a
fin de que su evaluación pueda realizarse sin inconveniente.
12 | P á g i n a