miércoles, 29 de abril de 2026

INICIANDO CON ARDUINO UNO R3

 INICIANDO CON ARDUINO UNO R3

1. Conceptos básicos que deben aprender primero

Antes de programar el carro, deben entender estas ideas:

Entradas

Son los sensores que “leen” el entorno.

Ejemplo:

  • Sensor ultrasónico → mide distancia.
  • Sensor infrarrojo → detecta obstáculos.

digitalRead(pin);
analogRead(pin);


Salidas

Son los dispositivos que “actúan”.

Ejemplo:

  • Motores
  • Luces LED
  • Zumbador

digitalWrite(pin, HIGH);
digitalWrite(pin, LOW);
analogWrite(pin, velocidad);


Variables

Guardan datos.

int distancia = 0;


Condicionales

Permiten decidir.

if (distancia < 20) {
   detener();
}


Funciones

Sirven para organizar acciones.

void avanzar() {
   // código
}


2. Estructura básica de Arduino

Todo programa Arduino tiene dos partes:

void setup() {
   // Se ejecuta una sola vez
}

void loop() {
   // Se repite continuamente
}

Explicación sencilla para niños:

  • setup() = preparación inicial.
  • loop() = acciones repetidas del robot.

3. Primeros comandos esenciales


pinMode()

Define si un pin será entrada o salida.

pinMode(8, OUTPUT);
pinMode(7, INPUT);

Ejemplo:

  • Motor = salida
  • Sensor = entrada

digitalWrite()

Enciende o apaga un pin.

digitalWrite(8, HIGH); // encender
digitalWrite(8, LOW);  // apagar


analogWrite()

Controla velocidad en motores.

analogWrite(5, 150);

Valores:

  • 0 = apagado
  • 255 = máxima velocidad

delay()

Espera un tiempo.

delay(1000);

1000 = 1 segundo.

 


4. Funciones básicas del carro robot

Estas funciones son ideales para enseñar.


Avanzar

void avanzar() {
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
}


Detener

void detener() {
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
}


Girar

void girarDerecha() {
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
}


5. Primer programa simple del carro evasor

Este ejemplo enseña:

  • leer distancia
  • avanzar
  • detener
  • girar

int distancia = 0;

void setup() {
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
}

void loop() {

  distancia = 15; // ejemplo fijo

  if (distancia > 20) {
    avanzar();
  } else {
    detener();
    delay(500);
    girarDerecha();
    delay(500);
  }
}

void avanzar() {
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
}

void detener() {
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
}

void girarDerecha() {
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
}

 


martes, 21 de abril de 2026

REGLAS BASICAS EN COMPETENCIAS DE CARROS ROBOTICOS

 REGLAS BASICAS EN COMPETENCIAS DE CARROS ROBOTICOS

TRANSCRIBA EN SU CUADERNO

1. Mini Sumo (o Sumo)

El objetivo es sacar al oponente de un ring circular llamado Dohyo.

  • Dimensiones y Peso: El robot debe medir máximo 10x10 cm (en categoría Mini Sumo) y pesar no más de 500g. Una vez iniciada la ronda, el robot puede desplegarse y expandir sus dimensiones.

  • Tiempo de Inicio (Regla de los 5 segundos): Tras pulsar el botón de inicio, el robot debe permanecer totalmente inmóvil durante 5 segundos antes de comenzar a moverse. Esto es por seguridad y para dar tiempo a los jueces de retirarse.

  • Prohibición de Daño Directo: No se permite el uso de armas que arrojen proyectiles, pegamentos para fijarse al suelo, ni dispositivos que busquen destruir o quemar la electrónica del rival.

2. Carrera con Obstáculos

El robot debe completar un circuito sorteando elementos físicos en el menor tiempo posible.

  • Autonomía Total: El robot debe ser capaz de detectar y esquivar obstáculos (túneles, rampas, bloques) sin intervención humana. Si el operador toca el robot, suele haber una penalización de tiempo.

  • Límites de Salida: Si el robot se sale completamente de la pista delimitada al intentar esquivar un obstáculo, debe regresar al último punto de control (checkpoint) superado.

  • Dimensiones Máximas: El robot debe cumplir con medidas específicas (ej. 20x20 cm) para asegurar que físicamente puede pasar por los puentes o túneles diseñados en el circuito.

3. Seguidor de Línea (Clásico)

Consiste en seguir una línea negra sobre un fondo blanco (o viceversa) en un circuito con curvas.

  • Pérdida de Trayectoria: Si el robot pierde la línea por completo y no es capaz de recuperarla en un corto tramo o tiempo (generalmente 3-5 segundos), queda descalificado o debe reiniciar desde el principio.

  • No succión: En la categoría estándar, está prohibido el uso de turbinas o ventiladores de succión para aumentar el agarre (esto es exclusivo de la categoría "Velocistas").

  • Inicio por Sensor o Botón: El robot debe activarse mediante un botón de inicio o un sensor de luz. No puede ser empujado para darle velocidad inicial.

4. Velocistas (Pro)

