sábado, 5 de septiembre de 2015

Videojuegos para padres y maestros - Minetest (XIV) - Mesecons (y 4)

Microcontroller


Bueno... atención porque ya estamos en nivel FMM(*) 

Como podéis ver, este elemento tiene cuatro conectores (que llamaremos puertos) nombrados con las letras A,B,C,D que pueden lo mismo recibir como emitir electricidad. Para conseguir tal efecto se deben programar. Para ello 'picamos' sobre el microcontroller con el botón derecho del ratón. Se nos abrirá una ventana de diálogo que nos permitirá introducir nuestro código.


Funciones básicas

Como podéis imaginar consisten en activar y desactivar los puertos con el siguiente código:

on (puerto A, puerto B, ...)     y     off (puerto A, puerto B, ...) 

Es decir, que si conectamos cuatro lámparas cada una a cada uno de los puertos, on(A) encenderá la que se encuentre conectada al puerto A y on(B, D) las conectadas a los puertos B y D.

Además se pueden concatenar, es decir podemos poner algo del tipo:   on(B,D) off(C)

Cláusula if

- DING DONG,  ¿Es la academia de inglés low-cost?
- If, if...   between, between...

Me atrevería a decir que la cláusula o instrucción if aparece en todos los lenguajes de programación de alto nivel. Su funcionamiento es muy simple:  Si pasa esto haz esto otro.

Por lo tanto podríamos poner dentro del microcontroller lo siguiente:

if (A) on(B,D) off(C);

Es decir, que si entra electricidad por el puerto A, emitiremos por B y D y dejaremos de emitir por C.

¡Mucha atención al punto y coma! 

El punto y coma nos indica hasta donde llega lo que tenemos que hacer. Si ponemos:

if (A) on(B,D); off(C)

se activarán los puertos B y D si entra electricidad por A, pero se desactivará C en todo caso.

1 + 1 = 0 y me llevo 1

Como sabéis los ordenadores lo hacen todo con 1's y 0's. De hecho lo de arriba es cómo sumaría el ordenador 1 y 1. Ahí no vamos a entrar pero es interesante saber como representan los números... para un ordenador el 0 es un 0 y el 1 es un 1, pero el 2 es 10, el 3 es 11, el 4 es 100 y el 5 es 101... o sea:


Al sagaz lector no se le habrá escapado el hecho de que las letras corresponden a los puertos del microcontroller...

Mirad esto...


Lo que vamos a intentar es que al pulsar cada botón, se enciendan las luces correspondientes y para ello nos fijaremos en la tabla que hemos puesto arriba. Es decir, vamos a intentar que al pulsar el 1 se encienda la luz D, con el 2 la C, con el 3 las luces C y D, con el 4 la A y con el 5 la A y la D.

El circuito parece enrevesado pero es muy sencillo. Ponemos un microcontroller por cada botón y hacemos los conectamos por el puerto B. Luego unimos todos los puertos A de todos los microcontroller con un cable y el cable con la luz A. Hacemos lo mismo con los puertos y luces C y D.

Deberéis usar cables con aislante para ello, Os daréis cuenta de ello nada más empezar a trabajar. Se requiere un poco de práctica, pero no os desaniméis. Otra opción sería excavar el suelo en varios pisos y que los cables fueran por el piso correspondiente para que no se unieran... pero es más trabajoso, aunque queda más limpio.

Ahora sólo nos quedaría programar los microcontroller para que enciendan las luces correspondientes:

Microcontroller 1 :  off(D) if(B) off(A,C) on(D);
Microcontroller 2 :  off(C) if(B) off(A,D) on(C);
Microcontroller 3 :  off(C,D) if(B) off(A) on(C,D);
Microcontroller 4 :  off(A) if(B) off(C,D) on(A);
Microcontroller 5 :  off(A,D) if(B) off(C) on(A,D);

Si os fijáis, todas las instrucciones empiezan con un off de las mismos puertos que activaremos. Esto es así. Si no lo pusiéramos, el puerto quedaría activo de por vida. No tiene mucho sentido lo se... pero me tenéis que creer.

El resto de off podríamos obviarlos. Pero los pongo porque queda más claro... 

Y creo que esto está quedando muy denso... así que a merendar!

De todas formas no creáis que esto va a quedar así... en la próxima entrega le vamos a dar una vuelta al microcontroller y seguiremos ampliando el ejercicio. No os lo perdáis el resultado va a ser sorprendente...

----
(*) FFM = F***ing Master of Minetest

No hay comentarios:

Publicar un comentario