Antes de hacer ejercicios, verifica el estado de la placa probando el siguiente programa. Deben encenderse todos los led
Descarga el siguiente programa en la controladora con las placas de led conectadas. Deben encenderse todos los led. Si hay alguno que no se encienda, verifica la conexión correspondiente.
high 0,1,2,3,4,5,6,7
Puedes copiar directamente el código de los ejemplos y pegarlo en el editor PICAXE.
Descripción de las instrucciones básicas que vamos a usar en esta sección de ejercicios básicos.
La instrucción high sirve para activar una salida. Hay que indicarle el número de la salida. Por ejemplo, high 5 activará la salida 5. Si tenemos conectado algo a ella como un motor, una bombilla o un led, empezará a funcionar
low sirve para desactivar una salida. Hay que indicarle el número de la salida, como en el caso de high. Por ejemplo, low 5 desconectará la salida 5, si algo conectado a ella estaba funcionando, dejará de hacerlo.
Wait sirve para esperar y al que indicarle el número de segundos que el programa esperará sin hacer nada. Por ejemplo, wait 4 estará 4 segundos sin hacer nada.
Escribe el siguiente programa en el editor.
high 0 wait 1 low 0
Descárgalo en la controladora y prueba su funcionamiento. El led conectado a la salida 0 se encenderá y un segundo después se apagará. Si desconectas la pila, volverá a ocurrir.
Escribe un programa similar pero en el que es el led 4 el que se enciende y apaga.
Escribe otro programa en el que el led 3 esté encendido 2 segundos
Prueba el siguiente programa.
high 0 wait 1 low 0 high 0 wait 1 low 0
¿Cómo crees que funcionará? Descárgalo y pruébalo.
¿Funciona como imaginabas? Eso es porque no has esperado entre low 0 y high 0. Lo que le has dicho al programa es apaga enciende sin tiempo de espera. No parece que se apague el led. Prueba esto ahora y verás como el led sí se enciende y apaga 2 veces:
high 0 wait 1 low 0 wait 1 high 0 wait 1 low 0
Escribe un programa que funcione como este: Pincha en reset para reiniciarlo (en tu placa lo que tienes que hacer es quitar la pila y volver a conectarla para reiniciarlo)
Obserrva que la espera entre el 1 y el 2 es mayor que las otras
Escribe un programa que funcione como el siguiente ejemplo. Pincha en reset para reiniciarlo
Escribe un programa que funcione como este: Pincha en reset para reiniciarlo
Muchas veces vamos a necesitar que los programas se repitan de manera infinita, es decir que después de la última instrucción volvemos a la primera. Esto se puede conseguir de dos formas:
Las instrucciones entre do y loop se repiten continuamente
do ... ... ... loop
Goto sirve para irse a otra posición del programa (vete a).Es necesario indicar esa posición mediante una etiqueta. Una etiqueta es un nombre seguido de os puntos (:).
La instrucción goto seguida de una etiqueta (sin los dos puntos) dirige
pepe: ..... ..... ..... ..... goto pepe
Cuando se llegue a goto pepe, el programa irá a pepe:
Haz un programa como el del ejemplo que es idéntico al anterior, pero que no termina nunca.
Pause hace lo mismo que wait, pero el número indicado son los milisegundos en los que el programa no hará nada.
pause 1000 es idéntico a wait 1
Haz un programa que funcione como el siguiente ejemplo. Se enciende todos los led, uno de tras de otro rápidamente.
Las variables son espacios de memoria de la controladora que permiten almacenar datos. El valor de los datos puede modificarse durante la ejecución del programa.
Las variables en el sistema picaxe se llaman b0, b1, b2, etc. b viene de box (caja) ya que la variable se comporta como una caja en la que podemos meter o sacar algo
Para meter algo en la caja usamos el signo =. b1=5 significa que metemos el número 5 en la caja 1
Para sacar algo de la caja, vale con nombrarlo. Por ejemplo si después de escribir lo anterior, escribo b1 sería lo mismo que escribir el número 5. Por ejemplo, en ese caso haciendo high b1, encendería la salida 5.
Prueba el siguiente programa y observa como funciona.
b0=0 inicio: high b0 pause 100 low b0 b0=b0+1 goto inicio
Las cajas sólo permiten meter valores entre el 0 y el 255. Si a 255 le añadimos 1, volvemos al valor 0 (eso se llama desbordamiento). Si necesitas almacenar valores mayores, puedes unir dos cajas usando w. Así tendremos w0, w1, etc. Las cajas w pueden almacenar calores desde el 0 al 65535.
El chip 18M2 tiene 28 cajas b (de la 0 a la 27) que se pueden agrupar en 14 cajas w (de la 0 a la 13)
Modifica el programa anterior para que funcione como el siguiente ejemplo. Pincha en reset para reiniciarlo
For es una instrucción que sirve para repetir algo un número de veces. Se escribe de la siguiente manera:
for caja (puede ser b0, b1,etc.) = valor inicial to valor final step incrementoLas instrucciones entre for y next se repetiran un número de veces que dependerá del valor inicial, el final y el incremento. La primera vez que se haga, la caja contendrá el valor inicial. Caa vez que lleguemos a next de aumenta el valor del dato contenido en la caja en la cantidad indicada después de step. Cuando se llega a un valor mayor que el valor final, ya no se repiten las instrucciones. Si no se introduce el dato step, se considera que es 1. Ejemplo
for b0=1 to 5 step 1 instrucción next
La instrucción se repetirá 5 veces. En la primera b0 contendrá el valor 1, en la segunda el 2, y así hasta llegar a la quita que contendrá el valor 5.
Escribe un programa en el que una salida cualquiera parpadea 10 veces
Escribe un programa que funcione como el ejercicio 7 pero escrito con menos de 5 instrucciones.
Escribe un programa que funcione como el siguiente ejemplo mediante el uso de for. Pincha en reset para reiniciarlo
Escribe un programa que funcione como este: Pincha en reset para reiniciarlo
Escribe como el anterior pero que se repita en un bucle infinito
Escribe un programa que funcione como este: Pincha en reset para reiniciarlo
Escribe como el anterior pero más rápido y que se repita en un bucle infinito
Cuando escribimos un programa entendemos lo que hace, pero es posible que dentro de un tiempo se nos olvide porque lo hicimos así y nos cueste entenderlo. Por eso, es muy conveniente insertar comentarios en el código, así como nombrar las variables mediante la instrucción symbol.
A partir de este momento, los programas deben tener comentarios y las variables nombres significativos.
Las entradas digitales nos permiten pasas información desde el exterior al robot. Una entrada digital sólo puede ser interpretada de dos maneras por la controladora. Si se trata de un pulsador la información que se enviará es si está o no está pulsado.
Conecta un pulsador a la entrada 6 y otro a la 7 de la placa de alta potencia
Una vez que lo conectes, cuando pulsas el pulsador 6 tendremos que pin6=1 y cuando no este pulsado, pin6=0
Debug es una instrucción muy interesante que nos permite visualizar en la pantalla del ordenador los valores almacenados en las variables. Prueba el siguiente programa. Podemos ver el valor de las variables. bo y b1 tienen siempre almacenado el mismo valor, mientras que b2 va cambiando.
b0=5 b1=8 b2=0 inicio: b2=b2+10 debug wait 1 goto inicio
Escribe un programa que muestre mediante un debug si el pulsador 6 está pulsado
Las bifurcaciones condicionales van a ser la estrategia fundamental que usemos cuando queramos que un robot interaccione con el entorno y se comporte de diferentes maneras según sea este. Una bifurcación condicional empieza con la palabra if y termina con la palabra endif. Para entenderla conviene traducir: if -> si; then ->entonces; else ñ> sino; endif -> fin de la bifurcación
if condición thenLa condición puede ser que se pulse un pulsador conectado a una entrada. Por ejemplo la condición pin6=1 significa que el pulsador 1 está pulsado y pin6=0 significa que no está pulsado.
Ejemplo:
do; esto es para que se repita siempre en un bucle infinito if pin6=1 then; si el pulsador 6 está pulsado entonces high 1; enciende la salida 1 else; sino low 1; apaga la salida 1 endif; fin del if loop; fin del bucle infinito
Escribe un programa en el que si pulsamos el pulsador 6 se encienden los led rojos y si soltamos se apagan
Escribe un programa en el que para que se enciendan los led rojos, se debe pulsar el pulsador 6 y para que se enciendan los verdes el pulsador 7
Escribe un programa que funcione como este: Pincha en reset para reiniciarlo
Realiza un programa que funcione como el ejercicio 12 cuando se pulsa el pulsador 6 y que funcione de manera similar pero en sentido contrario si se pulsa el pulsador 7. Si no se pulsa ninguno, todos los led deben estar apagados
Realiza un programa en el que pulsando el pulsador 6 se enciende el led 0, si se vuelve a pulsar, se enciende también el led 1 y así sucesivamente
Mejora el programa para que si se pulsa el pulsador 7 se apaguen todos los led
Realiza un programa en el que pulsando el pulsador 6 se enciende el led 0, si se vuelve a pulsar, también se enciende el led 1 y así sucesivamente
Si se pulsa el pulsador 7 los led se van apagando de uno en uno.
Mejora el programa para que si pulsas continuamente los pulsadores sólo se enciende/apaga un led. para que se encienda/apague otra habrá que soltar el pulsador y volver a pulsar.
Realiza un programa que funcione como el ejercicio 12 cuando se pulsa el pulsador 6 o el 7 y que sino se pulsa ninguno todos los led estén apagados
Realiza un programa que funcione como el ejercicio 12 cuando se pulsa el pulsador 6 y el 7 y que en caso contrario, todos los led estén apagados
Los siguientes ejercicios sólo debes hacerlos si te manejas perfectamente con los anteriores.
En robótica se llaman entradas analógicas en las que se pueden leer diferentes niveles de tensión. Se diferencian de las digitales en que en estas sólo se pueden leer dos niveles de tensión. Una entrada digital tiene dos posibles valores. Una entrada analógica puede interpretar hasta 256 niveles diferentes de tensión. Las entradas 0, 1 y 2 de la placa de alta potencia están conectados a pines capaces de leer valores analógicos. El chip 18M2 tiene más pines capaces de leer niveles analógicos
Conecta un potenciómetro a la entrada analógica 0
Prueba el siguiente programa moviendo el potenciómetro.
inicio: readadc 0,b0; se lee el valor de la entrada 0 y se almacena en la variable b0 debug ; nos muestra el valor de las variables en la pantalla del ordenador if b0<180 then ; Dependiendo del valor del potenciómetro, se encienden unas salidas u otras high 0,1,2,3 low 4,5,6,7 else high 4,5,6,7 low 0,1,2,3 endif pause 100; un rato parado para que lo veamos goto inicio
Haz un programa que funcione como el siguiente ejemplo.
Haz un programa que funcione como el siguiente ejemplo.
Conecta una LDR a la controladora en una entrada analógica. Existe una resistencia interna que conecta las entradas al polo negativo. En algunas placas esa resistencia no está presente y entonces es importante ponerla.
Haz un programa que funcione como el siguiente ejemplo. El los if la condición puede ser que un valor sea mayor o menor que otro.
Haz un programa que funcione como el siguiente ejemplo.
Conecta una LDR a una entrada analógica y consigue que se enciendan más led cuanto más luz reciba.