Saltearse al contenido

Unidad 1

Introducción

El objetivo de la esta unidad es puedas responder según tus intereses y perfil profesional esta pregunta: ¿Este curso para qué me sirve?

Esta unidad tiene un total de 16 actividades. Se estima un tiempo de 30 minutos por actividad; sin embargo, dependiendo de tu ritmo de trabajo, dificultades, saberes previos o nivel de interés algunas actividades pueden tomarte un poco más de tiempo.

¿Qué aprenderás en esta unidad?

El objetivo de esta fase (SET) es establecer la relevancia del curso Sistemas Físicos Interactivos 1 en el contexto del programa de Ingeniería en Diseño de Entretenimiento Digital y tus aspiraciones profesionales. Despertar tu
curiosidad y motivación intrínseca.

Actividad 01

Conectando con el Entretenimiento Digital

Enunciado: describe tres ejemplos de sistemas interactivos presentes en la industria del entretenimiento digital. Para cada ejemplo, identifica los dispositivos de entrada y salida utilizados, y explica cómo contribuyen a la experiencia del usuario. Piensa en videojuegos, instalaciones interactivas, experiencias de realidad virtual o aumentada, etc. Finalmente, reflexiona sobre cómo el conocimiento de sistemas físicos interactivos podría enriquecer tus proyectos en el futuro como ingeniero en diseño de entretenimiento digital.

Entrega: un texto corto con la descripción de los tres ejemplos, incluyendo los dispositivos de entrada/salida y la reflexión final.

🚀 Tu solución:

SISTEMAS INTERACTIVOS EN EL ENTRETENIMIENTO DIGITAL

En la industria del entretenimiento digital es comun encontrar sistemas interactivos diseñados para el usuario, por la propia naturaleza de este formato se requieren estas herramientas para la entrega del producto, por esto mismo aqui van 3 ejemplos usados

CONSOLAS DE VIDEOJUEGOS

Son dispositivos enfocados al entretenimiento los cuales mediante su potente hardware corren juegos, novelas visuales, entre otros, aseguran un sistema interactivo con el usuario atraves de la conexion controlada por los “mandos” en los cuales estos devuelven una respuesta especifica en la pantalla en base a lo necesitado, todo esto provoca una experiencia comoda en el usuario el cual se familiariza con los botones del mando y la interfaz diseñada en la consola

SISTEMAS DE REALIDAD VIRTUAL

Son perifericos conectados a una propia consola o computadora los cuales estan diseñados para generar una experiencia donde se simula una “realidad” diferente a la propia y dependiendo de el producto se generan historias propias son controlados por los propios mandos de la consola o en algunos casos cuentan con sensores de movimiento propio los cuales se utilizan para facilitar aun mas la experiencia del usuario, devolviendo mediante estimulos y movimientos respuestas en la historia o “realidad” esto en el usuario genera una sensacion de inmersion mucho mas completa

EXPERIENCIAS INTERACTIVAS

Son propias experiencias reales diseñadas para interactuar con el usuario mediante las necesidades planeadas, ejemplos de esto son situaciones como los “escape room”, donde mediante una pantalla se plantea un puzzle y el usuario encerrado en una habitacion debe resolverlo para que al final la propia pantalla devuelva un mensaje de que fue completado o no, en el usuario genera confusion pero a su vez una sensacion de tranquilidad al saber que esta siendo guiado por pistas.

Actividad 02

Mi Visión Interactiva

Enunciado: imagina un proyecto de entretenimiento digital que te gustaría desarrollar en el futuro. Describe brevemente el proyecto y luego enfócate en cómo podrías integrar sistemas físicos interactivos para mejorarlo. ¿Qué tipo de dispositivos de entrada/salida utilizarías? ¿Qué tipo de interacción con el mundo físico te gustaría lograr? ¿Qué problemas crees que podrías encontrar al implementar estos sistemas? Conecta tu visión con la descripción del curso y los conceptos que se mencionan.

Entrega: un texto corto con la descripción del proyecto imaginario, la integración de sistemas físicos interactivos, los posibles dispositivos y la reflexión sobre los desafíos.

🚀 Tu solución:

PROYECTO DE DESARROLLO A FUTURO

”PUFFER DESTROYER”

Un videojuego plataformero enfocado en la dificutlad maxima donde se deba ir de un punto A a un punto B esquivando obstaculos y enemigos

Sistemas fisicos usados

Es un juego diseñado para computadoras donde se utiliza como metodo de entrada el teclado especificamente, usando las teclas “wasd” o las propias flechas de este para controlar al personaje y incentivarlo a completar cada nivel devolviendo como respuesta los niveles completados y la propia experiencia de control del personaje

