UD 1 - P1.1.a: Resultado orientativo de Tinkercad
Resultado orientativo de la práctica P1.1.a¶
Este documento propone respuestas posibles para contrastar el trabajo. No es una solución cerrada: se pueden utilizar otras palabras y otros ejemplos si la explicación es coherente con el código, el circuito y las observaciones de la simulación.
Repositorio de partida¶
Esta propuesta se basa en la plantilla 2627_EDES_u1.1_arduino. El repositorio de cada estudiante puede contener respuestas, capturas y observaciones propias, por lo que no tiene que coincidir literalmente con este resultado orientativo.
Ejercicio 1: responde las siete preguntas sobre software y hardware¶
Enunciado: Responde con tus palabras a estas siete preguntas. Basa las respuestas en el circuito, el código y el registro de pulsaciones; distingue lo que observas directamente en Tinkercad de lo que explicas a partir del modelo del microcontrolador.
Pregunta 1.a: ejecución del código en el procesador¶
Pregunta 1.a: ¿Qué hace el procesador para ejecutar un programa?
Respuesta orientativa: El código escrito en Arduino se compila; el microcontrolador ejecuta las instrucciones de máquina generadas, no el texto fuente directamente. De forma general, la CPU obtiene una instrucción, la interpreta y realiza la operación indicada.
Subpregunta 1.a.1: Explica las fases de búsqueda de una instrucción, decodificación y ejecución.
Respuesta orientativa: El ciclo de instrucción suele describirse en tres fases: el procesador obtiene la instrucción (búsqueda), interpreta qué operación debe realizar (decodificación) y lleva a cabo esa operación (ejecución).
Subpregunta 1.a.2: Relaciona esas fases con las acciones de este programa: leer el botón, evaluar la condición, actualizar el estado y escribir en la salida.
Respuesta orientativa: La lectura se realiza mediante digitalRead(BOTON); después se evalúa la condición que compara la lectura actual con la anterior; si detecta una pulsación, se actualiza estadoLED; finalmente, digitalWrite modifica la salida del pin 13.
Subpregunta 1.a.3: ¿Puedes ver cada fase interna en Tinkercad?
Respuesta orientativa: No se observa cada operación interna del procesador. Tinkercad permite ver el circuito, la ejecución simulada y el estado del LED; el ciclo interno se explica a partir del modelo del microcontrolador.
Pregunta 1.b: memoria y estado del botón y del LED¶
Pregunta 1.b: ¿Qué información debe conservar el programa mientras funciona?
Respuesta orientativa: Debe conservar, entre otros datos, la lectura actual del botón, la lectura anterior para detectar una pulsación nueva y el estado lógico que se quiere mantener en el LED.
Subpregunta 1.b.1: Explica qué recuerdan estadoBoton, estadoAnteriorBoton y estadoLED.
Respuesta orientativa:
estadoBotonrepresenta la lectura actual del pin.estadoAnteriorBotonconserva la lectura de la vuelta anterior deloop().estadoLEDrecuerda si el programa debe mantener el LED apagado (0) o encendido (1).
Subpregunta 1.b.2: En un Arduino Uno, ¿dónde se almacena el programa?
Respuesta orientativa: El programa compilado se conserva en memoria Flash.
Subpregunta 1.b.3: ¿Dónde se mantienen normalmente las variables globales durante la ejecución?
Respuesta orientativa: Se mantienen normalmente en memoria SRAM, aunque el procesador también trabaja con registros.
Subpregunta 1.b.4: Aclara si el botón escribe directamente en la RAM o si el microcontrolador lee primero la señal del pin.
Respuesta orientativa: El botón no escribe directamente en la RAM. Al pulsarlo cambia el nivel eléctrico de la entrada digital; el microcontrolador lee ese nivel mediante el pin 7 y el programa asigna el resultado a estadoBoton. Tinkercad no tiene por qué mostrar los valores internos de la SRAM.
Pregunta 1.c: comunicación con los periféricos¶
Pregunta 1.c: ¿Cómo llega al microcontrolador la señal del botón?
Respuesta orientativa: El pulsador actúa como entrada. Al pulsarlo, cambia el nivel eléctrico que recibe el microcontrolador por el pin 7.
Subpregunta 1.c.1: ¿Cómo llega al LED la orden de encendido o apagado?
Respuesta orientativa: El programa establece el nivel de salida del pin 13 y el LED responde a esa señal. El LED puede ser el integrado en la placa o uno externo conectado con la resistencia adecuada.
Subpregunta 1.c.2: Identifica los pines 7 y 13 y las funciones del programa que leen y escriben en ellos.
Respuesta orientativa: Con la resistencia pull-down, el pin 7 lee LOW cuando el botón está suelto y HIGH cuando se pulsa. digitalRead(BOTON) consulta ese pin. digitalWrite(LED, HIGH) o digitalWrite(LED, LOW) establece la salida del pin 13. El LED puede ser el integrado en la placa o uno externo conectado con la resistencia adecuada.
Subpregunta 1.c.3: ¿El código utiliza interrupciones o consulta repetidamente el botón desde loop()?
Respuesta orientativa: Consulta repetidamente el botón desde loop(); este programa no configura una interrupción para el botón.
Pregunta 1.d: interacción entre procesador, memoria y periféricos¶
Pregunta 1.d: Describe, en orden, qué ocurre desde que pulsas el botón hasta que cambia el LED.
Respuesta orientativa:
Un recorrido posible de una pulsación es:
- Al pulsar, el circuito cambia la señal eléctrica que llega al pin 7.
- El microcontrolador ejecuta
digitalRead(BOTON)y el programa guarda la lectura enestadoBoton. - La condición compara la lectura actual con
estadoAnteriorBoton. Si detecta el paso de LOW a HIGH, el programa invierteestadoLEDmedianteestadoLED = 1 - estadoLED. - El programa actualiza
estadoAnteriorBotony utilizadigitalWritepara aplicar el nuevo estado al pin 13. - El LED responde a la señal de salida.
Subpregunta 1.d.1: En tu explicación, señala qué parte corresponde al hardware y qué decisiones están definidas por el software.
Respuesta orientativa: El botón, los pines, el microcontrolador y el LED pertenecen al hardware. La secuencia de lectura, comparación y decisión está definida por el software. La memoria conserva datos que el programa necesita entre iteraciones; el pin de entrada proporciona la señal física que se lee.
Pregunta 1.e: cambios en los datos durante la ejecución¶
Pregunta 1.e: ¿Qué valores cambian al pulsar y soltar el botón?
Respuesta orientativa:
Con el circuito descrito y el programa sin modificar, el comportamiento esperado es:
| Acción | Lectura de pin 7 | estadoBoton |
estadoAnteriorBoton después de la vuelta |
estadoLED |
LED |
|---|---|---|---|---|---|
| Inicio, botón suelto | LOW (0) |
0 |
0 |
0 |
Apagado |
| Primera pulsación | HIGH (1) |
1 |
1 |
1 |
Encendido |
| Suelta el botón | LOW (0) |
0 |
0 |
1 |
Encendido |
| Segunda pulsación | HIGH (1) |
1 |
1 |
0 |
Apagado |
| Suelta el botón | LOW (0) |
0 |
0 |
0 |
Apagado |
| Tercera pulsación | HIGH (1) |
1 |
1 |
1 |
Encendido |
Subpregunta 1.e.1: Explica cómo se actualizan las variables de estado.
Respuesta orientativa: Al pulsar, estadoBoton pasa a 1 y, si la lectura anterior era 0, estadoLED cambia entre 0 y 1. Después, estadoAnteriorBoton se actualiza con la lectura actual. Al soltar el botón, no se detecta un nuevo flanco de subida y estadoLED conserva su valor.
Subpregunta 1.e.2: ¿Qué ocurre con esos datos al reiniciar o apagar la placa?
Respuesta orientativa: Las variables de estado se mantienen en SRAM, que es volátil. Al reiniciar, las variables globales se inicializan de nuevo; al apagar la placa, se pierde su contenido.
Subpregunta 1.e.3: ¿Qué información interna no muestra directamente la simulación?
Respuesta orientativa: Tinkercad no muestra necesariamente el contenido de la SRAM, los registros internos ni todas las señales eléctricas que intervienen en una placa real.
Pregunta 1.f: función de las instrucciones del software¶
Pregunta 1.f: ¿Qué sentencias o funciones permiten leer la entrada, detectar una pulsación nueva, decidir el estado del LED y controlar la salida?
Subpregunta 1.f.1: ¿Qué sentencias o funciones permiten leer la entrada?
Respuesta orientativa: pinMode(BOTON, INPUT) configura el pin como entrada y digitalRead(BOTON) obtiene su lectura actual.
Subpregunta 1.f.2: ¿Qué parte del programa detecta una pulsación nueva?
Respuesta orientativa: La condición que compara estadoBoton con estadoAnteriorBoton detecta el cambio de LOW a HIGH.
Subpregunta 1.f.3: ¿Qué sentencia decide el siguiente estado lógico del LED?
Respuesta orientativa: estadoLED = 1 - estadoLED invierte el estado guardado: cambia de 0 a 1 o de 1 a 0.
Subpregunta 1.f.4: ¿Qué sentencia controla la salida conectada al LED?
Respuesta orientativa: digitalWrite(LED, HIGH) enciende el LED y digitalWrite(LED, LOW) lo apaga.
Subpregunta 1.f.5: Explica cómo el compilador transforma el programa para que el procesador pueda ejecutar esas operaciones y relacionarse con el hardware.
Respuesta orientativa: El entorno de Arduino compila el código fuente y genera instrucciones de máquina que ejecuta el microcontrolador. Las llamadas y sentencias del programa expresan las operaciones que debe realizar para leer la entrada, tomar una decisión y controlar la salida.
La pausa de 10 ms del código es breve y no debe confundirse con una solución completa contra el rebote de cualquier pulsador físico. En una simulación ideal el comportamiento puede ser más estable que en un circuito real.
Pregunta 1.g: relación con un ordenador real¶
Pregunta 1.g: ¿Qué relación entre procesador, memoria, programa y entrada/salida representa esta actividad?
Respuesta orientativa: La actividad muestra que el procesador ejecuta instrucciones, utiliza memoria para conservar información temporal y se comunica con dispositivos de entrada y salida. El software determina cómo leer el botón, decidir el estado del LED y controlar la salida.
Subpregunta 1.g.1: ¿Qué aspectos son comunes a un ordenador real y cuáles son diferentes o están simplificados en Arduino y Tinkercad?
Respuesta orientativa: La colaboración entre procesador, memoria, programa y entrada/salida es una idea común. Sin embargo, Arduino Uno es un microcontrolador que integra CPU, memorias y pines de entrada/salida; no equivale a un ordenador de sobremesa con su sistema operativo, memoria principal, controladores y periféricos. Tinkercad abstrae detalles de la electrónica, de la memoria y de la ejecución interna, por lo que conviene distinguir lo que muestra de lo que se infiere del modelo.
Ejercicio 2: registro de pulsaciones y captura¶
Enunciado: Completa el registro de pulsaciones de los pasos y adjunta una captura donde se vea el circuito en funcionamiento. Si no has podido acceder al circuito compartido, indica la incidencia y adjunta una captura de tu propio montaje.
Resultado posible: Los valores esperados para el registro aparecen en la tabla de la subpregunta 1.e. La captura depende del montaje de cada estudiante; debe mostrar el circuito simulado y un estado del LED coherente con la pulsación registrada. Si se ha creado un circuito propio, se explica brevemente la incidencia que impidió usar el compartido.
Ejercicio 3: documento de entrega¶
Enunciado: Entrega un documento (README.md) identificado con tu nombre, módulo, unidad y práctica. Incluye las respuestas a las siete preguntas, el registro de tres pulsaciones y la captura de la simulación. Cierra con una reflexión breve que resuma cómo colaboran el software, el procesador, la memoria y los periféricos.
Comprobación del entregable: El documento identifica a quien lo entrega e incluye las siete respuestas, el registro y la captura solicitados. La reflexión final debe relacionar el programa con la ejecución del microcontrolador, el uso de memoria y la comunicación con el botón y el LED. La redacción y el formato pueden variar.