Volver a la portadaTecnología · 3º de Secundaria · Cambiar asignatura
Empezar gratis
Secundaria 3º · Tecnología
Pensamiento computacional y robótica · Robótica

Programación de placas controladoras

Un semáforo en una esquina de Guadalajara cambia de color sin que nadie lo mueva. ¿Quién le dice qué hacer y en qué orden? Una placa controladora ejecuta exactamente las instrucciones de su programa, sean correctas o no: no adivina intenciones. Por eso conviene pensar el algoritmo antes de programar. Al final de la página volveremos al semáforo.

Algoritmo y programa

El algoritmo se puede describir con pseudocódigo (instrucciones escritas con palabras, en orden), con bloques gráficos (piezas que se encajan) o con un diagrama de flujo. Cambia la forma, no la lógica.

Un mismo algoritmo, el ciclo de un semáforo (verde, ámbar, rojo y repetir), se expresa como pseudocódigo, como bloques o como diagrama de flujo, y se traduce a un programa que ejecuta una placa controladora con tres LED. algoritmo repetir pseudocódigo 1repetir siempre 2verde; esperar 3ámbar; esperar 4rojo; esperar bloques repetir siempre encender esperar encender esperar encender esperar diagrama verde, esperar ámbar, esperar rojo, esperar programa la misma lógica se expresa en texto, bloques o un diagrama
Practica★☆☆Sin empezar
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.

Resolver
Practica★☆☆Sin empezar
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 ámbar y apagar las demás. Ordénalas correctamente y describe qué hace el programa completo.

Resolver

Entradas y condicionales: combinar con Y, O, NO

Ejemplos de condiciones: puerta == ABIERTA (digital) o temperatura > 40 (analógica, con umbral). Pruébalo con la compuerta lógica: cambia las entradas y observa la salida.

Practica★☆☆Sin empezar
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).

Resolver
Practica★☆☆Sin empezar
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».

Resolver
Practica★☆☆Sin empezar
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}$.

Resolver
Practica★★☆Sin empezar
La barrera de un estacionamiento solo debe subir cuando hay un carro esperando (sensor) y además el conductor ha tomado el boleto (pulsador); baja cuando el carro ha…

La barrera de un estacionamiento solo debe subir cuando hay un carro esperando (sensor) y además el conductor ha tomado el boleto (pulsador); baja cuando el carro ha pasado (un segundo sensor). Escribe el pseudocódigo completo del ciclo, combinando las dos condiciones a la vez.

Resolver
Practica★★☆Sin empezar
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.

Resolver

Recordar un evento con una variable

Un si solo ve el instante presente. Si una alarma debe seguir sonando aunque el intruso cierre la ventana, el programa tiene que recordar que algo pasó, guardándolo en una variable:

repetir siempre:

    si armada Y (puerta == ABIERTA O ventana == ABIERTA):

        disparada = VERDADERO

    si disparada:

        sirena ON

    si codigo_correcto:

        disparada = FALSO

        sirena OFF

La variable disparada es la memoria del sistema: se activa con el evento y solo se borra con una acción deliberada (el código), no cuando el sensor deja de detectar.

Ciclos y esperas

Casi todos los programas de una placa llevan ciclo porque el sistema debe seguir vigilando mientras esté encendido. Sin ciclo, un semáforo haría su secuencia una sola vez y se quedaría detenido en la última luz.

La espera sirve para dar duración a los estados: sin ella, verde, ámbar y rojo se sucederían en microsegundos y el ojo vería las tres luces a la vez; una luz de escalera se apagaría en cuanto se encendiera.

Una espera larga tiene un costo: durante ella el sistema está «ciego». Mira la figura.

Dos líneas de tiempo: con una espera larga de 30 segundos el botón presionado a la mitad de la espera no se lee hasta el final; con pausas cortas hay una lectura del botón en cada pausa y se detecta casi de inmediato. espera larga esperar(30): no lee el botón botón presionado: no se entera hasta el final pausas cortas botón presionado: se lee en la pausa siguiente una lectura del botón en cada pausa
Practica★☆☆Sin empezar
¿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.

