Proyecto modelos atómicos: Diseño con Tinkercad del circuito eléctrico programado. (Actividad)

Introducción

En la actividad anterior vimos cómo podíamos conectar tres leds como si fueran electrones y encenderlos y apagarlos físicamente mediante un microinterruptor.

Tres leds que se encienden o apagan físicamente con un microinterruptor (en azul)

En esta práctica, vamos a ver cómo podemos encender y apagar cualquiera de los leds utilizando un microcontrolador (Placa Arduino) en lugar de usar un dispositivo físico como un interruptor.

Diseño control leds con Arduino

Lo primero que haremos será el diseño en Tinkercad de nuestro nuevo circuito. Busca el circuito que muestra la imagen anterior que hiciste en la primera parte de la práctica y haz una copia en Tinkercad. Puedes llamar a esta copia algo así como Leds con regleta y Arduino.

En la copia (no en el original) borra el interruptor azul y las pilas. En su lugar pones el microcontrolador o placa Arduino. Debes hacer un diseño similar al de la figura siguiente:

Leds con regleta y controlados por Arduino

La placa azul es la que contiene el microcontrolador. Esta placa se denomina Arduino UNO y sirve para hacer prototipos rápidos en electrónica. En Tinkercad puedes encontrarla en el bloque de todos los componentes:

Dónde encontrar la placa Arduino UNO en Tinkercad

Observar que mantenemos la regleta porque queremos un sistema simple para poder sustituir el microinterruptor azul por una placa controladora de forma sencilla, sin tener que cortar cables.

Funcionamiento básico placa Arduino como pila

En la placa podemos ver una serie de pines o conectores que van numerados. En el grupo superior DIGITAL podemos ver 0, 1, 2,…..hasta el 13. En principio, podríamos conectar 13 leds.

En el grupo POWER podemos ver, entre otros, un pin que pone 5V y otro que pone GND. Como GND se utiliza mucho, también hay otro pin GND en la parte superior.

Esta placa podríamos usarla como fuente de alimentación o pila (pero con poca corriente). Si conectamos el cable USB con un puerto USB del ordenador, en el pin 5V tendríamos 5 voltios y en GND tendríamos 0 voltios. Es decir, funciona como una pila de 5V. Así pues, es posible hacer un montaje como el siguiente para dejar encendido un led:

https://www.ladyada.net/learn/arduino/lesson3.html

El montaje de la fotografía corresponde a este esquema:

https://www.ladyada.net/learn/arduino/lesson3.html

Funcionamiento básico placa Arduino como microcontrolador

En el apartado anterior hemos utilizado el pin 5V para alimentar al LED. Pero este pin está siempre a 5V. Si queremos apagar el led, tendríamos que desconectar físicamente el cable rojo o cortarlo con las tijeras.

Nuestro objetivo es poder encender y apagar un led sin tener que modificar el cableado. Por ello, necesitamos utilizar unos pines que podamos poner a 5V o a 0V a voluntad. Estos son los pines digitales.

En nuestro diseño de ejemplo, hemos conectado la la patilla larga de los leds (la patilla que se conecta al voltaje positivo) a los pines digitales 3, 4 y 5. Así, cuando el pin 3 esté a 5 V encenderá el led que tiene conectado, y cuando lo ponemos a 0V el led permanecerá apagado.

Lo interesante del microcontrolador es que puede almacenar un programa de instrucciones que nosotros confeccionamos.

Veamos cómo podría ser un programa que dejara encendido el led conectado al pin 3 y apagados los leds conectados a los pines 4 y 5:

Encender led conectado al pin 3
Apagar led conectado al pin 4
Apagar led conectado al pin 5

Estas tres instrucciones que hemos escrito representan el algoritmo de un programa escrito en seudocódigo. Un seudocódigo es un conjunto de instrucciones escritas en un lenguaje que entendemos los humanos, aunque las máquinas no. Se suele utilizar de forma preliminar para aproximarse al detalle de un programa.

Programación placa Arduino

En nuestro diseño de ejemplo en Tinkercad, vamos a escribir el programa correspondiente al seudocódigo anterior pero escrito en un lenguaje que entienda el microcontrolador:

Programa básico en Arduino para encender un led

Para ello, pulsas en el botón código (en azul), selecciones Texto y en la ventana de programación copia y pega el siguiente código:

