Guía rápida de ALGORITHM-PLC. Elige un tema en el menú de la izquierda. Si es tu primera vez, sigue leyendo aquí mismo.
🚀 Primeros pasos
1. Arrastra bloques desde la barra izquierda al lienzo del Diagrama para construir tu programa.
2. Conecta bloques con "🔗 Conectar nodos": pulsa el bloque de origen y luego el de destino.
3. Pulsa "▶ Ejecutar" para correrlo entero, o "⏭ Paso" para avanzar de uno en uno y ver qué hace cada bloque.
4. Cambia a la pestaña "🖥️ Panel de simulación" y añade widgets (deslizadores, LEDs, gráficas...) para dar vida a tu programa.
5. Explora "🗂️ DEMOS" para cargar ejemplos ya construidos y aprender viéndolos funcionar.
6. En cualquier campo de expresión (Proceso, Decisión, bucles...) tienes dos selectores debajo del cuadro de texto para insertar una función o una variable ya usada sin tener que memorizar su sintaxis exacta.
7. Si tu programa tiene muchos pasos (una recursión honda, un bucle largo de robótica...), activa "⚡ Modo turbo" junto al slider de Velocidad para que se ejecute mucho más rápido, sin la animación paso a paso.
🧱 Bloques del Diagrama
Entrada/Salida: Inicio, Fin, Entrada, Salida (con modo simple {variable} o modo experto)
Control de flujo: Proceso, Decisión, Espera, Comentario
Bucles: Para (FOR), Mientras, Repetir, Selección (CASE), Salir del bucle, Continuar bucle
Subrutinas: Llamar, Retornar, Transformar lista, Filtrar lista, Aplicar a cada celda (permiten recursión real)
Saltos: Conector, Salto, Empalme — para organizar diagramas grandes sin cruzar flechas por toda la pantalla
Tiempo: Temporizador, Acumulador, Reloj (con alarma), Secuenciador, Biestable, Monoestable
Datos: Función — 6 grupos: Matemáticas, Texto, Listas, Geometría, Tiempo y Matrices (contar vecinos vivos, leer celda)
Gráficos: Tortuga, Lienzo gráfico libre (coordenadas exactas), Matriz de LEDs, Brazo robot
Sistemas de Control: Semáforo, Termostato, Expendedora, Ascensor, Cinta, Barrera, Grúa, Invernadero, Depósito de agua, Estación meteorológica/riego, Dado, Ruleta, Panel de votación, Robot diferencial
Automatismos: Cerradura PIN, Lavadora, Alarma, Panel solar, Puertas automáticas, Luz con regulador, Termostato horario, Controlador de escenas
Sonido: Buzzer, Piano
Hardware: Entrada física, Salida física (Arduino/micro:bit/Pico)
Doble clic (o clic simple) en cualquier bloque abre su editor. La "×" en la esquina lo borra. Los bloques de "Sistemas de Control" y "Automatismos" tienen su propio tema — mira "🎮 Sistemas de Control y Automatismos". El Robot diferencial merece tema propio: mira "🤖 Robot diferencial".
🎮 Sistemas de Control y Automatismos
Estas categorías se llamaban antes "Simulaciones del mundo físico" y "Domótica y seguridad". Son bloques que representan procesos reales, cada uno con su propio widget animado en el Panel. No necesitan hardware conectado.
🚦 Semáforo: máquina de estados (rojo/ámbar/verde).
🌡️ Termostato: control por realimentación (mide, compara, actúa).
🥤 Expendedora: decisiones con varias condiciones (stock, crédito, cambio).
🛗 Ascensor: cola de peticiones (FIFO), con movimiento animado real.
📦 Cinta clasificadora: clasificación por reglas encadenadas; enciende el motor antes de usarla.
🅿️ Barrera de aparcamiento: gestión de un recurso limitado (plazas).
🏗️ Grúa: secuenciación con condición de alineación (carro + gancho + carga).
🌱 Invernadero: control de varias variables a la vez (humedad, luz) con varios actuadores.
💧 Depósito de agua: control por histéresis (umbral bajo/alto), evita el "parpadeo" de la bomba.
🌡️ Estación meteorológica / 💦 Estación de riego: reflejan directamente dos expresiones tuyas (temperatura/humedad).
🎲 Dado / 🎡 Ruleta / 🗳️ Panel de votación: introducen el azar y el recuento de resultados en tu programa.
🔒 Cerradura PIN: verificación de un código dígito a dígito, con bloqueo tras varios fallos.
🧺 Lavadora: máquina de estados con fases, con pausa y reanudación.
🚨 Alarma: varios estados de seguridad encadenados, con cuenta atrás.
☀️ Panel solar: compara dos lecturas de luz para decidir la orientación.
🚪 Puertas automáticas: una condición de seguridad puede interrumpir una acción en curso.
💡 Luz con regulador: dos condiciones combinadas a la vez, con nivel graduable.
🌡️🕐 Termostato horario: un objetivo que cambia según la hora del día.
🎬 Controlador de escenas: activa varios dispositivos a la vez con una sola orden.
🤖 Robot diferencial: tema propio — mira "🤖 Robot diferencial".
Ninguno de estos bloques está soportado en la exportación a MicroPython (tema "🐍 Exportar a MicroPython"): son puramente simulaciones en pantalla.
🤖 Robot diferencial
Empieza siendo un robot de dos ruedas con sensor de distancia a la pared, pero se ha ampliado mucho: además de Avanzar/Retroceder/Girar, tiene "Ir a un punto", "Girar a un ángulo absoluto", "Leer posición (X, Y)" y "Leer ángulo actual" — estos dos últimos guardan valores sencillos en variables, para poder programar tus propias reglas de control basadas en coordenadas.
🚧 Obstáculos: desde el engranaje ⚙️ del widget, pinta obstáculos de colores en una rejilla — "Medir distancia" y "¿Hay obstáculo cerca?" ya cuentan con ellos, y también el modo autónomo "Explorar un paso".
🛤️ Seguir línea: dibuja un camino a mano alzada desde ⚙️, y usa "Leer sensor de línea" (izquierdo/centro/derecho) para programar el algoritmo clásico de seguimiento con 3 sensores.
🗺️ Trayectoria aprendida: arrastra el robot con el ratón directamente sobre el widget y pulsa "📍 Grabar punto" para memorizar una ruta (X, Y, ángulo) — o márcala con clics sobre el mini-mapa de ⚙️. El bloque "Seguir trayectoria aprendida" la reproduce entera.
El modelo gráfico del robot (clásico/redondo/coche) se elige también desde ⚙️. Los colores de la línea y de la trayectoria son configurables por separado.
🔌 Hardware real
Conecta Arduino, micro:bit o Raspberry Pi Pico con el widget "Placa serie" (necesitas Chrome o Edge de escritorio). Para micro:bit y Pico, el botón "Instalar firmware" lo hace todo automáticamente. Para Arduino, descarga el .ino desde Configuración y súbelo una vez con el Arduino IDE. El botón "🔌 Probar comunicación" te dice si la placa responde antes de complicarte con los pines.
El widget "Vista de placa" dibuja el esquema de pines de la placa elegida y marca en color los que ya usa tu diagrama — en la Pico respeta la disposición física real (columna izquierda GP0-GP15, columna derecha GP28/27/26 + GP22-16).
Pantalla OLED I2C: disponible en Pico y también en micro:bit (pin 19 = SCL, pin 20 = SDA). En el bloque Salida física, elige "Pantalla OLED: texto", y separa líneas con el carácter "|".
🐍 Exportar a MicroPython
Solo en la versión Pro: Archivo → Exportar a MicroPython (Pico o micro:bit) convierte tu diagrama en un archivo main.py autónomo, que sigue funcionando sin el navegador ni el cable USB conectado a un ordenador.
Pasos: exporta el archivo → conecta la placa → ábrelo con Thonny y guárdalo en el dispositivo como main.py → desconecta el USB o dale batería. Para volver a controlarla en vivo desde ALGORITHM-PLC, reinstala el firmware normal.
Solo Pico y micro:bit lo admiten. Arduino necesita compilar C++ con el Arduino IDE para cada programa, así que se queda en control en vivo por USB en ambas versiones (Básica y Pro).
🧩 Subrutinas
El botón "🧩 Subrutinas" del header crea mini-diagramas independientes con nombre y parámetros propios. Se llaman con el bloque "Llamar" desde cualquier punto de tu programa, y devuelven un valor con "Retornar". Las variables de una subrutina son locales: no interfieren con las del programa principal.
Recursión real: una subrutina puede llamarse a sí misma (por ejemplo, factorial o Fibonacci) — necesita un caso base (cuándo parar) y un caso recursivo (cómo acercarse a ese caso base). Cada llamada espera en una "pila" a que la siguiente termine, igual que en cualquier lenguaje de programación real.
Transformar lista / Filtrar lista / Aplicar a cada celda aplican una subrutina a cada elemento de una lista o matriz automáticamente (equivalentes a "map"/"filter" de la programación funcional) — sin escribir tú el bucle. Aplicar a cada celda, combinado con las funciones de Matrices (contar vecinos vivos, leer celda), permite programar autómatas celulares como el Juego de la Vida.
💡 Trucos y atajos
🔍− / 🔍+: zoom independiente para Diagrama y Panel (doble clic en el porcentaje para restablecer).
📋 Copiar imagen: copia la pantalla activa al portapapeles, lista para pegar en un documento.
📱 Modo aplicación: pantalla completa tipo app, ideal para presentar o para que el alumno solo vea el resultado final.
💾 Guardar / 📂 Cargar: tus proyectos se guardan como .json; puedes ponerles el nombre que quieras y volver a guardarlos con el mismo nombre o como copia.
⚙️ Configuración: cambia los colores de la app y guárdalos como .config para reutilizarlos.
Velocidad: el slider de Velocidad (20-1600 ms) marca el ritmo de "Ejecutar"/"Paso"; no afecta a los bloques "Esperar" que pongas tú.
⚡ Modo turbo: junto al slider de Velocidad — ejecuta sin la animación del punto que recorre las flechas, para programas con muchísimos pasos (recursión honda, bucles largos de robótica) que ni al mínimo del slider van suficientemente rápido.
🧮 / 🔤 en campos de expresión: bajo cualquier casilla de expresión (Proceso, Decisión, bucles...) hay un selector para insertar una función (sin memorizar su sintaxis) y otro para insertar una variable ya usada en tu programa (sin arriesgarte a un error de tecleo).
Arrastrar el Robot diferencial: cógelo con el ratón directamente en su widget y suéltalo donde quieras — útil para colocarlo antes de grabar un punto de la trayectoria aprendida.
🔴 Punto de ruptura: clic derecho sobre cualquier bloque del Diagrama → "Punto de ruptura". Al pulsar "▶ Ejecutar", el programa corre a toda velocidad (incluido con Modo turbo) hasta llegar justo ahí, y se detiene solo — no se guarda con el proyecto, es solo una ayuda para la sesión actual.