Sensaciones y reacciones del usuario en la realidad

Con este proyecto se busca generar una primeriza frustracion en el usuario el cual mediante el constante fallo en los niveles se desespere, sin embargo tambien se busca generar una sensacion de placer al por fin pasar un nivel complicado

Posibles fallos encontrados

la implementacion de unos controles complejos y de rapida reaccion puede generar que no todos los usuarios esten preparados, a su vez esto puede generar problemas en teclados antiguos que no cuenten con la capacidad de procesar los rapidos movimientos.

Investigación

El objetivo de esta fase (SEEK) es indagar y comprender los fundamentos del Diseño Generativo y su relevancia en el contexto del entretenimiento digital, específicamente en relación con los sistemas físicos interactivos.

Actividad 03

Definición y conceptos clave

Enunciado: indaga y define con tus propias palabras qué es el diseño generativo. Identifica al menos tres conceptos clave asociados a esta disciplina (ej. algoritmos, parámetros, datos). Describe cómo estos conceptos se relacionan entre sí.

Recurso: vas a leer sobre los conceptos básicos de diseño generativo en el sitio web del diseñador alemán Patrik Hübner.

Entrega: un breve glosario con la definición de Diseño Generativo y los tres conceptos clave, incluyendo la descripción de su interrelación.

🚀 Tu solución:

DISEÑO GENERATIVO

Se trata de una tecnica de creacion en la que principalmente se utiliza programacion y algoritmos para generar un monton de diseños que esten basados en los parametros y reglas necesitadas, facilitando asi el trabajo en momentos donde se requiere una cantidad muy grande de Diseños siendo completamente diferente del diseño tradicional el cual necesita de un proceso manual y específico para cada pieza, siendo este menos eficiente en terminos generales.

CONCEPTOS CLAVES IDENTIFICADOS

ALGORITMOS:

Son las instrucciones y reglas que definen como se crea el diseño, este a su vez funciona como una especie de “cerebro” del proceso generativo

PARAMETROS:

son las variables que el diseñador puede generar para influir en el resultado final, como dimensiones, colores o restricciones

DATOS:

Son la informacion de entrada que el algoritmo usa para generar diseños, pueden ser numericos (refiriendose a medidas), textuales (nombres), o datos sensoriales (como imagenes o sonidos), entre otros.

RELACIONES ENTRE ESTOS CONCEPTOS

Los datos alimentan al algoritmo, que los procesa para crear diseños siguiendo las reglas definidas. Los parámetros permiten controlar el comportamiento del algoritmo, guiándolo para que genere diseños específicos o explore soluciones variadas dentro de los límites establecidos. Juntos, estos tres elementos trabajan como un sistema interconectado que produce resultados únicos y personalizados de manera eficiente.

Actividad 04

El rol del diseñador

Enunciado: basado en este texto sobre diseño generativo analiza cómo cambia el rol del diseñador en este nuevo paradigma. ¿De qué manera el diseñador se convierte en “conductor” en lugar de “artesano”? ¿Qué nuevas habilidades se requieren en este contexto?

Entrega: un texto sobre la transformación del rol del diseñador en el contexto del Diseño generativo, incluyendo las nuevas habilidades necesarias.

🚀 Tu solución:

EL ROL DEL DISEÑADOR

El diseño generativo, como se explica en el sitio, transforma al diseñador en un “conductor” en lugar de un “artesano”. En este paradigma, el diseñador no crea manualmente cada pieza, sino que establece reglas, algoritmos y sistemas que generan resultados adaptativos y variados. Este enfoque requiere habilidades en programación, análisis de datos y diseño de sistemas, además de una comprensión profunda de los principios estéticos y conceptuales. La capacidad de colaborar con herramientas tecnológicas y refinar procesos se vuelve esencial.

Se destaca que el diseñador ya no realiza directamente las piezas finales, sino que define las reglas y algoritmos que guían la generación de múltiples resultados posibles.

Actividad 05

Input/Output en el Diseño Generativo

Enunciado: investiga el concepto de “input/output” en el contexto del Diseño Generativo. Busca ejemplos de proyectos que utilicen datos como input para generar outputs visuales o interactivos.Describe cómo funciona el flujo de información en uno de los ejemplos encontrados.

Recursos: los siguientes recursos pueden servirte de inspiración:

Entrega: descripción de un proyecto de Diseño Generativo que utilice el modelo input/output, explicando el flujo de información y su impacto en el resultado final.

🚀 Tu solución:

EXPLICACION DEL CONCEPTO “INPUT/OUTPUT” EN EL CONTEXTO DEL DISEÑO GENERATIVO.

