Saltar al contenido

🧠 Proyecto didáctico · IA + Arduino + BasicAIO

El Oráculo de LED

Construí una pequeña máquina que “lee” cómo te fue en el día, le pide a la IA que detecte la emoción y responde desde el mundo físico encendiendo un LED: rojo, amarillo o verde.

Nivel: inicial Tiempo: 15–25 min Conceptos: variables, IA, IF/ELSE, MCP Hardware: Arduino UNO + 3 LEDs
Pantalla completa de BasicAIO ejecutando el proyecto Oráculo de LED

La misión

Hasta ahora, muchas computadoras parecían vivir encerradas en la pantalla. En este proyecto vamos a abrir una puerta: la IA interpretará una frase escrita por una persona y Arduino la convertirá en una señal luminosa real.

El resultado será un oráculo emocional: escribís algo como “hoy me fue increíble” o “me peleé con mi amigo”, BasicAIO consulta a la IA y el Arduino enciende el LED que corresponda.

ROJO
tristeza / enojo
AMARILLO
sorpresa / duda
VERDE
alegría

Materiales

  • 1 placa Arduino UNO, Nano, Mega o compatible.
  • 1 protoboard.
  • 3 LEDs: rojo, amarillo y verde.
  • 3 resistencias de 220 Ω o 330 Ω.
  • Cables Dupont.
  • BasicAIO instalado.
  • Sketch arduino_mcp.ino cargado en la placa.
  • Créditos de IA disponibles para ejecutar el bloque de IA.
Idea central: BasicAIO trabaja con bloques visuales, la IA clasifica el texto y el MCP permite que Arduino aparezca como herramientas físicas listas para usar.

1. Armá el circuito del Oráculo

Conectá cada LED a un pin digital del Arduino usando una resistencia en serie. En este ejemplo usaremos los pines 11, 12 y 13.

ColorNombre en BasicAIOPin ArduinoTipo
Verdeled_verde11digital
Amarilloled_amarillo12digital
Rojoled_rojo13digital
Diagrama de conexiones Arduino UNO con tres LEDs en protoboard
Conexión sugerida: cada LED vuelve a GND mediante su resistencia, y los pines digitales 11, 12 y 13 controlan los colores.

2. Configurá los pines en BasicAIO

Abrí BasicAIO, conectá el Arduino por USB y entrá a Configurar Pines. Si tu placa fue detectada como ArduinoMCP, asigná los nombres exactamente como aparecen en la tabla anterior.

Ventana de configuración de pines en BasicAIO con led_verde, led_amarillo y led_rojo
Configuración usada en el ejemplo: led_verde en pin 11, led_amarillo en pin 12 y led_rojo en pin 13.
Antes de seguir: el Arduino debe tener cargado arduino_mcp.ino. Ese firmware permite que BasicAIO descubra herramientas como digital_write y las convierta en bloques utilizables.

3. Construí el flujo en bloques

El programa tiene cuatro partes: pedir un texto, consultar a la IA, guardar la emoción detectada y ejecutar una acción física.

Pedir texto

Usá el bloque Pedir texto con el mensaje: ¿Cómo te fue hoy?. Guardá la respuesta en la variable mi_variable.

Crear el cerebro IA

Agregá un bloque de IA con el rol Experto en detectar emociones humanas. El prompt debe pedir una salida muy estricta: solo una palabra.

Analiza esta frase: "{mi_variable}" y responde solo con una palabra: ROJO (tristeza/enojo), VERDE (alegría) o AMARILLO (sorpresa/duda)

Guardá la respuesta en la variable Emocion.

Agregar decisiones

Usá bloques si / sino para comparar el resultado de la IA:

si Emocion == "ROJO" → encender led_rojo
sino si Emocion == "AMARILLO" → encender led_amarillo
sino si Emocion == "VERDE" → encender led_verde

Encender, esperar y apagar

En cada caso, usá digital_write con valor 1, esperá 5 segundos y luego usá digital_write con valor 0.

Diagrama de bloques del proyecto Oráculo de LED en BasicAIO
Flujo final: entrada de texto → bloque IA → variable Emocion → condiciones → LED correspondiente.

4. Probá el Oráculo

Presioná Ejecutar. Cuando BasicAIO te pregunte cómo te fue, escribí una frase natural. Por ejemplo:

Hoy armé mi primer robot y funcionó.
Me olvidé la tarea y me retaron.
No sé si aprobé, estoy esperando la nota.

La IA debería responder internamente con VERDE, ROJO o AMARILLO. Luego BasicAIO enviará la orden al Arduino y el LED elegido se encenderá durante 5 segundos.

Si algo no funciona

ProblemaQué revisar
No aparecen bloques ArduinoMCPReiniciá BasicAIO con el Arduino conectado y verificá que el sketch arduino_mcp.ino esté cargado.
La IA responde algo largoRevisá el prompt: debe decir “responde solo con una palabra”.
El LED incorrecto se enciendeVerificá la configuración de pines y que los cables coincidan con 11, 12 y 13.
El LED no prendeProbá invertir la orientación del LED y verificá que la resistencia esté en serie con GND.
La condición siempre da falsoCompará con mayúsculas exactas: "ROJO", "AMARILLO", "VERDE".

