jueves, 5 de febrero de 2026

EJERCICIOS BASICOS ESTRUCTURAS DE CONTROL

TAREA EN CLASE - LEA LAS SIGUIENTES INSTRUCCIONES ANTES DE INICIAR

Desarrolla los siguientes ejercicios en la plataforma de codificación que se indica a continuación siguiendo las instrucciones con las que se te evalaura:

1. Guardar en su USB de manera individual cada ejercicio (archivos independientes con la extension .py)

2. Analizar como funciona cada ejericio, puede pedirle explicaciones a la AI acerca de como funciona el ejercicio que esté tranbajando, de eso se le preguntara durante la clase.

3. Ejecutar cada ejercicio, y atender las explicaciones ofrecidas por el profesor de como funciona cada ejercicio.

COPIAR ESTE LINK EN SU CUADERNO Y ABRA UNA VENTANA CON EL EN EL NAVEGADOR O HACER CLIC SOBRE EL.

https://www.programiz.com/python-programming/online-compiler/


DESARROLLE LOS SIGUIENTES EJERCICIOS SEGUN LAS ANTERIORES INDICACIONES EN LA PLATAFORMA DEL ANTERIOR LINK

1. Condicionales (ifelifelse)

Ejercicio A: El Sistema de Calificaciones Americano

Planteamiento: Crea un programa que pida una nota numérica (0-100) y devuelva la letra correspondiente:

  • 90 o más: A

  • 80-89: B

  • 70-79: C

  • Menos de 70: F (Reprobado)

Lógica a aplicar: Uso de elif para evaluar rangos de números de forma ordenada y manejo de errores básicos (notas mayores a 100 o menores a 0).

Solución documentada:

# Entrada de datos: convertimos a entero
nota = int(input("Introduce la nota del examen (0-100): "))

# Lógica de decisión
if nota < 0 or nota > 100:
    print("Error: La nota debe estar entre 0 y 100.")
elif nota >= 90:
    print("Tu calificación es: A")
elif nota >= 80:
    print("Tu calificación es: B")
elif nota >= 70:
    print("Tu calificación es: C")
else:
    print("Tu calificación es: F (Reprobado)")

Ejercicio B: Calculadora de Descuentos Múltiples

Planteamiento: Una tienda ofrece descuentos según el monto de la compra:

  • Si compras más de $1000, tienes un 20% de descuento.

  • Si compras entre $500 y $1000, tienes un 10%.

  • Si compras menos de $500, no hay descuento.

Lógica a aplicar: Calcular porcentajes matemáticamente dentro de la estructura condicional.

Solución documentada:

monto = float(input("¿Cuál es el total de tu compra?: "))

if monto > 1000:
    descuento = monto * 0.20
    print(f"¡Descuento del 20%! Pagas: ${monto - descuento}")
elif monto >= 500:
    descuento = monto * 0.10
    print(f"¡Descuento del 10%! Pagas: ${monto - descuento}")
else:
    print(f"No hay descuento. Pagas: ${monto}")

2. Bucle for (Repetición controlada)

Ejercicio A: La Tabla de Multiplicar Personalizada

Planteamiento: Pide al usuario un número y muestra su tabla de multiplicar del 1 al 10, pero con un formato elegante.

Lógica a aplicar: Usar la variable del bucle i para realizar la operación matemática en cada vuelta.

Solución documentada:

Python
numero = int(input("¿De qué número quieres la tabla?: "))

print(f"--- Tabla del {numero} ---")
# El range va de 1 a 11 para incluir el 10
for i in range(1, 11):
    resultado = numero * i
    print(f"{numero} x {i} = {resultado}")

Ejercicio B: Sumatoria de Números Pares

Planteamiento: Sumar todos los números pares que existen entre el 1 y un número límite que el usuario decida.

Lógica a aplicar: Usar el tercer parámetro de range(inicio, fin, salto) para ir de 2 en 2 o usar un if con el operador residuo %.

Solución documentada:

Python
limite = int(input("Sumar pares hasta el número: "))
suma = 0 # Variable acumuladora

# Empezamos en 2, hasta limite + 1, saltando de 2 en 2
for i in range(2, limite + 1, 2):
    suma = suma + i

print(f"La suma de todos los pares hasta {limite} es: {suma}")

3. Bucle while (Repetición por condición)

Ejercicio A: El Cajero Automático (Retiro Seguro)

Planteamiento: Tienes un saldo inicial de $500. El programa debe pedir cuánto quieres retirar. Si intentas retirar más de lo que tienes, debe decir "Saldo insuficiente" y volver a preguntar hasta que retires una cantidad válida o decidas salir.

Lógica a aplicar: El bucle se repite mientras el intento de retiro sea mayor al saldo.

Solución documentada:

Python
saldo = 500
retiro = 0

print(f"Tu saldo actual es de ${saldo}")

# Mientras el retiro sea mayor al saldo o menor/igual a 0
while retiro <= 0 or retiro > saldo:
    retiro = float(input("¿Cuánto deseas retirar?: "))
    
    if retiro > saldo:
        print("Saldo insuficiente. Intenta una cantidad menor.")
    elif retiro <= 0:
        print("Cantidad inválida.")

nuevo_saldo = saldo - retiro
print(f"Retiro exitoso. Tu nuevo saldo es: ${nuevo_saldo}")

Ejercicio B: Contador de Intentos (Validar Contraseña)

Planteamiento: Crea un sistema donde la contraseña es "python123". El usuario tiene máximo 3 intentos. Si falla los 3, el programa se bloquea.

Lógica a aplicar: Usar un contador que aumente en cada fallo y una condición doble en el while.

Solución documentada:

clave_real = "python123"
intento = ""
contador = 0