el modelo de entrada/salida (input/output) es fundamental. Este modelo implica que el sistema recibe datos de entrada (inputs), los procesa mediante algoritmos y produce resultados (outputs) que pueden ser visuales, estructurales o interactivos. Los inputs pueden variar desde parámetros numéricos hasta datos complejos como información ambiental o comportamientos de usuarios. Los outputs son las soluciones de diseño generadas que cumplen con los criterios establecidos.

EJEMPLO DE UN PROYECTO DE DISEÑO GENERATIVO:

PEDAL AUTOMOTRIZ

En este proyecto, se aplicó el diseño generativo para optimizar el diseño de un pedal de freno de automóvil, buscando mejorar su eficiencia estructural y reducir su peso.

se utilizan como entrada especificaciones técnicas (dimensiones, materiales y fuerzas) y restricciones mecánicas (áreas a evitar y límites de deformación). Un algoritmo genera múltiples iteraciones del diseño, que son analizadas mediante simulaciones para evaluar su rendimiento. El resultado final son varias opciones optimizadas en peso y eficiencia estructural, de las cuales se selecciona la mejor para su fabricación, combinando innovación y funcionalidad.

con todo esto se determina que el input en este caso es todo el trabajo de las especificaciones tecnicas y las restricciones mecaninas, mientras que el output se refiere al prototipo de los pedales generados con dichas especificaciones, para dar paso a la seleccion de los mas adecuados.

Actividad 06

Herramientas y tecnologías

Enunciado: en este curso vas a explorar los conceptos usando principalmente dos herramientas: micro:bit y p5.js. En esta actividad vas a conocer estas herramientas implementando tu primer sistema físico interactivo. Ten presente que esta actividad es introductoria y no busca que domines estas herramientas. Vas a seguir los siguientes pasos:

  1. Abre una versión actualizada de Google chrome o Microsogt edge.
  2. Abre en una pestaña este sitio micro:bit editor.
  3. Copia en el editor el siguiente código:
from microbit import *
uart.init(baudrate=115200)
display.show(Image.BUTTERFLY)
while True:
if button_a.is_pressed():
uart.write('A')
sleep(500)
if button_b.is_pressed():
uart.write('B')
sleep(500)
if accelerometer.was_gesture('shake'):
uart.write('C')
sleep(500)
if uart.any():
data = uart.read(1)
if data:
if data[0] == ord('h'):
display.show(Image.HEART)
sleep(500)
display.show(Image.HAPPY)
  1. Conecta el micro:bit a un puerto USB del computador.
  2. Al lado del botón Send to micro:bit hay tres puntos. Selecciona Connect.
  3. Selecciona el puerto USB lógico asignado por el sistema operativo al micro:bit. En este caso mbed Serial Port.
  4. Si no hay errores. Presiona Send to micro:bit y espera que aparezca una mariposa en el display de este. Eso quiere decir que el programa anterior ya estará cargado en la memoria del micro:bit.
  5. Ahora abre en otra pestaña el editor de p5.js.
  6. Observa que al lado del nombre del archivo: sketch.js hay una flecha. Si das click podrás observar tres archivos: index.html, sketch.js, style.css.
  7. Abre el archivo index.html e incluye la siguiente línea antes de la tag link. Esta línea permite incluir una biblioteca que facilita la comunicación USB serial entre el computador y el micro:bit.
<script src="https://unpkg.com/@gohai/p5.webserial@^1/libraries/p5.webserial.js"></script>
  1. Ahora en el archivo sketch.js copia el siguiente código:
let port;
let connectBtn;
function setup() {
createCanvas(400, 400);
background(220);
port = createSerial();
connectBtn = createButton('Connect to micro:bit');
connectBtn.position(80, 300);
connectBtn.mousePressed(connectBtnClick);
let sendBtn = createButton('Send Love');
sendBtn.position(220, 300);
sendBtn.mousePressed(sendBtnClick);
fill('white');
ellipse(width / 2, height / 2, 100, 100);
}
function draw() {
if(port.availableBytes() > 0){
let dataRx = port.read(1);
if(dataRx == 'A'){
fill('red');
}
else if(dataRx == 'B'){
fill('yellow');
}
else{
fill('green');
}
background(220);
ellipse(width / 2, height / 2, 100, 100);
fill('black');
text(dataRx, width / 2, height / 2);
}
if (!port.opened()) {
connectBtn.html('Connect to micro:bit');
}
else {
connectBtn.html('Disconnect');
}
}
function connectBtnClick() {
if (!port.opened()) {
port.open('MicroPython', 115200);
} else {
port.close();
}
}
function sendBtnClick() {
port.write('h');
}
  1. Dale click a Play sketch.
  2. Dale ahora click a Connect to micro:bit
  3. Selecciona el puerto mbed Serial Port.
  4. Presiona los botones A y B del micro:bit.
  5. Sacude el micro:bit. ¿Qué pasa?
  6. Presiona el botón Send Love. ¿Qué pasa?