Qué aprendiste con este proyecto

Este oráculo parece un juego, pero reúne ideas muy potentes: una variable guarda lo que escribe el usuario, un prompt transforma una frase libre en una categoría, un bloque condicional decide qué camino seguir y Arduino ejecuta una acción física mediante MCP.

Ese patrón —entrada → IA → decisión → acción— es la base de muchos sistemas inteligentes: asistentes, robots, domótica, sensores educativos y agentes que interactúan con el mundo real.

Desafío extra: convertí el Oráculo en personaje

Probá cambiar el rol de la IA por uno más divertido:

Eres un oráculo antiguo que detecta emociones humanas.
Responde solo con ROJO, VERDE o AMARILLO. No expliques nada.

También podés sumar una acción de pantalla para mostrar una frase final, o reemplazar los tres LEDs por un LED RGB.

Ver estructura técnica del flujo exportado

Este bloque JSON representa la lógica del ejemplo: pedir texto, consultar IA y activar los pines digitales correspondientes.

[
  {
    "type": "input_text_to_variable",
    "VAR": "mi_variable",
    "MESSAGE": "¿Cómo te fue hoy?",
    "next": {
      "type": "ia_system_to_variable",
      "SYSTEM": "Experto en detectar emociones humanas",
      "PROMPT": "Analiza esta frase \"¿Cómo te fue hoy?\": \"{mi_variable}\" y responde solo con una palabra: ROJO (tristeza/enojo), VERDE (alegría) o AMARILLO (sorpresa/duda)",
      "VARNAME": "Emocion",
      "next": {
        "type": "if_else",
        "COND": "Emocion == \"ROJO\"",
        "DO": [
          {
            "type": "mcp__arduinomcp__digital_write",
            "server": "arduinomcp",
            "tool": "digital_write",
            "pin": "13",
            "pin_name": "led_rojo",
            "pin_type": "digital",
            "value": "1",
            "args": {
              "pin": "13",
              "pin_name": "led_rojo",
              "pin_type": "digital",
              "value": "1"
            }
          },
          {
            "type": "esperar",
            "TIME": 5,
            "UNIT": "seconds"
          },
          {
            "type": "mcp__arduinomcp__digital_write",
            "server": "arduinomcp",
            "tool": "digital_write",
            "pin": "13",
            "pin_name": "led_rojo",
            "pin_type": "digital",
            "value": "0",
            "args": {
              "pin": "13",
              "pin_name": "led_rojo",
              "pin_type": "digital",
              "value": "0"
            }
          }
        ],
        "ELSE": [
          {
            "type": "if_else",
            "COND": "Emocion == \"AMARILLO\"",
            "DO": [
              {
                "type": "mcp__arduinomcp__digital_write",
                "server": "arduinomcp",
                "tool": "digital_write",
                "pin": "12",
                "pin_name": "led_amarillo",
                "pin_type": "digital",
                "value": "1",
                "args": {
                  "pin": "12",
                  "pin_name": "led_amarillo",
                  "pin_type": "digital",
                  "value": "1"
                }
              },
              {
                "type": "esperar",
                "TIME": 5,
                "UNIT": "seconds"
              },
              {
                "type": "mcp__arduinomcp__digital_write",
                "server": "arduinomcp",
                "tool": "digital_write",
                "pin": "12",
                "pin_name": "led_amarillo",
                "pin_type": "digital",
                "value": "0",
                "args": {
                  "pin": "12",
                  "pin_name": "led_amarillo",
                  "pin_type": "digital",
                  "value": "0"
                }
              }
            ],
            "ELSE": [
              {
                "type": "if_else",
                "COND": "Emocion == \"VERDE\"",
                "DO": [
                  {
                    "type": "mcp__arduinomcp__digital_write",
                    "server": "arduinomcp",
                    "tool": "digital_write",
                    "pin": "11",
                    "pin_name": "led_verde",
                    "pin_type": "digital",
                    "value": "1",
                    "args": {
                      "pin": "11",
                      "pin_name": "led_verde",
                      "pin_type": "digital",
                      "value": "1"
                    }
                  },
                  {
                    "type": "esperar",
                    "TIME": 5,
                    "UNIT": "seconds"
                  },
                  {
                    "type": "mcp__arduinomcp__digital_write",
                    "server": "arduinomcp",
                    "tool": "digital_write",
                    "pin": "11",
                    "pin_name": "led_verde",
                    "pin_type": "digital",
                    "value": "0",
                    "args": {
                      "pin": "11",
                      "pin_name": "led_verde",
                      "pin_type": "digital",
                      "value": "0"
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    }
  }
]

Tu PC acaba de hablar con el mundo físico

Seguí explorando BasicAIO y convertí ideas simples en sistemas con IA, bloques, sensores y Arduino.

Ir a basicaio.com