miércoles, 25 de marzo de 2026

LISTAS - TUPLAS - VECTORES - MATRICES

 

LISTAS - TUPLAS - VECTORES - MATRICES


1. Las Listas (list)

Las listas son colecciones de elementos ordenadas y mutables (modificables). Son como una caja donde puedes guardar objetos, quitarlos, cambiarlos o añadir nuevos en cualquier momento. Se definen utilizando corchetes [].

  • Características: Pueden contener diferentes tipos de datos (números, textos, otras listas) y su tamaño puede variar durante la ejecución del programa.

Ejemplo:

frutas = ["manzana", "pera", "plátano"]
frutas.append("naranja")  # Añade un elemento
frutas[0] = "fresa"       # Cambia el primer elemento
print(frutas)             # Resultado: ['fresa', 'pera', 'plátano', 'naranja']

2. Las Tuplas (tuple)

Las tuplas son colecciones ordenadas e inmutables. Una vez que creas una tupla, no puedes cambiar sus elementos, ni añadir ni eliminar nada. Se definen utilizando paréntesis ().

  • Características: Son más rápidas que las listas y se usan para proteger datos que no deben cambiar (como coordenadas geográficas o fechas).

Ejemplo:

punto_gps = (10.5, -45.2)
# punto_gps[0] = 12.0  <-- Esto daría error porque no se pueden cambiar
print(punto_gps[0])    # Resultado: 10.5

3. Vectores y Matrices (Listas anidadas)

En Python "puro" (sin librerías externas), los vectores se representan como listas simples, y las matrices se representan como listas de listas.

  • Vector: Una lista de números (ej. [1, 2, 3]).

  • Matriz: Una estructura de filas y columnas. Para acceder a un dato, necesitas dos índices: el de la fila y el de la columna.

Ejemplo de Matriz (2x2):

matriz = [
    [1, 2],  # Fila 0
    [3, 4]   # Fila 1
]
# Para acceder al número 4:
print(matriz[1][1]) # Fila 1, Columna 1

Ejercicios Sencillos

Aquí tienes un ejercicio básico para cada concepto:

Ejercicio de Listas

Crea una lista llamada colores con tres colores. Luego, cambia el segundo color por "amarillo" e imprime la lista completa.

Ejercicio de Tuplas

Crea una tupla llamada persona que contenga un nombre (string) y una edad (número). Imprime solo la edad accediendo a su posición.

Ejercicio de Matrices (Vectores)

Crea una matriz de 2x2 con los números que quieras. Imprime el primer número de la segunda fila.


Soluciones (para que verifiques):

# Lista
colores = ["rojo", "azul", "verde"]
colores[1] = "amarillo"
print(colores)

# Tupla
persona = ("Juan", 25)
print(persona[1])

# Matriz
m = [[10, 20], [30, 40]]
print(m[1][0])

martes, 24 de marzo de 2026

DIFERENTES TIPOS DE CARROS ROBOTICOS EN ARDUINO

 

DIFERENTES TIPOS DE CARROS 

ROBOTICOS EN ARDUINO


1. Robot Seguidor de Línea (Line Follower)

Es el proyecto base de la robótica móvil. El robot debe seguir un camino marcado (generalmente una línea negra sobre fondo blanco) de forma autónoma.

  • Componentes clave: Sensores infrarrojos (TCRT5000 o arreglos QTR), chasis diferencial, driver de motores (L298N o TB6612FNG).

  • Preguntas para argumentar:

    1. Lógica de Control: ¿Qué ventajas ofrece un algoritmo de Control PID (Proporcional, Integral, Derivativo) frente a una lógica simple de "si/entonces" (encendido/apagado) en las curvas?

    2. Disposición de Sensores: ¿Cómo influye la distancia entre los sensores y el eje de las ruedas en la estabilidad del robot? Argumenta si es mejor tener los sensores muy adelante o cerca del centro.

    3. Contraste: ¿Por qué se utilizan sensores infrarrojos para esta tarea y qué problemas de lectura podrían surgir si la competencia se realiza bajo luz solar directa o focos potentes?

2. Robot Evasor de Obstáculos (Obstacle Avoidance)

Un robot diseñado para navegar en entornos desconocidos detectando y rodeando objetos sin chocar.

  • Componentes clave: Sensor de ultrasonido (HC-SR04), servomotor (para girar el sensor), chasis.

  • Preguntas para argumentar:

    1. Tipo de Sensor: Compara el sensor de ultrasonido con uno de infrarrojos (Sharp). ¿En qué escenarios (materiales del obstáculo, distancias) es superior uno sobre el otro?

    2. Estrategia de Giro: Si el robot detecta un obstáculo de frente, ¿cuál es la lógica más eficiente para decidir si girar a la derecha o a la izquierda? Argumenta tu respuesta basándote en la optimización del tiempo.

    3. Limitaciones: ¿Cómo afecta la velocidad del robot a la precisión del sensor de ultrasonido? Explica qué sucedería si el robot se mueve más rápido de lo que el sonido tarda en rebotar y ser procesado.

3. Robot Sumo (Autónomo o RC)

El objetivo es sacar al oponente de un ring circular (Dohyo). Combina fuerza, detección de bordes y detección del oponente.

  • Componentes clave: Sensores de distancia (infrarrojos de largo alcance), sensores de línea (para no salirse), motores de alto torque, peso adicional.

  • Preguntas para argumentar:

    1. Diseño Mecánico: ¿Por qué la mayoría de los robots Sumo tienen una "pala" o rampa frontal que llega hasta el suelo? Argumenta la importancia del centro de gravedad y la fricción en este diseño.

    2. Estrategia de Ataque: ¿Es mejor que el robot busque al oponente moviéndose en círculos o que se quede quieto esperando a detectar algo? Justifica tu táctica defensiva vs. ofensiva.

    3. Tracción: Argumenta por qué en esta categoría se prefieren llantas de goma blanda o silicona de alto agarre sobre llantas de plástico duro, y cómo influye el peso total del robot en la victoria.