Entrega: vas a tratar de analizar todos los pasos anteriores usando los conocimientos que tienes hasta este punto de la carrera. No te asustes con esta actividad, la idea es que intentes, estamos explorando y en las próximas unidades vas a poder entender muy bien todo. Por ahora, solo quiero que intentes.

  1. Describe qué pasa en el punto 15 y cómo crees que esto se logre.
  2. Describe qué pasa en el punto 16 y cómo crees que esto se logre.
  3. Describe qué pasa en el punto 17 y cómo crees que esto se logre.

🚀 Tu solución:

FUNCIONAMIENTO DEL MICROBIT

Describe qué pasa en el punto 15 y cómo crees que esto se logre.

El microbit al estar enlazado a el pc envia señales que son controladas a partir de un codigo, en este caso las siguientes lineas controlan este punto

while True:
if button_a.is_pressed():
uart.write('A')
sleep(500)
if button_b.is_pressed():
uart.write('B')
sleep(500)

es un ciclo while infinito donde mediante un if se identifica el boton presionado y se “escribe” en pantalla la letra seleccionada y despues se da paso a un descanso en el cpu de medio segundo

Describe qué pasa en el punto 16 y cómo crees que esto se logre.

las lineas que controlan este punto son:

if accelerometer.was_gesture('shake'):
uart.write('C')
sleep(500)

Es similar al punto anterior solo que en vez de controlar los botones presionados en el microbit, este controla la reaccion de un sensor del propio micro bit que reacciona al momento de sacudirlo, enviando la señal de que la letra “c”

Describe qué pasa en el punto 17 y cómo crees que esto se logre.

las lineas que controlan este punto son:

if uart.any():
data = uart.read(1)
if data:
if data[0] == ord('h'):
display.show(Image.HEART)
sleep(500)
display.show(Image.HAPPY)

lo que pasa aqui es que mediante el uart el codigo envia señales a un dispositivo externo y analiza si el “data” es igual a “h”, de ser asi envia una señal al microbit para que mediante sus leds muestre “imagenes” como en este cas el corazon y la cara feliz.

Aplicación

El objetivo de esta fase (APPLY) es aplicar los conceptos de Diseño Generativo y los conocimientos básicos de programación en p5.js y micro:bit para crear prototipos sencillos de sistemas interactivos.

Actividad 07

Diseño Generativo en Entretenimiento Digital

Enunciado: busca ejemplos concretos de cómo se aplica el Diseño Generativo en la industria del entretenimiento digital (videojuegos, experiencias interactivas, etc.). Describe un caso de estudio y analiza cómo el Diseño Generativo contribuyó a la experiencia final.

Entrega: describe el caso de estudio de Diseño Generativo aplicado al entretenimiento digital, analizando su impacto en la experiencia del usuario.

🚀 Tu solución:

DISEÑO GENERATIVO EN EL ENTRETENIMIENTO DIGITAL

El diseño generativo en el mundo del entretenimiento digital no es algo nuevo, debido a las propias limitaciones de los desarrolladores y artistas en muchos casos es mucho mas viable para el estudio usar tecnicas de este tipo para disminuir costos y tiempo durante el proceso de diseño, por ende una herramienta como esta es muy util en momentos cuando se trada de creaciones de personajes, escenarios y visuales del propio proyecto

un gran ejemplo de esto es el caso de los videojuegos donde se crean entornos en forma “procedural” donde basicamente todo el mundo del juego es generado al momento de iniciar la partida en base a unas restricciones y patrones previamente marcados, ahorrando asi completamente el trabajo de creacion de un mundo y mejorando la experiencia del jugador al ser cada experiencia de juego distinta, ya que no se repiten sus entornos, juegos como:

Minecraft

No Man’s Sky

lethal company

usan este sistema, esto genera que existan mundos mas bastos y cada uno diferente al anterior, con sus propios recursos y distribucion.

Actividad 08

Conexión con sistemas físicos

Enunciado: reflexiona sobre cómo el Diseño Generativo puede combinarse con sistemas físicos interactivos para crear experiencias innovadoras en el entretenimiento digital. ¿Qué tipo de dispositivos de entrada/salida podrían utilizarse? ¿Qué posibilidades creativas se abren con esta combinación?

Entrega: un brainstorming de ideas sobre la combinación de Diseño Generativo y sistemas físicos interactivos en el entretenimiento digital, incluyendo posibles dispositivos y experiencias.