void setup()
{
  pinMode(3, OUTPUT);     // Configura el pin 3 como salida 
  pinMode(4, OUTPUT);	  // Configura el pin 4 como salida 
  pinMode(5, OUTPUT);     // Configura el pin 5 como salida
  
   
  digitalWrite(3, HIGH);  // Pone el pin3 a 5V
  digitalWrite(4, LOW);   // Pone el pin4 a 0V
  digitalWrite(5, LOW);   // Pone el pin4 a 0V
}
 
void loop()
{
   
}

Después, le das al botón Iniciar simulación. Observarás que el led conectado al pin 3 permanece encendido, mientras que los otros dos permanecen apagados.

Ejercicio 1: Haz una copia del diseño de tu proyecto en Tinkercad y añade una placa controladora Arduino de forma similar al ejemplo.

Ejercicio 2: Escribe un programa similar al ejemplo que controle los leds de tu proyecto y simula el funcionamiento.

Crear efectos dinámicos con Arduino

En el programa anterior, hemos visto que podemos encender o apagar un led de forma estática. Cada vez que queremos cambiar el estado de un led (encendido o apagado) tenemos que cambiar el programa.

Esto es así porque todas las instrucciones del programa las hemos incluido entre las llaves {} de una función denominada set up. Todas las instrucciones que coloquemos entre esas dos llaves se ejecutan de arriba a abajo y una sola vez.

Para crear efectos dinámicos, debemos poner instrucciones del programa en otra función que se denomina loop. La estructura general de un programa dinámico tendría el siguiente aspecto:

void setup() {
  // Aquí se pone el código que se ejecuta una sóla vez:

}

void loop() {
  // Aquí se pone el código que se ejecuta repetidamente:

}

Por lo tanto, entre las llaves de la función setup() colocamos las instrucciones que se van a ejecutar una sóla vez, como en el ejercicio 2.

Por otro lado, si un conjunto de instrucciones queremos que se ejecuten repetidamente, las pondremos entre las llaves de la función loop(), que significa bucle. Piensa, por ejemplo, en un semáforo. Está en bucle, es decir, que del verde pasa al amarillo y de éste al rojo, para al cabo de un tiempo empezar otra vez por el verde. Y así sucesivamente.

Las dos barritas // se utilizan para poner comentarios en el programa, pero no tienen ningún efecto.

Ejercicio 3: Haz una copia del diseño de Tinkercad que has hecho para el ejercicio 2 y crea un programa de forma que los electrones (leds) se vayan encendiendo uno a uno sucesivamente a intervalos de un segundo. Una vez hecho haz una simulación.

Si tu modelo atómico tiene tres electrones como en nuestro ejemplo, el programa podría ser así:

void setup()
{
  pinMode(3, OUTPUT);     // Configura el pin 3 como salida 
  pinMode(4, OUTPUT);	  // Configura el pin 4 como salida 
  pinMode(5, OUTPUT);     // Configura el pin 5 como salida
  
     
}
 
void loop()
{
 
  digitalWrite(3, HIGH);  // Pone el pin3 a 5V
  digitalWrite(4, LOW);   // Pone el pin4 a 0V
  digitalWrite(5, LOW);   // Pone el pin4 a 0V
  delay(1000);
  
  digitalWrite(3, LOW);  // Pone el pin3 a 0V
  digitalWrite(4, HIGH);   // Pone el pin4 a 5V
  digitalWrite(5, LOW);   // Pone el pin4 a 0V
  delay(1000);
  
  digitalWrite(3, LOW);  // Pone el pin3 a 0V
  digitalWrite(4, LOW);   // Pone el pin4 a 0V
  digitalWrite(5, HIGH);   // Pone el pin4 a 5V
  delay(1000);
  
}

¿Cómo podrías hacer que los leds se encendieran más rápidamente? Modifica el programa en Tinkercad para contestar a esta pregunta.

De esta forma, una vez construido el modelo atómico físicamente en el taller, se le puede dotar de efectos luminosos con esta placa controladora y poniendo el programa adecuado.

También es posible modificar el efecto tan solo cambiando el programa, sin tener que alterar el cableado. Puedes ver en el siguiente vídeo algunos efectos que se pueden lograr.

Diversos efectos logrados modificando el programa