Es una evolución del seguidor de línea, pero en pistas con curvas suaves diseñadas para altas velocidades.

  • Uso de Turbinas: A diferencia del seguidor clásico, aquí se permite (y es casi obligatorio) el uso de motores con turbinas de succión para generar "efecto suelo" y evitar que el robot salga disparado en las curvas.

  • Cronometraje Electrónico: Los robots deben tener una estructura que permita el corte de un haz de luz infrarroja en la meta para registrar tiempos de forma precisa (sensores de telemetría).

  • Ancho de la Pista: El robot no puede exceder el ancho de la pista (usualmente 25-30 cm) para evitar que sus componentes dañen los laterales o los sensores de cronometraje de la organización.

5. Soccer (Fútbol Robótico)

Dos equipos de robots compiten por meter una pelota en la portería contraria.

  • Captura de la Pelota: Un robot no puede "rodear" o "encerrar" la pelota de tal manera que sea invisible o inalcanzable para otros. Solo puede tener contacto con una fracción de la circunferencia del balón (regla del 20%).

  • Sensores de la Pelota: La pelota suele emitir luz infrarroja. Los robots deben ser autónomos y usar sensores IR para localizarla; no está permitido el control remoto (a menos que sea una categoría específica de teleoperados).

  • Zonas de Portería: Generalmente, se prohíbe que el robot "portero" permanezca inmóvil bloqueando toda la portería; debe haber una dinámica de juego que permita el paso del balón.


Nota adicional: En todas las categorías, una regla universal es que el robot debe llevar una placa de desarrollo (como Arduino) y una fuente de alimentación propia (baterías LiPo suelen ser las más comunes).

lunes, 13 de abril de 2026

EJERCICOS RESUELTOS DE LISTAS TUPLAS Y MATRICES

1. LISTAS – Promedio de materias

Objetivo:

Calcular el promedio de una lista de notas y determinar si el estudiante aprueba o reprueba.

Código:

notas = [3.5, 4.0, 2.8, 3.2, 4.5]

# Calcular promedio
promedio = sum(notas) / len(notas)

print("Promedio:", promedio)

# Verificar si aprueba
if promedio >= 3.5:
print("El estudiante aprueba")
else:
print("El estudiante reprueba")

Explicación:

  • Se crea una lista llamada notas con cinco calificaciones.
  • La función sum(notas) suma todas las notas.
  • La función len(notas) cuenta cuántas notas hay.
  • El promedio se obtiene dividiendo la suma entre la cantidad de notas.
  • Luego se usa una condición para verificar si el promedio es mayor o igual a 3.5.

Resultado esperado:

Promedio: 3.6
El estudiante aprueba

2. TUPLAS Y LISTAS – Registro de estudiantes

Objetivo:

Guardar estudiantes y sus notas usando tuplas dentro de una lista, y determinar quién aprueba o reprueba.

Código:

estudiantes = [
("Ana", 3.5),
("Luis", 2.8),
("Carlos", 4.2)
]

for estudiante in estudiantes:
nombre = estudiante[0]
nota = estudiante[1]

print("Estudiante:", nombre)

if nota >= 3.5:
print("Aprueba")
else:
print("Reprueba")

print()

Explicación:

  • Se crea una lista llamada estudiantes.
  • Cada estudiante se guarda como una tupla con:
    • el nombre
    • la nota
  • Con un ciclo for, se recorre cada estudiante.
  • estudiante[0] obtiene el nombre.
  • estudiante[1] obtiene la nota.
  • Se evalúa si la nota es mayor o igual a 3.5.

Resultado esperado:

Estudiante: Ana
Aprueba

Estudiante: Luis
Reprueba

Estudiante: Carlos
Aprueba

3. MATRICES – Promedio por estudiante

Objetivo:

Calcular el promedio de varios estudiantes usando una matriz, donde cada fila representa las notas de un estudiante.

Código:

notas = [
[3.0, 4.0, 3.5],
[2.5, 3.0, 2.8],
[4.5, 4.0, 4.8]
]

# Recorrer cada estudiante
for i in range(len(notas)):
suma = sum(notas[i])
promedio = suma / len(notas[i])

print("Estudiante", i + 1)
print("Promedio:", promedio)

if promedio >= 3.0:
print("Aprueba")
else:
print("Reprueba")

print()

Explicación:

  • Se crea una matriz, donde cada fila contiene las notas de un estudiante.
  • notas[i] representa las notas del estudiante actual.
  • Se calcula la suma y el promedio de cada fila.
  • Luego se verifica si el promedio es mayor o igual a 3.0.
  • i + 1 se usa para mostrar el número del estudiante comenzando desde 1.

Resultado esperado:

Estudiante 1
Promedio: 3.5
Aprueba

Estudiante 2
Promedio: 2.7666666666666666
Reprueba

Estudiante 3
Promedio: 4.433333333333334
Aprueba

Conclusión

Estos ejercicios permiten comprender cómo usar:

  • Listas para almacenar conjuntos de datos.
  • Tuplas para guardar información fija como nombre y nota.
  • Matrices para manejar múltiples registros de notas.

Además, se refuerzan conceptos como:

  • sum()
  • len()
  • ciclos for
  • estructuras condicionales if

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])

INICIANDO CON ARDUINO UNO R3

 INICIANDO CON ARDUINO UNO R3 1. Conceptos básicos que deben aprender primero Antes de programar el carro, deben entender estas ideas: E...