🚀 Tu solución:

DISEÑO GENERATIVO COMBINADO CON LOS SITEMAS FISICOS INTERACTIVOS

El mejor ejemplo que se me ocurre es una especie de juego “sandbox” donde con el ejemplo de la actividad anterior teniendo en cuenta un proceso de generacion procedural se pueda buscar una union entre estos, donde se pueda controlar la generacion de un terreno mediante herramientas, digamos que creas el propio mundo donde va a desarrollarse tu partida, controlas las restricciones del terreno, alturas, clima etc, para despues dar paso a una generacion automatica, con esto se busca mejorar todavia mas la experiencia del jugador al darle el control de las restricciones de su mundo, con dispositivos de entrada como el teclado y mouse se controla y se da paso a una partida.

Actividad 09

Generando patrones visuales

Enunciado: crea un programa en p5.js que genere patrones visuales aleatorios utilizando funciones matemáticas simples (ej. random(), sin(), cos()). Experimenta con diferentes parámetros para modificar los patrones generados. No es necesario conectar con micro:bit en esta actividad.

Entrega: código del programa en p5.js y una captura de pantalla del patrón visual generado. Describe brevemente las funciones utilizadas y cómo modificaste los parámetros.

🚀 Tu solución:

programa en p5.js que genere patrones visuales aleatorios

function setup() {
createCanvas(800, 800);
noLoop();
background(255);
}
function draw() {
let cols = 20;
let rows = 20;
let cellWidth = width / cols;
let cellHeight = height / rows;
for (let i = 0; i < cols; i++) {
for (let j = 0; j < rows; j++) {
let x = i * cellWidth + cellWidth / 2;
let y = j * cellHeight + cellHeight / 2;
let circleSize = (sin(frameCount * 0.01 + i * j) * 0.5 + 0.5) * cellWidth * 0.8;
let r = random(100, 255);
let g = random(100, 255);
let b = random(100, 255);
fill(r, g, b, 150);
noStroke();
ellipse(x, y, circleSize, circleSize);
}
}
}
function mousePressed() {
redraw();
}

Lo que hace el programa es primero mediante un “noLoop” evitar que se generen infinitamente las figuras, despues se determina un fondo blanco mediante el “background(255);” para luego pasar a dibujar las figuras con la function draw

Como funciona la function draw?

primero se determinan las filas y hileras de la cuadricula, en este caso son 20 y 20

let cols = 20;
let rows = 20;

despues se determina el ancho y largo de estas mismas

let cellWidth = width / cols;
let cellHeight = height / rows;

con las celdas creadas se da paso a un ciclo for donde se recorren cada una de ellas para determinar cuantas hay se empieza con una variable i que aumenta de a 1 siempre y cuando sea menor al numero de celdas (20)

for (let i = 0; i < cols; i++)

despues se ubica cada celda y se posiciona en el centro de esta con:

let x = i * cellWidth + cellWidth / 2;

avanzan horizontal y verticalmente mediante i y j

por ultimo se generan circulos mediante la funcion seno y se definen colores aleatorios para estos mismos con:

let circleSize = (sin(frameCount * 0.01 + i * j) * 0.5 + 0.5) * cellWidth * 0.8;
let r = random(100, 255);
let g = random(100, 255);
let b = random(100, 255);
fill(r, g, b, 150);
noStroke();
ellipse(x, y, circleSize, circleSize);

Patron generado

image

Actividad 10

Interacción básica con micro:bit

Enunciado: crea un programa en p5.js que muestre un cuadrado en la pantalla. Conecta un micro:bit y programa un botón para que, al presionarlo, cambie el color del cuadrado en p5.js. Recuerda que ya exploraste una actividad en la cuál al presionar botones pasan cosas en el programa en p5.js. ¿Recuerdas?

Nota: esta actividad puede requerir combinar dos sesiones de 30 minutos, todo depende de tu ritmo de trabajo.

Entrega: código del programa en p5.js y el código para micro:bit. Describe el proceso de conexión y comunicación entre ambos dispositivos.

🚀 Tu solución:

Cuadrado en pantalla que cambia de color en el micro bit

codigo p5