Resolver
Practica★☆☆Sin empezar
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.

Resolver
Practica★★☆Sin empezar
Escribe en pseudocódigo el programa completo de un semáforo sencillo: verde durante 8 segundos, ámbar durante 2, rojo durante 8, y vuelta a empezar. Indica en cada paso…

Escribe en pseudocódigo el programa completo de un semáforo sencillo: verde durante 8 segundos, ámbar durante 2, rojo durante 8, y vuelta a empezar. Indica en cada paso qué luces están encendidas y cuáles apagadas.

Resolver
Practica★★☆Sin empezar
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 a la rapidez de respuesta del sistema.

Resolver
Practica★★★Sin empezar
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.

  1. 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 minutero de escalera rearmable? Justifica tu respuesta.
  2. b) Diseña en pseudocódigo un sistema rearmable no bloqueante empleando una variable tiempo_restante y 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.
  3. c) Predice qué riesgo existe si un pulsador físico se encalla y queda permanentemente activado, y propón una modificación lógica para evitar que la luz quede encendida de forma indefinida.
Resolver

Diagramas de flujo

Diagrama de flujo con inicio, lectura de sensor, rombo de decisión y bifurcación en dos caminos según la condición sea verdadera o falsa. inicio leer sensor ¿condición? sí acción A no acción B

Para completar un rombo que falta, mira qué acciones salen de él y pregúntate: ¿qué debe ser verdad para que ocurra la rama «sí»?

Seguidor de línea

Con un solo sensor colocado en el borde de la línea, la pregunta es «¿el sensor ve negro?». Si la respuesta es sí, el robot gira hacia un lado; si no, gira hacia el otro. Así avanza zigzagueando sobre el borde.

Con dos sensores (I a la izquierda y D a la derecha, separados un poco más que el ancho de la línea) se usan condicionales en serie, y el orden importa:

repetir siempre:

    leer I y D

    si D ve negro: girar a la derecha

    si no, si I ve negro: girar a la izquierda

    si no: avanzar recto

Mientras la línea quede entre los dos sensores, ambos ven blanco y el robot avanza recto. Si un sensor pisa la línea, el robot gira hacia ese lado para corregir. Pero ¿qué hace si ambos ven blanco porque se salió de la línea en una curva cerrada? Con este programa sigue recto y se pierde. Una mejora es guardar en una variable ultimo_giro el lado hacia el que corrigió por última vez, y cuando se pierda (ambos ven blanco por varias lecturas seguidas), girar hacia ese lado hasta reencontrar la línea.

Practica★☆☆Sin empezar
El diagrama de flujo de la figura gobierna la barrera de entrada de un estacionamiento, pero falta la pregunta del rombo. Escribe la condición que debería comprobarse…

El diagrama de flujo de la figura gobierna la barrera de entrada de un estacionamiento, pero falta la pregunta del rombo. Escribe la condición que debería comprobarse ahí y describe el comportamiento completo de la barrera.

Inicio Leer pulsador ? sí Subir barrera Esperar 5 s Bajar barrera no
Resolver
Practica★★☆Sin empezar
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.

Resolver
Practica★★☆Sin empezar
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.

Inicio Leer sensor ? sí Girar a la izquierda no Girar a la derecha
Resolver
Practica★★★Sin empezar
El diagrama de flujo de la figura gobierna la barrera de salida de un estacionamiento, con un sensor situado bajo la barrera, pero falta una de las condiciones.…

El diagrama de flujo de la figura gobierna la barrera de salida de un estacionamiento, con un sensor situado bajo la barrera, pero falta una de las condiciones. Complétala, describe el comportamiento completo y explica qué accidente evita esa segunda comprobación.