4. Robot Velocista (Speedster)

Es una evolución del seguidor de línea, pero diseñado para recorrer un circuito en el menor tiempo posible.

  • Componentes clave: Motores de altas RPM, micro-motores con piñonería metálica, turbinas de succión (opcionales para mayor agarre), baterías LiPo de alta descarga.

  • Preguntas para argumentar:

    1. Aerodinámica y Peso: ¿De qué manera el peso total del robot afecta la inercia en las curvas a alta velocidad? Argumenta por qué los velocistas suelen ser mucho más pequeños y bajos que otros robots.

    2. Adherencia: En competiciones profesionales se usan "turbinas" para succionar aire debajo del chasis. Explica el principio físico detrás de esto y por qué permite tomar curvas más rápido.

    3. Programación de Curvas: ¿Cómo debería cambiar el comportamiento de los motores al detectar una línea recta larga frente a una curva cerrada? Argumenta el uso de perfiles de velocidad en el código.

5. Robot Soccer (Fútbol Robótico)

Dos o más robots compiten por llevar una pelota al arco contrario.[2] Suele ser controlado por Bluetooth o ser autónomo.

  • Componentes clave: Módulo Bluetooth (HC-05), chasis omnidireccional (opcional), mecanismo de "disparo" o solenoide.

  • Preguntas para argumentar:

    1. Tracción Omnidireccional: ¿Qué ventajas tácticas ofrece un robot con ruedas Mecanum o ruedas omni frente a uno de tracción diferencial para jugar fútbol?

    2. Mecanismo de Disparo: Argumenta cuál es el método más efectivo para golpear la pelota (un brazo giratorio, un pistón, o simplemente la inercia del robot). ¿Cuál ofrece mayor control y cuál mayor potencia?

    3. Comunicación: En una modalidad controlada por smartphone, ¿cómo afecta el "lag" o retraso de la señal Bluetooth al desempeño del jugador? Sugiere una forma de programar el robot para que sea más "suave" en sus movimientos.

jueves, 12 de marzo de 2026

BUCLE WHILE Y LAS LISTAS

 

Las Listas y el Bucle while

1. Las Listas en Python (El Contenedor)

Una lista es una estructura de datos que permite almacenar múltiples elementos en una sola variable. Piensa en ella como una fila de casilleros numerados.

Características principales:

  • Ordenadas: Cada elemento tiene una posición fija llamada índice. En Python (y en casi toda la programación), los índices empiezan en cero (0).

  • Mutables: Puedes modificarlas después de crearlas. Puedes añadir, cambiar o eliminar elementos.

  • Heterogéneas: Pueden contener distintos tipos de datos a la vez (números, textos, booleanos, ¡incluso otras listas!).

Ejemplo de lista:

mi_lista =["Manzana", "Pera", "Uva"] 
# Índices:     0         1       2

Para añadir elementos al final, usamos el método 
Para saber cuántos elementos tiene una lista, usamos la función 

2. El Bucle while (El Motor Condicional)

La palabra while en inglés significa "mientras". Esta estructura ejecuta un bloque de código de forma repetitiva mientras una condición específica sea evaluada como Verdadera (.

Regla de oro del 
A diferencia de un bucle for (que sabe exactamente cuántas veces va a dar vueltas), el while puede repetirse infinitamente si no tenemos cuidado. Por eso, dentro del bloque de código siempre debe ocurrir algo que modifique la condición para que, en algún momento, se vuelva Falsa (False) y el bucle termine.

3. Sinergia: ¿Por qué juntar while y listas?

Aunque en Python solemos usar el bucle for para recorrer listas, el bucle while brilla junto a las listas en dos escenarios muy específicos:

  1. Cuando no sabemos cuántos elementos vamos a recibir: Por ejemplo, si estamos llenando una lista con datos que ingresa un usuario, no sabemos si ingresará 2 datos o 100. El while mantiene el programa "escuchando" hasta que el usuario diga basta.

  2. Cuando queremos destruir o modificar la lista mientras la recorremos: Por ejemplo, ir sacando elementos de la lista uno por uno hasta que quede completamente vacía.


💻 Ejercicios Básicos

Aquí tienes dos ejercicios que demuestran exactamente la teoría anterior de forma sencilla.

Ejercicio 1: Recorrer una lista usando un índice y while

En este ejercicio vamos a crear una lista predefinida y vamos a usar un bucle while para leerla. Para ello, necesitamos un "contador" que actúe como el índice de los casilleros.

# 1. Definimos nuestra lista
frutas = ["Manzana", "Banana", "Naranja", "Pera"]

# 2. Creamos una variable que servirá como índice (empieza en 0)
indice = 0

# 3. El bucle: "Mientras el índice sea menor que la cantidad total de frutas"
# len(frutas) nos devolverá 4. Así que iterará mientras el índice sea 0, 1, 2 y 3.
print("--- Iniciando recorrido ---")
while indice < len(frutas):
    # Imprimimos el elemento que está en la posición actual
    print("Fruta en la posición", indice, "es:", frutas[indice])
    
    # MUY IMPORTANTE: Sumamos 1 al índice para que no sea un bucle infinito
    indice = indice + 1 
    # (También se puede escribir como: indice += 1)

print("--- Fin del recorrido ---")

LISTAS - TUPLAS - VECTORES - MATRICES

  LISTAS - TUPLAS - VECTORES - MATRICES 1. Las Listas ( list ) Las listas son colecciones de elementos  ordenadas  y  mutables  (modificable...