Programación de placas controladoras
Estás en un parqueadero de un centro comercial en Medellín: la barrera sube cuando llegas, baja cuando pasas y nunca se queda arriba por error. Nadie la vigila, pero una placa controladora sigue paso a paso un programa. ¿Cómo se escribe un programa así para que funcione siempre y no solo «de casualidad»? Al final de la página volveremos a esta barrera.
Algoritmo y programa
Un algoritmo se puede escribir de varias formas. El pseudocódigo lo describe con palabras en español usando Inicio/Fin, Leer, Escribir, Si… entonces… si no, Mientras. Los bloques gráficos (como en Scratch, mBlock o MakeCode) encajan piezas visuales. Los diagramas de flujo usan símbolos y flechas. La lógica es la misma; solo cambia la notación.
Explica qué es un algoritmo y qué es un programa, y qué diferencia hay entre describirlo en pseudocódigo (con palabras) y con bloques gráficos.
Explica qué es un algoritmo y qué es un programa, y qué diferencia hay entre describirlo en pseudocódigo (con palabras) y con bloques gráficos.
Las instrucciones del programa de un semáforo están desordenadas: (a) esperar 2 segundos, (b) encender la luz roja y apagar las demás, (c) encender la luz verde y apagar…
Las instrucciones del programa de un semáforo están desordenadas: (a) esperar 2 segundos, (b) encender la luz roja y apagar las demás, (c) encender la luz verde y apagar las demás, (d) volver al principio, (e) esperar 8 segundos (aparece dos veces en el ciclo), (f) encender la luz amarilla y apagar las demás. Ordénalas correctamente y describe qué hace el programa completo.
Escribe en pseudocódigo el programa completo de un semáforo sencillo: verde durante 8 segundos, amarillo durante 2, rojo durante 8, y vuelta a empezar. Indica en cada…
Escribe en pseudocódigo el programa completo de un semáforo sencillo: verde durante 8 segundos, amarillo durante 2, rojo durante 8, y vuelta a empezar. Indica en cada paso qué luces están encendidas y cuáles apagadas.
Entradas y condicionales
Una placa lee entradas (la información que llega de sensores y pulsadores) y escribe salidas (LED, motores, alarmas). Una entrada digital da solo 0 o 1 (pulsador suelto o pulsado). Una entrada analógica da un número dentro de un rango, por ejemplo la luz de un sensor entre 0 y 1023.
Ejemplos de condiciones: «puerta abierta» para la alarma de una vivienda, o «temperatura > 40 °C» para un aviso de calor.
Explica qué significa «leer una entrada» en un programa de control y qué diferencia hay entre leer un pulsador (que da 0 o 1) y leer un sensor de luz (que da un número…
Explica qué significa «leer una entrada» en un programa de control y qué diferencia hay entre leer un pulsador (que da 0 o 1) y leer un sensor de luz (que da un número dentro de un rango).
Explica qué es una instrucción condicional («si... entonces... si no...») y escribe la condición que necesitan estos dos avisos: una alarma que suena cuando se abre una…
Explica qué es una instrucción condicional («si... entonces... si no...») y escribe la condición que necesitan estos dos avisos: una alarma que suena cuando se abre una puerta y un aviso que pita cuando la temperatura pasa de $40\ ^\circ\text{C}$.
La barrera de un parqueadero solo debe subir cuando hay un carro esperando (sensor) y además el conductor ha tomado el tiquete (pulsador); baja cuando el carro ha pasado…
La barrera de un parqueadero solo debe subir cuando hay un carro esperando (sensor) y además el conductor ha tomado el tiquete (pulsador); baja cuando el carro ha pasado (un segundo sensor). Escribe el pseudocódigo completo del ciclo, combinando las dos condiciones a la vez.
Un programa de ventilador dice: «si la temperatura es mayor que $26\ ^\circ\text{C}$, apagar el ventilador; si es menor que $26\ ^\circ\text{C}$, encenderlo». Describe…
Un programa de ventilador dice: «si la temperatura es mayor que $26\ ^\circ\text{C}$, apagar el ventilador; si es menor que $26\ ^\circ\text{C}$, encenderlo». Describe el comportamiento real del ventilador y escribe el programa corregido.
Ciclos y pausas
La mayoría de los programas de una placa nunca terminan: llevan un ciclo principal («repetir siempre») que repite la secuencia leer → decidir → actuar mientras la placa tenga energía. Sin ese ciclo, un semáforo haría su secuencia una sola vez y se quedaría quieto en el último color.
La instrucción esperar (en Arduino, delay) detiene el programa un tiempo. Es necesaria porque, sin ella, las acciones pasarían tan rápido que no se notarían: un semáforo cambiaría de color miles de veces por segundo, y una luz de escalera se apagaría al instante.
Un programa tiene solo estas líneas: «repetir siempre: leer el pulsador; si está pulsado, encender el LED; si no, apagar el LED». Describe con tus palabras qué hace el…
Un programa tiene solo estas líneas: «repetir siempre: leer el pulsador; si está pulsado, encender el LED; si no, apagar el LED». Describe con tus palabras qué hace el montaje y razona qué ocurriría si se borrara la parte «si no, apagar el LED».
¿Para qué sirve la instrucción «esperar» (una pausa) en un programa de control? Pon dos ejemplos en los que, sin esa pausa, el sistema no haría su función.
¿Para qué sirve la instrucción «esperar» (una pausa) en un programa de control? Pon dos ejemplos en los que, sin esa pausa, el sistema no haría su función.
Explica por qué casi todos los programas de las placas controladoras llevan un bucle («repetir siempre») y describe qué haría un semáforo cuyo programa no tuviera bucle.
Explica por qué casi todos los programas de las placas controladoras llevan un bucle («repetir siempre») y describe qué haría un semáforo cuyo programa no tuviera bucle.
Una luz de escalera funciona así: al pulsar el botón se enciende; pasados 30 segundos se apaga sola; y el ciclo puede repetirse. Dibuja o describe su diagrama de flujo y…
Una luz de escalera funciona así: al pulsar el botón se enciende; pasados 30 segundos se apaga sola; y el ciclo puede repetirse. Dibuja o describe su diagrama de flujo y escribe después el pseudocódigo correspondiente.
Puedes hacerlo en papel y enviar una foto con tu respuesta.
Una alarma de vivienda, al detectar la puerta abierta, espera 10 segundos antes de sonar para dar tiempo a desactivarla con un código. Escribe su pseudocódigo incluyendo…
Una alarma de vivienda, al detectar la puerta abierta, espera 10 segundos antes de sonar para dar tiempo a desactivarla con un código. Escribe su pseudocódigo incluyendo la comprobación del código y explica para qué sirve ese retardo.
Un programa cuenta carros: «repetir siempre: esperar a que el sensor pase de 0 a 1; sumar 1 a la variable carros». Explica qué hace, para qué puede servir y qué problema…
Un programa cuenta carros: «repetir siempre: esperar a que el sensor pase de 0 a 1; sumar 1 a la variable carros». Explica qué hace, para qué puede servir y qué problema aparece si un carro se para justo encima del sensor.
En un semáforo con botón para peatones, el programa solo lee el botón una vez en cada ciclo de 30 segundos. Explica qué nota el peatón al pulsar y razona por qué las…
En un semáforo con botón para peatones, el programa solo lee el botón una vez en cada ciclo de 30 segundos. Explica qué nota el peatón al pulsar y razona por qué las pausas largas dentro del programa afectan la rapidez de respuesta del sistema.
Diagramas de flujo
El diagrama de flujo de la figura gobierna la barrera de entrada de un parqueadero, pero falta la pregunta del rombo. Escribe la condición que debería comprobarse ahí y…
El diagrama de flujo de la figura gobierna la barrera de entrada de un parqueadero, pero falta la pregunta del rombo. Escribe la condición que debería comprobarse ahí y describe el comportamiento completo de la barrera.
El diagrama de flujo de la figura es el programa de un robot siguelíneas con un único sensor que va sobre el borde de la línea, pero falta la condición del rombo.…
El diagrama de flujo de la figura es el programa de un robot siguelíneas con un único sensor que va sobre el borde de la línea, pero falta la condición del rombo. Complétala, describe qué hace el robot en cada caso y razona qué ocurrirá cuando la línea se acabe.
El diagrama de flujo de la figura controla la barrera de salida de un parqueadero, con un sensor ubicado debajo de la barrera, pero falta una de las condiciones.…
El diagrama de flujo de la figura controla la barrera de salida de un parqueadero, con un sensor ubicado debajo de la barrera, pero falta una de las condiciones. Complétala, describe el comportamiento completo y explica qué accidente evita esa segunda comprobación.
Depuración
Hay dos tipos de error: de sintaxis (el programa ni siquiera se ejecuta, por ejemplo falta un paréntesis) y de lógica (corre, pero hace algo distinto a lo que querías). Los de lógica son los más difíciles de encontrar.
Un equipo de robótica prueba un rastreador siguelíneas con dos sensores de infrarrojos (I y D) separados 2,0 cm, diseñados para seguir una línea negra de 1,5 cm sobre…
Un equipo de robótica prueba un rastreador siguelíneas con dos sensores de infrarrojos (I y D) separados 2,0 cm, diseñados para seguir una línea negra de 1,5 cm sobre fondo blanco. El programa actual aplica la lógica clásica: avanzar recto si ambos ven blanco, girar a la derecha si D pisa negro y a la izquierda si I pisa negro.
- a) Predice qué sucederá en una curva muy cerrada a 90° si el robot entra rápido y los dos sensores quedan a la vez sobre el fondo blanco fuera de la línea. Justifica por qué el algoritmo básico falla.
- b) Diseña en pseudocódigo una mejora que use una variable de memoria (
ultimo_visto) para que el robot sepa hacia qué lado girar cuando pierde la línea por completo. - c) Si la pista tuviera una línea negra ancha de 3,5 cm (más ancha que la distancia entre sensores), predice el comportamiento del robot en una recta y explica qué condición adicional deberías programar para gestionar cuando ambos sensores detecten negro al mismo tiempo.
Un instalador programa la central de alarma de una vivienda con un sensor magnético en la puerta, otro en la ventana y un interruptor de armado mediante este algoritmo:…
Un instalador programa la central de alarma de una vivienda con un sensor magnético en la puerta, otro en la ventana y un interruptor de armado mediante este algoritmo:
repetir siempre:
si (armada == VERDADERO) y (puerta == ABIERTA o ventana == ABIERTA) entonces:
activar_sirena()
esperar(60) // segundos
desactivar_sirena()
- a) Analiza el código y razona dos fallos críticos de seguridad: ¿qué ocurre si un intruso abre la ventana, entra y la vuelve a cerrar en 3,0 s? ¿Y qué sucede si transcurren los 60 s y el intruso sigue dentro con la ventana abierta?
- b) Diseña en pseudocódigo un algoritmo robusto con variables de estado que garantice: 1) una vez disparada, la sirena sonará al menos 60 s aunque se vuelva a cerrar el acceso; 2) no se apagará mientras persista la apertura de los sensores; y 3) si el usuario apaga el interruptor de armado, la sirena se detendrá de inmediato en cualquier instante.
El sistema de control de una barrera automática de peaje dispone de un sensor de presencia 1 (justo antes de la barrera) y un sensor 2 (justo después). Un operario…
El sistema de control de una barrera automática de peaje dispone de un sensor de presencia 1 (justo antes de la barrera) y un sensor 2 (justo después). Un operario propone este código:
repetir siempre:
si (sensor_1 == DETECTADO) entonces:
subir_barrera()
si (sensor_1 == DESPEJADO) entonces:
bajar_barrera()
- a) Predice qué accidente ocurrirá físicamente en cuanto el frontal del carro rebase el sensor 1 si la parte trasera aún se encuentra bajo la barrera. Justifica por qué la propuesta del operario de «añadir una pausa de 5,0 s antes de bajar» no resuelve el problema con tráfico lento o vehículos articulados.
- b) Diseña en pseudocódigo un algoritmo seguro que utilice ambos sensores para garantizar que la barrera sube al llegar el vehículo, se mantiene arriba mientras cualquiera de los dos sensores detecte presencia, y solo baja cuando el vehículo ha liberado totalmente el sensor 2.
Ampliación: pausas largas y máquinas de estados
Una espera bloqueante detiene todo el programa. Un temporizador no bloqueante guarda el instante de inicio y, en cada vuelta del ciclo, comprueba si ya pasó el tiempo, sin dejar de leer las entradas.
Una máquina de estados modela el sistema como un conjunto de estados (por ejemplo «verde carros», «amarillo», «rojo») con condiciones para pasar de uno a otro. Una variable estado recuerda en cuál estamos.
Con esta estructura, un semáforo con botón peatonal se queda en «verde carros» y cambia solo cuando el pulsador se activa; añadir una función nueva (como un parpadeo final) es insertar un estado, sin recalcular todos los tiempos. En casos de seguridad conviene preferir sensores físicos (finales de carrera, sensores de presencia) a controlar solo por tiempo: un tiempo no sabe si el puente se atascó o si el carro sigue debajo de la barrera. Y cuando una lectura analógica oscila alrededor de un umbral (la humedad en 30 %), se usan dos umbrales distintos para encender y apagar, de modo que la bomba no se prenda y apague sin parar.
Un estudiante programa el encendido de la luz de una escalera comunitaria: al pulsar el interruptor, la luz debe permanecer encendida 30 s y luego apagarse. a) Si el…
Un estudiante programa el encendido de la luz de una escalera comunitaria: al pulsar el interruptor, la luz debe permanecer encendida 30 s y luego apagarse.
- a) Si el estudiante implementa el retardo con una función bloqueante del tipo
esperar(30), predice qué sucederá si un segundo vecino pulsa el interruptor a los 15 s de haberse encendido la luz. ¿Cumple este comportamiento la función de un temporizador de escalera rearmable? Justifica tu respuesta. - b) Diseña en pseudocódigo un sistema rearmable no bloqueante empleando una variable
tiempo_restantey comprobaciones periódicas (por ejemplo, cada 1,0 s), de modo que cada nueva pulsación reinicie la cuenta atrás a 30 s sin apagar la luz. - c) Predice qué riesgo existe si un pulsador físico se atasca y queda permanentemente activado, y propón una modificación lógica para evitar que la luz quede encendida de forma indefinida.
Para controlar un semáforo de vehículos que incluye un pulsador peatonal de demanda, se comparan dos estructuras de programación: Opción A (secuencial lineal): bucle con…
Para controlar un semáforo de vehículos que incluye un pulsador peatonal de demanda, se comparan dos estructuras de programación:
-
Opción A (secuencial lineal): bucle con llamadas bloqueantes
esperar(t)sucesivas (verde 30 s, ámbar 3 s, rojo 15 s). -
Opción B (máquina de estados): el sistema permanece en el estado
COCHES_VERDEy solo transiciona de estado si se detecta la señal del pulsador peatonal.
- a) Justifica por qué la opción A es inadecuada para atender con inmediatez la pulsación de un peatón y qué defecto de respuesta provocará.
- b) Si se solicita añadir una nueva función («el verde peatonal debe parpadear 3 veces durante 3,0 s antes de pasar a rojo, pero únicamente si el sensor de invidentes no está activo»), razona qué ventajas de modularidad y mantenimiento presenta la opción B frente a la A.
- c) Diseña el diagrama de estados o pseudocódigo general de la opción B identificando claramente los estados, los eventos de entrada y las acciones asociadas a cada transición.
En un puente levadizo accionado por un motorreductor eléctrico se plantea sustituir los dos finales de carrera físicos (fc_abajo y fc_arriba) por un control basado…
En un puente levadizo accionado por un motorreductor eléctrico se plantea sustituir los dos finales de carrera físicos (fc_abajo y fc_arriba) por un control basado exclusivamente en tiempos: hacer girar el motor durante 5,0 s para abrir y 5,0 s para cerrar.
- a) Predice y justifica al menos dos situaciones reales (mecánicas, meteorológicas o eléctricas) por las que este sistema por tiempos hará que el puente no cierre por completo o termine dañando el motor.
- b) Diseña en pseudocódigo el ciclo completo de maniobra: al detectar un barco, poner el semáforo de tráfico vehicular en rojo, esperar 3,0 s de desalojo, subir el puente hasta
fc_arriba, permitir el paso fluvial con el semáforo náutico en verde y, al salir el barco, cerrar hastafc_abajo. - c) Incorpora a tu algoritmo un mecanismo de seguridad por tiempo máximo (watchdog): si transcurren más de 8,0 s sin que se active el final de carrera correspondiente durante el movimiento, el motor debe detenerse inmediatamente y activar una señal luminosa de alarma.
Para automatizar el riego de una huerta escolar se dispone de un sensor de humedad analógico y una electrobomba. Un primer programa aplica esta regla: «repetir siempre:…
Para automatizar el riego de una huerta escolar se dispone de un sensor de humedad analógico y una electrobomba. Un primer programa aplica esta regla: «repetir siempre: si humedad < 30,0 %, encender bomba; si no, apagar bomba; esperar 1 segundo».
- a) Si la lectura del sensor oscila rápidamente entre 29,8 % y 30,2 % debido a la absorción localizada o a ruido eléctrico, predice qué comportamiento tendrá la electrobomba y qué consecuencias mecánicas y eléctricas habrá.
- b) Explica por qué sustituir la espera por «esperar 10 minutos» tampoco garantiza un riego óptimo (analiza el retardo en la infiltración del agua y el riesgo de sobreirrigación).
- c) Diseña una solución mediante control por histéresis: define dos umbrales lógicos de humedad distintos (arranque y parada) y redacta el pseudocódigo estructurado o describe detalladamente el diagrama de flujo correspondiente, justificando por qué evita las conmutaciones constantes.
Resumen
Vuelve al principio: la barrera del parqueadero funciona porque su algoritmo combina condiciones (carro Y tiquete), repite el ciclo siempre y baja solo cuando un sensor confirma que el carro pasó.