let port;
let connectBtn;
function setup() {
createCanvas(400, 400);
background(220);
port = createSerial();
connectBtn = createButton('Connect to micro:bit');
connectBtn.position(80, 300);
connectBtn.mousePressed(connectBtnClick);
let sendBtn = createButton('Send Love');
sendBtn.position(220, 300);
sendBtn.mousePressed(sendBtnClick);
fill('white');
ellipse(width / 2, height / 2, 100, 100);
}
function draw() {
if(port.availableBytes() > 0){
let dataRx = port.read(1);
if(dataRx == 'A'){
fill('red');
}
else if(dataRx == 'B'){
fill('yellow');
}
else{
fill('green');
}
background(220);
rect(width / 2, height / 2, 100, 100);
fill('black');
text(dataRx, width / 2, height / 2);
}
if (!port.opened()) {
connectBtn.html('Connect to micro:bit');
}
else {
connectBtn.html('Disconnect');
}
}
function connectBtnClick() {
if (!port.opened()) {
port.open('MicroPython', 115200);
} else {
port.close();
}
}
function sendBtnClick() {
port.write('h');
}

codigo micro bit

from microbit import *
uart.init(baudrate=115200)
display.show(Image.BUTTERFLY)
while True:
if button_a.is_pressed():
uart.write('A')
sleep(500)
if button_b.is_pressed():
uart.write('B')
sleep(500)
if accelerometer.was_gesture('shake'):
uart.write('C')
sleep(500)
if uart.any():
data = uart.read(1)
if data:
if data[0] == ord('h'):
display.show(Image.HEART)
sleep(500)
display.show(Image.HAPPY)

similar a la actividad 7 el microbit detecta la presion de botones mediante sus sensores y activa el cambio de color en la imagen generada, la unica diferencia es que se cambia el circulo por un cuadrado mediante un

rect(width / 2, height / 2, 100, 100);

Actividad 11

Control de movimiento con micro:bit

Enunciado: crea un programa en p5.js que muestre un círculo en la pantalla. Utiliza los botones A y B para controlar la posición en x del círculo en el canvas de p5.js.

Nota: Esta actividad puede requerir combinar dos sesiones de 30 minutos.

Entrega: Código del programa en p5.js y el código para micro:bit. Describe cómo es posible mapear los botones al movimiento del círculo.

🚀 Tu solución:

Programa en j5 que muestre un círculo en la pantalla. Utiliza los botones A y B para controlar la posición en x del círculo en el canvas de p5.js.

let xPos;
function setup() {
createCanvas(400, 400);
xPos = width / 2; // Posición inicial del círculo en el centro
}
function draw() {
background(220);
// Dibujar el círculo
fill(0, 102, 255);
ellipse(xPos, height / 2, 50, 50);
}
// Conectar el micro:bit y recibir datos
function keyPressed() {
if (key === 'A') {
xPos -= 10; // Mover a la izquierda
} else if (key === 'B') {
xPos += 10; // Mover a la derecha
}
}

codigo para microbit

from microbit import *
while True:
if button_a.is_pressed():
uart.write("A\n") # Enviar 'A' si se presiona el botón A
sleep(200) # Pequeña pausa para evitar múltiples pulsaciones rápidas
if button_b.is_pressed():
uart.write("B\n") # Enviar 'B' si se presiona el botón B
sleep(200)

El micro:bit detecta los botones

Cuando presionas el botón A, el micro:bit envía una señal con la letra “A”. Cuando presionas el botón B, el micro:bit envía una señal con la letra “B”. El micro:bit envía estos datos a la computadora

La computadora recibe estas letras a través del puerto serie (que es como un canal de comunicación). p5.js lee los datos y mueve el círculo

p5.js está constantemente revisando si recibe una “A” o una “B”. Si recibe una “A”, reduce la posición en X del círculo (moviéndolo a la izquierda). Si recibe una “B”, aumenta la posición en X del círculo (moviéndolo a la derecha).

Actividad 12

Generando de imágenes en micro:bit

Enunciado: crea un programa en p5.js que permita seleccionar 4 imágenes diferentes en el micro:bit.

Entrega: código del programa en p5.js y el código para micro:bit. Describe cómo solucionaste el problema.

🚀 Tu solución:

crea un programa en p5.js que permita seleccionar 4 imágenes diferentes en el micro:bit.

let images = [];
let currentImage = 0;
function preload() {
images[0] = loadImage("img1.jpg"); // Reemplaza con tus imágenes
images[1] = loadImage("img2.jpg");
images[2] = loadImage("img3.jpg");
images[3] = loadImage("img4.jpg");
}
function setup() {
createCanvas(400, 400);
noLoop(); // Solo dibuja cuando cambia la imagen
// Conectar con el micro:bit usando Web Serial API
navigator.serial.requestPort().then(port => {
port.open({ baudRate: 115200 }).then(() => {
let reader = port.readable.getReader();
readLoop(reader);
});
});
}
function draw() {
background(220);
image(images[currentImage], 50, 50, 300, 300);
}
// Función para leer los datos del micro:bit
async function readLoop(reader) {
while (true) {
const { value, done } = await reader.read();
if (done) break;
let data = new TextDecoder().decode(value).trim();
if (data === "1") currentImage = 0;
else if (data === "2") currentImage = 1;
else if (data === "3") currentImage = 2;
else currentImage = 3; // Imagen por defecto
redraw();
}
}

