Práctica 1.1.a: Relación software-hardware con Tinkercad
P1.1.a - Relación software-hardware con Tinkercad¶
En esta práctica montarás y simularás un circuito con Arduino, un botón y un LED. Al pulsar el botón, el LED alternará entre apagado y encendido. Después relacionarás lo que observas con las instrucciones del programa, el procesador, la memoria y los periféricos. Esta actividad se centra en Tinkercad.
1. Objetivos¶
- Identificar el botón como entrada y el LED como salida de un sistema programable.
- Interpretar cómo el programa lee el botón, detecta una pulsación y cambia el estado del LED.
- Relacionar el programa con el procesador, la memoria y los periféricos, distinguiendo lo observable en la simulación de lo que solo puede inferirse.
2. Relación con RA y criterios de evaluación¶
| Código | Descripción |
|---|---|
| RA 1 | Reconoce los elementos y herramientas que intervienen en el desarrollo de un programa informático, analizando sus características y las fases en las que actúan hasta llegar a su puesta en funcionamiento. |
| CE 1.a | Se ha reconocido la relación de los programas con los componentes del sistema informático: memoria, procesador, periféricos, entre otros. |
El criterio principal es CE 1.a: la actividad permite observar la relación entre el programa, el microcontrolador y los dispositivos de entrada y salida.
3. Requisitos y recursos¶
- Un navegador actualizado, conexión a Internet y acceso a Tinkercad Circuits. Si el circuito compartido no permite editarse, crea una copia o un circuito nuevo.
- Una placa Arduino Uno y un pulsador. Si utilizas un LED externo, necesitarás también un LED y una resistencia de 220 Ω. Para que la entrada no quede flotante, utiliza una resistencia de 10 kΩ como pull-down para el pulsador. Esta parte ya se proporciona en el circuito compartido.
- La simulación compartida del circuito en Tinkercad y el vídeo de explicación de Arduino.
- La teoría 1.1. Relación entre software y hardware.
- Conocimientos previos básicos: distinguir una entrada de una salida y reconocer que un programa contiene instrucciones que ejecuta un procesador.
4. Pasos a seguir¶
4.1. Preparar el circuito y ejecutar el programa¶
-
Abre la simulación compartida. Si no puedes editarla, crea un circuito nuevo y añade una placa Arduino Uno, un pulsador y un LED. Puedes usar el LED integrado de la placa (pin 13) o un LED externo.
-
Conecta el pulsador para que el pin digital 7 tenga un nivel definido: conecta un terminal del pulsador a 5 V y el otro al pin 7; conecta una resistencia de 10 kΩ entre el pin 7 y GND. Así, el pin lee LOW (0) cuando no pulsas y HIGH (1) al pulsar. En los pulsadores de cuatro patas, utiliza terminales de lados opuestos del interruptor.
Para el LED externo, conecta el pin 13 a la resistencia de 220 Ω, la resistencia al ánodo (pata larga) del LED y el cátodo (pata corta) a GND. La resistencia limita la corriente. No conectes el LED directamente al pin sin resistencia.
-
Abre el editor de código de Arduino y pega el siguiente programa. Comprueba que las conexiones corresponden a los pines definidos (
LEDen 13 yBOTONen 7).// Alterna el LED entre encendido y apagado con cada pulsación const int LED = 13; const int BOTON = 7; int estadoBoton = 0; // Lectura actual del botón int estadoLED = 0; // 0: apagado; 1: encendido int estadoAnteriorBoton = 0; // Lectura del botón en la vuelta anterior void setup() { pinMode(LED, OUTPUT); pinMode(BOTON, INPUT); } void loop() { estadoBoton = digitalRead(BOTON); // Actúa solo al detectar el paso de LOW a HIGH if ((estadoBoton == HIGH) && (estadoAnteriorBoton == LOW)) { estadoLED = 1 - estadoLED; delay(10); } estadoAnteriorBoton = estadoBoton; if (estadoLED == 1) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } }La pausa de 10 ms del ejemplo es breve y no constituye una solución completa para eliminar el rebote de todos los pulsadores físicos. En esta actividad se mantiene el programa proporcionado para analizar su comportamiento.
-
Inicia la simulación. Pulsa y suelta el botón varias veces. Comprueba que cada pulsación completa alterna el LED entre apagado y encendido, y que mantener el botón pulsado no lo hace alternar continuamente.
-
Si el LED no responde, detén la simulación y revisa, en este orden, que la resistencia pull-down une el pin 7 con GND, que el pulsador también conecta el pin 7 con 5 V al pulsarlo, que el LED tiene la polaridad correcta y que el programa usa los mismos pines que el circuito. Reanuda la simulación cuando hayas corregido el problema.
4.2. Relacionar la simulación con el programa y el hardware¶
-
Sigue las instrucciones relevantes del programa:
digitalRead(BOTON)consulta la entrada; la condición compara la lectura actual con la anterior;estadoLED = 1 - estadoLEDalterna el estado; ydigitalWrite(LED, ...)aplica el valor a la salida. -
Completa un registro de al menos tres pulsaciones. Anota el valor lógico del botón en reposo y al pulsarlo, el valor de
estadoLEDtras cada pulsación y lo que observas en el LED.Acción Lectura del botón estadoLEDdespués de la acciónLED observado Inicio, sin pulsar Primera pulsación Segunda pulsación Tercera pulsación -
Explica el recorrido de la información: el pulsador cambia la señal del pin 7; el microcontrolador ejecuta repetidamente
loop(), lee el pin y actualiza la salida del pin 13. En este programa la entrada se consulta mediante sondeo en el bucle; no se utiliza una interrupción. -
Distingue los elementos que la simulación muestra directamente —el circuito, la ejecución y el estado del LED— de los que debes explicar a partir del modelo. En una placa real, el programa compilado se conserva en memoria flash y las variables globales, como
estadoLEDyestadoAnteriorBoton, ocupan memoria SRAM mientras se ejecuta el programa. Tinkercad no muestra necesariamente esos detalles internos como valores de memoria.
5. Comprobaciones de finalización¶
- El circuito tiene una conexión de entrada estable: el pin 7 lee LOW en reposo y HIGH al pulsar el botón.
- La simulación se ejecuta y cada pulsación completa cambia una vez el estado del LED.
- El registro refleja al menos tres pulsaciones y concuerda con el comportamiento observado.
- Puedes identificar la instrucción que lee el botón, la condición que detecta la pulsación y la instrucción que controla el LED.
- Puedes explicar el papel del microcontrolador, la memoria y los periféricos sin afirmar que Tinkercad muestra todos los detalles internos de una placa real.
6. Ejercicios y entregables¶
- 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:
- 1.a. Ejecución en el procesador: ¿Qué hace el procesador para ejecutar un programa?
- 1.a.1. Explica las fases de búsqueda de una instrucción, decodificación y ejecución.
- 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.
- 1.a.3. ¿Puedes ver cada fase interna en Tinkercad?
- 1.b. Memoria y estado de los componentes: ¿Qué información debe conservar el programa mientras funciona?
- 1.b.1. Explica qué recuerdan
estadoBoton,estadoAnteriorBotonyestadoLED. - 1.b.2. En un Arduino Uno, ¿dónde se almacena el programa?
- 1.b.3. ¿Dónde se mantienen normalmente esas variables?
- 1.b.4. Aclara si el botón escribe directamente en la RAM o si el microcontrolador lee primero la señal del pin.
- 1.b.1. Explica qué recuerdan
- 1.c. Comunicación con los periféricos: ¿Cómo llega al microcontrolador la señal del botón?
- 1.c.1. ¿Cómo llega al LED la orden de encendido o apagado?
- 1.c.2. Identifica los pines 7 y 13 y las funciones del programa que leen y escriben en ellos.
- 1.c.3. ¿El código utiliza interrupciones o consulta repetidamente el botón desde
loop()?
- 1.d. Interacción entre procesador, memoria y periféricos: Describe, en orden, qué ocurre desde que pulsas el botón hasta que cambia el LED.
- 1.d.1. En tu explicación, señala qué parte corresponde al hardware y qué decisiones están definidas por el software.
- 1.e. Cambios en los datos durante la ejecución: ¿Qué valores cambian al pulsar y soltar el botón?
- 1.e.1. Explica cómo se actualizan las variables de estado.
- 1.e.2. ¿Qué ocurre con esos datos al reiniciar o apagar la placa?
- 1.e.3. ¿Qué información interna no muestra directamente la simulación?
- 1.f. Función de las instrucciones del software: ¿Qué sentencias o funciones permiten leer la entrada, detectar una pulsación nueva, decidir el estado del LED y controlar la salida?
- 1.f.1. ¿Qué sentencias o funciones permiten leer la entrada?
- 1.f.2. ¿Qué parte del programa detecta una pulsación nueva?
- 1.f.3. ¿Qué sentencia decide el siguiente estado lógico del LED?
- 1.f.4. ¿Qué sentencia controla la salida conectada al LED?
- 1.f.5. Explica cómo el compilador transforma el programa para que el procesador pueda ejecutar esas operaciones y relacionarse con el hardware.
- 1.g. Simulación y ordenador real: ¿Qué relación entre procesador, memoria, programa y entrada/salida representa esta actividad?
- 1.g.1. ¿Qué aspectos son comunes a un ordenador real y cuáles son diferentes o están simplificados en Arduino y Tinkercad?
- 1.a. Ejecución en el procesador: ¿Qué hace el procesador para ejecutar un programa?
- 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.
- Entrega un documento 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.
7. Solución orientativa¶
-
El código Arduino se compila; el procesador no ejecuta literalmente el texto fuente, sino las instrucciones de máquina generadas. Las ejecuta mediante el ciclo de búsqueda, decodificación y ejecución. En este ejemplo, ese modelo se relaciona con la lectura del pin, la evaluación de la condición y la actualización de la salida. Tinkercad permite observar el comportamiento del circuito y del LED, pero no muestra necesariamente cada fase interna del procesador.
-
En un Arduino Uno, el programa compilado se conserva en memoria Flash. Los datos cambiantes del programa, como las variables globales
estadoBoton,estadoAnteriorBotonyestadoLED, se mantienen normalmente en SRAM durante la ejecución; el procesador también utiliza registros para operar. El botón no escribe directamente en la RAM: cambia el nivel eléctrico del pin 7 y el microcontrolador lee ese nivel a través de la entrada digital. -
El pulsador es la entrada y el LED es la salida. La resistencia pull-down mantiene el pin 7 en LOW cuando no se pulsa; al pulsarlo, el pin pasa a HIGH.
digitalRead(BOTON)consulta ese pin ydigitalWrite(LED, ...)establece la salida del pin 13. El programa lee el botón repetidamente desdeloop(); no configura una interrupción. -
Al pulsar, cambia la señal de entrada del pin 7. El microcontrolador la lee, el programa compara la lectura actual con la anterior y, al detectar el paso de LOW a HIGH, invierte
estadoLED. Después,digitalWriteaplica el nivel correspondiente al pin 13 y el LED cambia de estado. El circuito y los pines son hardware; la condición y la decisión de alternar están definidas por el software. -
estadoBotonrefleja la lectura actual,estadoAnteriorBotonpermite compararla con la vuelta anterior yestadoLEDconserva el estado lógico que debe mostrarse. La SRAM es volátil: al apagar o reiniciar la placa, los valores se pierden o se inicializan de nuevo. Tinkercad muestra el comportamiento externo, pero no necesariamente los valores internos de memoria. -
digitalRead(BOTON)obtiene la lectura de entrada; la condición conestadoAnteriorBotondetecta una pulsación nueva;estadoLED = 1 - estadoLEDdecide el siguiente estado; ydigitalWrite(LED, HIGH/LOW)controla la salida. Son funciones y sentencias del programa fuente que, tras la compilación, se traducen en operaciones ejecutadas por el procesador. El software proporciona la secuencia y la lógica para relacionarse con los periféricos. -
La simulación representa la ejecución de instrucciones, el uso de datos temporales y la comunicación con entradas y salidas. Esos conceptos también aparecen en ordenadores reales, pero Arduino Uno es un microcontrolador y no un ordenador de sobremesa: sus componentes, memoria y periféricos son distintos, y Tinkercad simplifica tanto el funcionamiento interno como algunos detalles eléctricos. Si el LED empieza apagado, tres pulsaciones completas lo dejan encendido, apagado y encendido, respectivamente.