Enlaces a

Antes de hacer ejercicios, verifica el estado de la placa probando el siguiente programa. Deben encenderse todos los led

Prueba

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

Ejercicios básicos

Puedes copiar directamente el código de los ejemplos y pegarlo en el editor PICAXE.

Instrucciones básicas

Descripción de las instrucciones básicas que vamos a usar en esta sección de ejercicios básicos.

high

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

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

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.

  1. 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


  2. 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

  3. Ejercicio 3

    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



  4. Ejercicio 4

    Escribe un programa que funcione como el siguiente ejemplo. Pincha en reset para reiniciarlo



  5. Ejercicio 5

    Escribe un programa que funcione como este: Pincha en reset para reiniciarlo



  6. Bucle infinito

    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:

    do loop

    Las instrucciones entre do y loop se repiten continuamente

    do
    ...
    ...
    ...
    loop

    Goto

    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:


  7. Ejercicio 6

    Haz un programa como el del ejemplo que es idéntico al anterior, pero que no termina nunca.



  8. pause

    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

    Ejercicio 7

    Haz un programa que funcione como el siguiente ejemplo. Se enciende todos los led, uno de tras de otro rápidamente.



  9. Variables

    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
    

    Tamaño de las cajas

    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)

  10. Ejercicio 8

    Modifica el programa anterior para que funcione como el siguiente ejemplo. Pincha en reset para reiniciarlo



  11. For

    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 incremento
    instrucciones
    next

    Las 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.


  12. Ejercicio 9

    Escribe un programa en el que una salida cualquiera parpadea 10 veces


  13. Ejercicio 10

    Escribe un programa que funcione como el ejercicio 7 pero escrito con menos de 5 instrucciones.


  14. Ejercicio 11

    Escribe un programa que funcione como el siguiente ejemplo mediante el uso de for. Pincha en reset para reiniciarlo



  15. Ejercicio 12

    Escribe un programa que funcione como este: Pincha en reset para reiniciarlo



  16. Ejercicio 13

    Escribe como el anterior pero que se repita en un bucle infinito



  17. Ejercicio 14

    Escribe un programa que funcione como este: Pincha en reset para reiniciarlo



  18. Ejercicio 15

    Escribe como el anterior pero más rápido y que se repita en un bucle infinito



  19. Código legible

    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.


    Entradas digitales

    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

    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

  20. Ejercicio 16

    Escribe un programa que muestre mediante un debug si el pulsador 6 está pulsado


  21. IF

    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 then
    instrucciones que se realizan si la concición se cumple
    else
    instrucciones que se ejecutarán si la condición no se cumple
    endif

    La 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
    
  22. Ejercicio 17

    Escribe un programa en el que si pulsamos el pulsador 6 se encienden los led rojos y si soltamos se apagan



  23. Ejercicio 18

    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


  24. Ejercicio 19

    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


  25. Ejercicio 20

    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


  26. Ejercicio 21

    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.


  27. Ejercicio 22

    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


  28. Ejercicio 23

    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


  29. Ejercicios de ampliación

    Los siguientes ejercicios sólo debes hacerlos si te manejas perfectamente con los anteriores.

    Entradas "analógicas"

    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
  30. Ejercicio 24

    Haz un programa que funcione de manera similar pero si b0 es menor de 160 se encienden únicamente 0, y 1. Si está entre 160 y 190 se encienden únicamente las salidas 2 y 3. Si está entre 190y 220 se encienden 4 y 5. Si es mayor de 220 se encienden 6 y 7.

  31. Ejercicio 25

    Haz un programa que funcione como el siguiente ejemplo.


  32. Ejercicio 26

    Haz un programa que funcione como el siguiente ejemplo.


  33. Ejercicio 27

    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.


  34. Ejercicio 28

    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.


  35. Ejercicio 29

    Haz un programa que funcione como el siguiente ejemplo.


  36. Ejercicio 30

    Conecta una LDR a una entrada analógica y consigue que se enciendan más led cuanto más luz reciba.