# El bucle sigue mientras la clave sea mal y no pase de 3 intentos
while intento != clave_real and contador < 3:
    intento = input("Escribe la contraseña: ")
    contador = contador + 1
    
    if intento != clave_real:
        print(f"Error. Te quedan {3 - contador} intentos.")

if intento == clave_real:
    print("¡Acceso concedido!")
else:
    print("Sistema bloqueado por seguridad.")

💡 Tips :

  1. La "Cajita": En el for, explícales que la variable i (o numero) es como una cajita que cambia de valor en cada vuelta.

  2. El Acumulador: En el ejercicio de suma, enséñales que suma = suma + i es como ir metiendo monedas en una alcancía.

  3. El Freno: En el while, siempre revisen que la condición en algún momento se vuelva falsa para evitar el bucle infinito.

martes, 3 de febrero de 2026

PUENTE H L298 CARRO ROBOTICO

 Puente H L298N

 Para construir tu carro evasor de obstáculos, el Puente H L298N es la pieza clave que actuará como "músculo", permitiendo que el Arduino (el "cerebro") controle la potencia y dirección de los motores reductores amarillos.


Para entender cómo se moverá tu robot, es fundamental comprender la física y la electrónica detrás de estos componentes. Aquí te lo explico de forma clara y detallada:


1. ¿Qué es un Puente H?

Un Puente H es un circuito electrónico que permite a un motor eléctrico girar en ambos sentidos (hacia adelante y hacia atrás) y controlar su frenado.

¿Por qué se llama así?
Su nombre proviene de la forma gráfica del circuito original, que parece una letra "H". En las "patas" de la H hay 4 interruptores (transistores), y el motor está en la barra horizontal del centro.

  • Cómo funciona:

    • Si cierras dos interruptores en diagonal (superior izquierda e inferior derecha), la corriente fluye en un sentido y el motor gira a la derecha.

    • Si cierras los otros dos en diagonal, la corriente fluye al revés y el motor gira a la izquierda.

    • ¡Peligro! Si cierras los dos interruptores de un mismo lado, causas un cortocircuito. El L298N ya está diseñado para evitar que esto pase por error.

El Módulo L298N

El L298N es un Doble Puente H. Esto significa que dentro de ese chip negro con un disipador de calor grande, hay dos puentes H independientes. Por eso puedes controlar dos motores (Rueda Derecha y Rueda Izquierda) con una sola placa.

  • El Disipador: Ese trozo de metal negro es vital porque el L298N pierde mucha energía en forma de calor.

El módulo L298N puede controlar hasta 2 motores de forma independiente.

Terminales de Potencia (Borneras azules grandes):

  • +12V: Aquí va el positivo de tu batería (puedes usar de 7V a 12V).

  • GND: El negativo de la batería Y TAMBIÉN debe conectarse al GND del Arduino (Masa común).

  • +5V: Si el jumper de "12V enable" está puesto, este pin entrega 5V de salida que puedes usar para alimentar el Arduino.

Pines de Control (Pines macho hacia el Arduino):

  • ENA y ENB: Controlan la velocidad (usando señales PWM). Tienen un jumper puesto por defecto; si quieres controlar velocidad, quita el jumper y conecta a pines PWM del Arduino.

  • IN1 e IN2: Controlan el Motor A. (IN1 HIGH / IN2 LOW = Adelante).

  • IN3 e IN4: Controlan el Motor B. (IN3 HIGH / IN4 LOW = Adelante).


2. Los Motores Reductores Amarillos (Motores DC "TT")

Estos motores son ideales porque incluyen una caja de engranajes que reduce la velocidad y aumenta el torque (fuerza).


3. Diagrama de Conexión Sugerido

Para un robot de dos ruedas:

L298NArduinoFunción
ENAPin 10Velocidad Motor Izquierdo
IN1Pin 9Dirección 1 Motor Izq
IN2Pin 8Dirección 2 Motor Izq
IN3Pin 7Dirección 1 Motor Der
IN4Pin 6Dirección 2 Motor Der
ENBPin 5Velocidad Motor Derecho
GNDGND¡Obligatorio unir ambos GND!

4. Código Base (Movimiento Modular)

Este código te servirá para probar los motores. Puedes integrarlo fácilmente con tu código del sensor ultrasónico.

Código





// Pines Motor Izquierdo int ENA = 10; int IN1 = 9; int IN2 = 8; // Pines Motor Derecho int IN3 = 7; int IN4 = 6; int ENB = 5; void setup() { pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENB, OUTPUT); } void moverAdelante() { // Motor Izquierdo digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, 200); // Velocidad 0-255 // Motor Derecho digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENB, 200); } void detener() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); } void girarDerecha() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); // Invierte un motor para girar sobre su eje delay(500); // Tiempo de giro } void loop() { // Aquí integrarás la lógica del sensor: // Si distancia < 20 cm -> detener, girar, luego seguir. moverAdelante(); }

Consejos de "Experto":

  1. Alimentación separada: Usa un portapilas de 4 pilas AA (6V) o una batería Li-ion de 7.4V para los motores. El Arduino puede alimentarse desde el pin +5V del L298N o con una batería de 9V aparte.

  2. Sentido de giro: Si al probar el código un motor gira al revés, no cambies el código; simplemente invierte los dos cables de ese motor en la bornera del L298N.

  3. Capacitores: Si notas que el Arduino se reinicia cuando arrancan los motores, suelda un pequeño capacitor cerámico de 0.1uF entre los bornes de cada motor para eliminar el ruido eléctrico.


EJERCICIOS BASICOS ESTRUCTURAS DE CONTROL

TAREA EN CLASE  - LEA LAS SIGUIENTES INSTRUCCIONES ANTES DE INICIAR Desarrolla los siguientes ejercicios en la plataforma de codificación qu...