codigo microbit

from microbit import *
uart.init(baudrate=115200) # Habilita la comunicación serial
while True:
if button_a.is_pressed() and button_b.is_pressed():
uart.write("3\n") # Enviar "3" si se presionan A y B juntos
elif button_a.is_pressed():
uart.write("1\n") # Enviar "1" si se presiona A
elif button_b.is_pressed():
uart.write("2\n") # Enviar "2" si se presiona B
else:
uart.write("0\n") # Enviar "0" si no se presiona nada
sleep(200) # Pausa para evitar envíos rápidos

Cómo solucioné el problema de seleccionar imágenes con el micro:bit en p5.js

Solucioné el problema haciendo que el micro:bit enviara un número por el puerto serie según el botón presionado (A, B o ambos). En p5.js, usé la Web Serial API para recibir estos datos y actualizar la imagen mostrada en pantalla. Dependiendo del número recibido, cambié la imagen usando image() y redraw(), permitiendo que los botones del micro:bit actúen como un control remoto para seleccionar imágenes en la web.

Consolidación y metacognición

El objetivo de esta fase (REFLECT) es promover la metacognición, la autoevaluación y la conexión del aprendizaje con las metas personales y profesionales. Consolidar el conocimiento adquirido sobre Diseño Generativo y su aplicación en sistemas físicos interactivos.

Actividad 13

Análisis del proceso de aprendizaje

Enunciado: describe tu proceso de aprendizaje durante esta unidad. ¿Qué te resultó más fácil? ¿Qué te resultó más difícil? ¿Qué estrategias utilizaste para superar las dificultades? ¿Cómo te sentiste durante el proceso?

Entrega: una reflexión sobre el proceso de aprendizaje personal, incluyendo las facilidades, dificultades, estrategias y emociones experimentadas.

🚀 Tu solución:

PROCESO DE APRENDIZAJE

El proceso de aprender los conceptos más básicos hasta ahora ha sido bastante agradable, gracias a la metodología empleada en el curso y a la claridad en las explicaciones del docente. Esto permite comprender con facilidad qué hacer en cada etapa del aprendizaje, ya que la estructura de las lecciones está diseñada de manera progresiva, asegurando que cada nuevo conocimiento se construya sobre una base sólida. Además, el ambiente de estudio ha sido muy favorable, lo que ha hecho que el proceso de aprendizaje sea más ameno y llevadero.

En cuanto al uso del Micro:bit, fue muy interesante volver a interactuar con este dispositivo, especialmente porque ya tenía experiencia previa tanto con Micro:bit como con Arduino. Gracias a esto, las actividades resultaron bastante sencillas para mí, ya que muchos de los conceptos trabajados eran similares a los que había utilizado antes. Sin embargo, lo único que representó un verdadero desafío fueron algunas secciones del código, ya que estaban escritas en un lenguaje de programación con el que no estaba muy familiarizado. A pesar de ello, con el análisis y la práctica constante, el código se fue volviendo más comprensible con el tiempo. También fue útil el apoyo de compañeros y la posibilidad de consultar diferentes recursos en línea, lo que me permitió reforzar mi comprensión y mejorar mis habilidades en este nuevo lenguaje.

En general, fue una experiencia de aprendizaje muy enriquecedora y satisfactoria. No solo fortalecí mis conocimientos previos, sino que también adquirí nuevas habilidades que seguramente serán útiles en el futuro. Además, la oportunidad de trabajar con dispositivos como el Micro:bit me permitió recordar lo versátiles y prácticos que pueden ser para el aprendizaje de la programación y la electrónica. Sin duda, este curso ha sido un espacio de crecimiento y exploración en el que cada desafío ha representado una oportunidad para seguir mejorando.

Actividad 14

Conexión con el objetivo de la unidad

Enunciado: retoma el objetivo de la unidad: “¿Este curso para qué me sirve?”. Con base en lo aprendido en esta unidad, responde a esta pregunta desde tu perspectiva personal y profesional. ¿Cómo se relaciona el contenido de la unidad con tus intereses y aspiraciones en el campo del entretenimiento digital?

Entrega: una respuesta argumentada a la pregunta “¿Este curso para qué me sirve?”, conectando el contenido de la unidad con las metas personales y profesionales.

🚀 Tu solución:

¿Este curso para qué me sirve?

