Descripción de la placa

Conexiones

Seleccionar chip y puerto

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

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

  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á. Si pulsas el botón reset de la placa el programa volverá a funcionar.

    La instrucción high sirve para activar una salida, low sirve para desactivarla. Hay que indicarle el número de la salida.

    Wait sirve para esperar y al que indicarle el número de segundos que el programa esperará sin hacer nada

    .

  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 conmo 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



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

    Lee la información sobre la instrucción goto y sobre las etiquetas


  7. Ejercicio 6

    Haz un programa como el del ejemplo que es idéntico al anterior, pero que no termina nunca. Hay que poner una etiqueta al princicpio y un goto eteiqueta al final.



  8. Si queremos que las esperas duren menos de un segundo, debemos usar la instrucción pause seguida de los milisegundos que estará esperando.

    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

    Lee la información sobre las variables.

    Prueba el siguiente programa y observa como funciona.

    b0=0
    inicio:
    high b0
    pause 100
    low b0
    b0=b0+1
    goto inicio
    

  10. Ejercicio 8

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



  11. For

    Lee la información sobre la instrucción for. Tiene varias formas de escribirse dependiendo de cómo se quiera que trabaje


  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. Deberás añadir la opción step. 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 la variable pin6 valdrá 1 y cuando está sin pulsar, tendrá 0 como valor


    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. Bifurcaciones condicionales

    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.

    Lee la información que hay sobre la instrucción if

  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 el led 1 y así sucesivamente


  26. Ejercicio 21

    Realiza un programa en el que pulsando el pulsador 6 se enciende el led 0, si se vuelve a pulsar, se enciende el led 1 y así sucesivamente

    Si se pulsa el pulsador 7 los led se van apagando.


  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. Salidas "analógicas"

    Una salida analógica es aquella en la que podemos modificar la tensión. Sirven para regular la velocidad de un motor o el brillo de un a bombilla, por ejemplo. Las controladoras PICAXE no tienen autenticas salidas analógicas pero sí tiene salidas pwm que producen un efecto similar. La estrategia es encender y apagar las salidas muy rápidamente, de manera que lo que observamos es idéntico al que obtendríamos con una auténtica salida analógica. Sólo unos pocos pines de los chips picaxe tiene la posibilidad de usar pwm. En el chip 18M2, esos pines son el B.3 y el B.6, que corresponden a las salidas 3 y 6.

    sintaxis

    La sintaxis de esta instrucción es:

    pwmout pin, periodo, ciclo

    pin indica la salida que vamos a usar. Con el chip 18M2, será B.3 o B.6

    El periodo es un valor que puede estar entre 0 y 255. Para la mayoría de nuestros programas, fijaremos ese valor a 255.

    El ciclo es un valor entre 0 y 255 que indicará el valor analógico. Cuanto más alto sea ese número, más brillará la bombilla conectada.

    El comando pwmout pin, off sirve para apagar la salida correspondiente

    Prueba el siguiente programa con diferentes valores de valor para comprenderlo. Puedes copiarlo y pegarlo en el editor picaxe

    symbol nivel=b0 ; creamos una variable con nombre significativo
    nivel= 30; ajustamos el nivel de salida. Este es el valor que hay que cambiar en las distintas pruebas
    pwmout b.6,255,nivel; colocamos la salida 6 al nivel indicado
    high 5; encendemos la salida 5 para comparar
    wait 3; estan un tiempo encendidas
    low 5, 6; la instruccion low tambien apaga las salidas pwm
    

  30. Ejercicio 24

    Realiza un programa en el que un led va cambiando de luminosidad paulatinamente.


  31. En el siguiente programa modificamos el valor de una variable según el número de veces que pulsamos el pulsador 6. Prueba el programa con distintos valores de incremento. Observa lo que sucede al pulsar varias veces el pulsador 6 tanto en la placa como en la pantalla del ordenador

    symbol pulsos=b0; damos un nombre significativo a la variable b0
    
    pulsos=0; inciciamos el valor de esa variable
    
    inicio:
    if pin6= 1 then; sistema para contar pulsaciones
    	 pulsos = pulsos + 1 ; sumamos 1 a la variable pulsos si se pulsa
    	 pause 200; ¿Para qué valdrá esto? Pruébalo sin ello y verás
    	endif
    low 0,1,2,3,4,5,6,7 ; apagamos todas las salidas
    high pulsos; encendemos la salida correspondiente al valor de pulsos
    	
    pwmout b.3, 255,pulsos; ajustamos el nivel de salida al numero de pulsos
    pause 100
    debug ; visualizamos los valores de las variables
    goto inicio

    Ejercicio 25

    Haz un programa en el que al pulsar el pulsador 6 el led 5 luce cada vez más y si pulsamos el 7 cada vez luce menos


  32. 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
  33. Ejercicio 26

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

  34. Ejercicio 27

    Haz un programa que funcione como el siguiente ejemplo.


  35. Ejercicio 28

    Haz un programa que funcione como el siguiente ejemplo.


  36. Ejercicio 29

    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.


  37. Ejercicio 30

    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.


  38. Ejercicio 31

    Haz un programa que funcione como el siguiente ejemplo.


  39. Ejercicio 32

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


    Servos

    Los servos son un tipo de actuadores que podemos conectar en las salidas de la controladora y que trabajan de manera especial. Un servo es un motor con un sistema de desmultiplicación muy potente (tiene mucha fuerza) y con capacidad para medir su posición. En condiciones normales no puede dar ni siquiera un giro completo, pero tiene la ventaja de que tiene mucha fuerza y de que podemos controlar la posición (ángulo de giro) de manera bastante precisa.

    Conexiones

    El servo tiene tres cables, uno rojo que se conecta a positivo, uno negro que se conecta a negativo y uno blanco que se conecta a una salida de la controladora a través de una resistencia de 330ohmios. Esta salida no debe estar invertida. Debe ser una salida que con la instrucción high nos de 5 voltios en la misma. Por tanto, en la placa de alta potencia, la que más usamos, nos sirven las salidas 7, 6, 5 y 4. No nos sirven las salidas 0, 1, 2 ni 3 ya que estás están invertidas. En ellas con high lo que hacemos es conectar al polo negativo. Recordemos que un actuador que se conecte a ellas, debe conectarse por el otro lado al polo positivo.

    Conecta un servo a la salida 5.

    Control

    El control del servo se hace mediante la instrucción servo que tiene como argumentos el número de salida en la que está conectado y un número que va desde el 75 al 225 para indicar la posición a la que queremos llevarlo. 75 se refiere a un extremo, 225 al otro y 150, por ejemplo, sería la posición media.

    Prueba el siguiente programa:

    servo 5, 75   ;colocariamos el servo conectado en la salida 5, en una de sus posiciones extremas
    wait 1   ; esperamos un segundo
    servo 5, 150  ; el servo se mueve hasta su posición media.
    wait 1    ; esperamos un segundo
    servo 5, 225   ; el servo se mueve hasta el otro extremo.
    

  40. Ejercicio 33

    Realiza un programa en el que el servo está en la posición 150. Cada vez que pulsamos el pulsador 6 el servo se mueve un poco en sentido horario y si pulsamos el 7 en sentido antihorario. Cada pulsación hace que avance un poquito en un sentido o en otro.


  41. Ejercicio 34

    Realiza un programa en que controlamos el movimiento de un servo con un potenciómetro


  42. Ejercicio 35

    Realiza un programa en que controlamos el movimiento de un servo con un potenciómetro, de manera que de un extremo a otro del potenciómetro, el servo se mueve 90º


  43. Ejercicio 36

    LLave con un pulsadores

    Realiza un programa en el para que se encienda un led haya que hacer una secuencia de pulsaciones en los pulsadores.


  44. Infrarrojos

    Lee la información que hay sobre la comunicación con el infrarrojos. Conecta un receptor de infrarrojos a la controladora. Investiga con debug qué valor se almacena al tocar cada tecla. Haz un programa en el que cuando se pulse una tecla del mando, se encienda el led correspondiente y al soltarla se apague. Conviene que uses la instrucción select case


  45. Ejercicio 37

    Escribe un programa en el que los tres led parpadean uno detrás de otro 6 veces y el programa de repite 3 veces. Si lo consigues hacer con menos de 10 instrucciones, el ejercicio vale el doble que los anteriores, si no vale lo mismo.

  46. desbordamiento

    las variables b tiene un byte y por tanto pueden almacenar 256 valores diferentes (del 0 al 255). si vamos sumando números a una vartiable, cuando pasamos del valor 255 el banco de memoria se desborda y vuelve a comenzar desde 0. Prueba el siguiente programa. En él vamos sumando 10 a la variable b0. Observa qué pasa cuando superamos el valor 255.

    b0=0
    inicio:
    high b0
    pause 100
    low b0
    b0=b0+10
    debug 
    goto inicio

    Intenta predecir cómo va a funcionar el siguiente programa. Luego pruébalo en la placa. ¿Entiendes por qué funciona así?

    inicio:
    b0=5
    high b0
    wait 1
    low b0
    wait 1
    b0=b0+256
    goto inicio

    ¿Qué pasaría si sumaramos 257? ¿Y si sumáramos 255?