Inicio ¿auto esperando? no sí Subir barrera ? no sí Bajar barrera
Resolver
Practica★★★Sin empezar
Dos equipos programan el mismo semáforo peatonal: uno encadena esperas fijas una tras otra; el otro usa estados (verde para autos, amarillo, rojo con verde para…

Dos equipos programan el mismo semáforo peatonal: uno encadena esperas fijas una tras otra; el otro usa estados (verde para autos, amarillo, rojo con verde para peatones) y condiciones para cambiar de estado. Compara ambos enfoques y razona cuál es más fácil de modificar cuando llega una petición nueva: «agrega un parpadeo del verde peatonal antes de cortar».

Resolver

Control por tiempo o por sensor de posición

Un puente levadizo o un portón eléctrico se mueve con un motor. ¿Cómo sabe el programa cuándo parar? Hay dos opciones.

El tiempo solo supone; el final de carrera comprueba. La velocidad del motor cambia con la carga, la fricción, el viento, el voltaje de la batería o el desgaste. Si el puente tarda 6 s en vez de 5 s, queda a medio cerrar; si tarda 4 s, el motor sigue empujando contra el tope y se sobrecalienta.

Practica★★★Sin empezar
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.

  1. a) Predice y justifica al menos dos situaciones reales (mecánicas, meteorológicas o eléctricas) por las que este sistema por tiempos provocará que el puente no cierre por completo o termine dañando el motor.
  2. b) Diseña en pseudocódigo el ciclo completo de maniobra: al detectar un barco, poner el semáforo de tráfico rodado en rojo, esperar 3.0 s de desalojo, subir el puente hasta fc_arriba, permitir el paso fluvial con semáforo náutico en verde y, al salir el barco, cerrar hasta fc_abajo.
  3. 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 pararse inmediatamente y activar una señal luminosa de alarma.
Resolver

Depuración

Depuración de un programa de robot: el sensor envía lecturas a la placa, donde se revisan la condición y la variable, y los valores se imprimen por el puerto serie en un monitor; se comprueban tres hipótesis por orden. variable si (condición) puerto serie 0 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 valores reales 3 sensor errático 2 variable sin leer 1 condición invertida se comprueba cada hipótesis por separado, de más a menos probable

Un umbral con dos valores

Cuando una lectura analógica se queda oscilando alrededor del umbral, un solo valor de comparación hace que la salida conmute una y otra vez. Un riego automático que enciende la bomba con humedad $< 30.0\ \%$ y la apaga en cuanto llega a $30.0\ \%$ o más, con una lectura que salta entre $29.8\ \%$ y $30.2\ \%$, prendería y apagaría la bomba cada segundo: se desgasta el motor y se producen picos de corriente.

La solución es usar dos umbrales: uno para encender y otro, mayor, para apagar. Entre los dos valores la salida conserva su estado. A esa zona intermedia se le llama banda muerta, y a la técnica, histéresis.

Practica★★☆Sin empezar
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 queda justo encima del sensor.

Resolver
Practica★★☆Sin empezar
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.

Resolver
Practica★★★Sin empezar
Depura este programa de barrera: «repetir siempre: si el sensor detecta carro, subir la barrera; bajar la barrera». Explica el error, qué hará la barrera en la práctica…

Depura este programa de barrera: «repetir siempre: si el sensor detecta carro, subir la barrera; bajar la barrera». Explica el error, qué hará la barrera en la práctica y escribe el programa corregido.

Resolver
Practica★★★Sin empezar
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.

  1. 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 entra en fallo.
  2. 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.
  3. c) Si la pista tuviese 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.
Resolver
Practica★★★Sin empezar
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()
  1. 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?
  2. 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.
Resolver
Practica★★★Sin empezar
Para automatizar el riego de un huerto 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 un huerto 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».

  1. 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 sufrirá la electrobomba y qué consecuencias mecánicas y eléctricas tendrá.
  2. 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).
  3. 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.
Resolver

Resumen

Vuelve al principio: el semáforo cambia solo porque una placa ejecuta, en un ciclo, el algoritmo que alguien pensó: encender una luz, esperar, pasar a la siguiente y repetir.

Ver todos los ejercicios de este apartado