¿Tienes ya el buscaluz montado pero no consigues que se mueva? ¿Quieres programar algo diferente? Sigue leyendo si quieres aprender paso a paso cómo programar tu buscaluz.
El programa que vamos a analizar a continuación es un ejemplo de búsqueda de máximos. Como su nombre indica, su función es buscar entre muchos valores y encontrar cuál es el valor más grande. Vamos a ver el programa:
¿Qué te parece el programa? Si has realizado el curso de programación con bitbloq seguro que te resulta pan comido. Pero si no es así, vamos a verlo en profundidad.
¿Recuerdas lo que son las variables? En este programa de búsqueda de máximos vamos a usar dos variables donde guardaremos: la luz máxima y el ángulo donde se encuentra esta luz (llamado en el programa “angulo_maximo“).
Como sabemos, los programas se repiten en bucle. Cada vez que el programa llegue al final y vuelva a empezar, hay que borrar los datos obtenidos en la búsqueda anterior. A esto se le llama inicialización del programa. En nuestro caso, las variables “luz_maxima” y “angulo_maximo” se inician a “0”.
En cambio, la variable “angulo” le daremos un valor de “20” ya que ésta será la primera posición que tome el buscaluz para empezar su baño de sol.
Tras las variables tenemos un bucle “Si…Ejecutar” que tiene como condición pulsar el botón. El buscaluz estará en reposo hasta que ejecutemos este bucle.
Nota: Si tienes un pulsador de “Mi primer kit de Robótica”, asegúrate de cambiar el 1 por un 0.
Vamos ahora con la parte importante del programa: El movimiento del buscaluz y su búsqueda de máximos
Se trata de un bucle “mientras” que tiene como condición para repetirse que “angulo” sea menor o igual que 160. (Para recordar cómo funcionan los bucles “mientras”, pincha aquí)
Lo que haremos será recorrer el rango de posiciones de 20 a 160 grados parándonos de 10 en 10. Fíjate en esta cuenta: 20,30,40… …120,140,160.
En cada parada de esta cuenta lo primero que hacemos es colocar el miniservo en esa posición.
A continuación, hace una lectura de la luz ambiente y empieza la magia: El bucle “Si…Ejecutar” comprueba si la luz que acaba de medir es mayor que la “luz_maxima” que teníamos guardada. Si esto es correcto ¡habremos encontrado un nuevo máximo!
Si encontramos un nuevo máximo: Recordamos cuál es el nuevo valor de “luz_maxima” y recordamos la posición en la que se ha encontrado (“angulo_maximo”).
Hayamos encontrado o no un nuevo máximo: sumamos 10 a la variable “angulo” y repetimos el proceso hasta llegar a la parada final de 160.
Gracias al bucle “mientras”, el proceso se repetirá 15 veces (15 paradas) antes de continuar:
Una vez acabada la búsqueda, movemos el buscaluz a ese “angulo_maximo” que hemos encontrado. Y aquí permanecerá quieto tomando el sol en reposo hasta que volvamos a apretar el botón de nuevo.
Si os habéis quedado con ganas de más, ¿por qué no probáis a mejorar el buscaluz? Te dejo unas ideas para que intentes por tu cuenta:
- Ponerle el zumbador para hacer sonidos cuando encuentre un nuevo máximo.
- Ponerle la pantalla LCD para ver en todo momento estos valores.
- Moverlo con el potenciómetro o la invención que se os ocurra.
- Y si os sentís realmente osados, podéis probar a montar el Súper Buscaluz, que consta de dos miniservos pegados uno a otro para poder mover la placa solar mucho más. Podéis obtener alguna pista de como usar dos servos unidos en los comentarios del bq Invento “Memoria” .
Hagáis lo que hagáis, contádmelo en los comentarios, y lo mismo si tenéis alguna duda.
Bueno, acabas de crear un programa de búsqueda de máximos. Seguro que ahora entiendes el porqué utilizar una variable más es tan necesario para almacenar los máximos que encontremos. Espero que lo hayas pasado bien y que tu buscaluz te oriente siempre hacia al lado luminoso de la fuerza…