Este curso me sirve como una introducción fundamental al mundo de los sistemas físicos interactivos, proporcionando las bases necesarias para comprender cómo la tecnología puede integrarse en experiencias interactivas. A lo largo de esta primera unidad, aprendí sobre P5.js, Java, Micro:bit y, en general, los conceptos básicos relacionados con los sistemas físicos interactivos. Si bien el contenido fue introductorio, fue una oportunidad valiosa para familiarizarme con herramientas y dispositivos que pueden tener aplicaciones importantes en el desarrollo de proyectos dentro del campo del entretenimiento digital.

Desde una perspectiva personal, este curso me ha permitido fortalecer mi comprensión sobre la interactividad entre el software y el hardware, lo cual es esencial para la creación de experiencias envolventes en videojuegos y otras formas de entretenimiento digital. Explorar P5.js me permitió conocer una herramienta versátil para el diseño visual y la programación creativa, mientras que Micro:bit me ayudó a entender cómo los sensores y actuadores pueden utilizarse para generar respuestas dinámicas. Estos conocimientos son fundamentales para el desarrollo de proyectos interactivos que combinan arte, programación y tecnología.

Actividad 15

Autoevaluación de las actividades APPLY

Enunciado: revisa las actividades de la fase APPLY y evalúa tu propio desempeño en cada una de ellas. ¿Qué aprendiste en cada actividad? ¿Qué podrías haber hecho mejor? ¿Qué habilidades necesitas fortalecer?

Entrega: Una tabla de autoevaluación de las actividades APPLY, incluyendo una breve descripción del aprendizaje, áreas de mejora y habilidades a fortalecer.

🚀 Tu solución:

ActividadTemaAprendí
07Diseño Generativo en Entretenimiento DigitalCómo el diseño generativo se aplica en videojuegos mediante generación procedural para crear mundos dinámicos y únicos.
08Conexión con sistemas físicosCómo combinar diseño generativo con dispositivos físicos para mejorar la interactividad en videojuegos.
09Generando patrones visuales en p5.jsCómo usar funciones matemáticas como sin() y random() para generar patrones visuales dinámicos en p5.js.
10Interacción con micro:bitCómo conectar micro:bit con p5.js para modificar elementos gráficos en tiempo real mediante entradas físicas.
11Control de movimiento con micro:bitCómo usar los botones A y B del micro:bit para manipular la posición de un objeto en un entorno visual interactivo.
15Comunicación entre micro:bit y Johnny-FiveCómo funcionan las conexiones entre micro:bit y Johnny-Five, además de cómo adaptar un código para diferentes situaciones según las necesidades del sistema.

Actividad 16

Proyección a futuro

Enunciado: ¿Cómo piensas aplicar lo aprendido en esta unidad en futuros proyectos? Describe una idea de proyecto que te gustaría desarrollar utilizando Diseño Generativo y sistemas físicos interactivos. ¿Qué nuevos conocimientos o habilidades necesitarías adquirir para llevar a cabo este proyecto?

Entrega: una descripción de una idea de proyecto futuro que integre los conocimientos de la unidad, incluyendo los nuevos conocimientos o habilidades necesarios para su desarrollo.

🚀 Tu solución:

Idea de proyecto implementando el uso del diseño generativo y los sistemas fisicos interactivos

Una idea que me gustaría desarrollar es un videojuego inspirado en Super Meat Boy, donde el jugador deba superar niveles extremadamente difíciles diseñados para ser frustrantes y desafiantes. Sin embargo, a diferencia de los juegos convencionales que dependen únicamente del teclado y el ratón, este proyecto integraría un Micro:bit como parte esencial del control del juego. Mi intención es que el juego traiga su propio dispositivo Micro:bit y que los jugadores deban utilizar sus funciones en momentos específicos de los niveles para avanzar.

Por ejemplo, podría haber situaciones en las que el jugador necesite inclinar el Micro:bit para cambiar la gravedad, presionar botones físicos para activar plataformas o incluso utilizar el acelerómetro para ejecutar movimientos precisos. Sin embargo, esto no reemplazaría el uso del teclado y el ratón, sino que se combinaría con ellos, aumentando el nivel de concentración y coordinación necesarios para superar los desafíos del juego.

¿Qué nuevos conocimientos o habilidades necesitarías adquirir para llevar a cabo este proyecto?

Necesito aprender a manejar la comunicación entre p5.js y Micro:bit de manera eficiente, asegurándome de que los datos se transmitan en tiempo real sin retrasos o errores.

tambien Explorar cómo aplicar Diseño Generativo para la creación de niveles que se ajusten dinámicamente a la forma en que el jugador usa el Micro:bit y Investigar algoritmos de generación de niveles y cómo combinarlos con el input del jugador.