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. Tienes que conectar un extremo de cada entrada a + y el otro a la entrada correspondiente. Las resistencias de 10k no hay que conectarlas porque la placa ya las lleva.

Una vez que lo conectes, cuando un pulsador está sin accionar, la entrada está conectada a 0voltios a través de la resistencia y la placa intrepreta eso como un 0. Cuando pulsamos, la entrada queda directamente conectada a 5V y la placa interpreta eso como un 1.

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. b0 y b1 tienen siempre almacenado el mismo valor, mientras que b2 va cambiando.

do
	b0=5
	b1=8
	b2=0
	do
	b2=b2+10
	debug 
	wait 1
loop

Podemos usar debug para ver el estado de una entrada, introduciendo el valor de un pin en una variable:

do
	b6=pin6
	debug
loop

Hemos metido el valor del pin6 en la caja 6 (podríamos haber usado otra) y con debug lo visualizamos. Prueba a pulsar el pulsador 6 y a liberarlo y veras como el valor almacenado en la caja 6 pasa de 0 (cuando no está pulsado) a 1 (cuando sí lo está)


  • Ejercicio 1

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


  • 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
    
  • Ejercicio 2

    Escribe un programa que funcione como este ejemplo. Las salidas 0,1,2,3 se encienden cuando pulsamos la entrada 6 y se apagan si no la pulsamos.


  • Ejercicio 3

    Escribe un programa que funcione como este ejemplo. Es parecido al anterior, pero funciona con la entrada 7.


  • Ejercicio 4

    Escribe un programa que funcione como este ejemplo. Se comporta de una manera al pulsar la entrada 6 y de otra al pulsar la 7


  • Ejercicio 5

    Escribe un programa en el que si se pulsa el pulsador 6, se encienden todas las entradas de la 0 a la 7, y si se pulsa el 7 se encienden en orden inverso


  • Operadores lógicos

    En las condiciones de un if se pueden usar operadores lógicos como and, or o no. Si unimos dos condiciones con un and, sólo se valorará como verdadera cuando se cumplan las dos de manera simultánea. Mientras que si lo hacemos con un or, la condición se cumplirá cuando se cumpla cualquiera de las condiciones individuales. Por ejemplo:

    if pin6=1 and pin7=1 then; Para que esto se cumpla, deben pulsarse las dos entradas simultáneamente
    

  • Ejercicio 6

    Escribe un programa en el que para que se encienda el led 1 es necesario tener pulsado simultáneamente el pulsador 6 y el 7. Como con el ratón no podemos pulsar los dos simultáneamente, en el ejemplo el pulsador se queda rojo mientras está pulsado. La condición de estar pulsados el pulsador 6 y el 7 será: pin6=1 and pin7=1


  • Ejercicio 7

    Escribe un programa como el del ejemplo. Suceden cosas distintas si se pulsa cada pulsador por separado o juntos. Como con el ratón no podemos pulsar los dos simultáneamente, en el ejemplo el pulsador se queda rojo mientras está pulsado. En este caso, hay tres condiciones diferentes. Una de lellas sería pin6=1 and pin7=0 (cuando queremos que funcione con la entrada 6 pulsada pero la 7 sin pulsar).


  • Ejercicio 8

    Escribe un programa como el del ejemplo. Suceden cosas distintas si se pulsa cada pulsador por separado o juntos. Como con el ratón no podemos pulsar los dos simultáneamente, en el ejemplo el pulsador se queda rojo mientras está pulsado.


  • Ejercicio 9

    Escribe un programa como el del ejemplo. Suceden cosas distintas si se pulsa cada pulsador por separado o juntos. Como con el ratón no podemos pulsar los dos simultáneamente, en el ejemplo el pulsador se queda rojo mientras está pulsado.


  • Bucles

    Los bucles son estructuras de programación que permiten repetir un conjunto de instrucciones. ya hemos visto dos, el bucle infinito, que permite repetir un conjunto de instrucciones indefinidamente y el bucle for que permite repetir un bloque de instrucciones un número de veces. Ahora vamos a ver bucles condicionales que se van a repetir dependiendo del estado de las entradas

    Bucle while

    El bucle while es un bucle que se repite mientras se cumpla una condición

    Sintaxis

    El bucle tiene dos posibles formas de escribirse

    Primera opción

    do
    
    instrucciones
    
    loop while condición
    

    Segunda opción

    do while condición
    
    instrucciones
    
    loop
    

    En ambos casos la función similar; se repetirán las instrucciones entre do y loop mientras se cumpla la condición escrita después de while. La diferencia es que en la primera opción las instrucciones no se realizan ni una vez si al principio del bucle no se cumple la condición, mientras que en la segunda opción, las instrucciones entre do y loop se hacen al menos una vez, porque la condición se evalúa después.

    Las instrucciones pueden no existir, de manera que en ese caso, el programa funciona como una espera que dura mientras se cumpla la condición. De todos modos suele ser buena idea en esos casos poner como instrucción una pequeña espera, como pause 100, para no atosigar al controlador.

    Ejemplo

    do while pin6=0
    high 0
    loop
    low 0
    

    Este programa encenderá el led 0 y lo mantendrá encendido hasta que pulsemos el pulsador 6. Entonces se apagará y terminará el programa.


    Bucle until

    es muy parecido al bucle while, pero en lugar de realizase mientras se cumpla la condición se realiza hasta que se cumpla

    Sintaxis

    Ttiene dos posibles formas de escribirse

    Primera opción

    do
    
    instrucciones
    
    loop until condición
    

    Segunda opción

    do until condición
    
    instrucciones
    
    loop
    

    En ambos casos la función similar; se repetirán las instrucciones entre do y loop hasta que se cumpla la condición escrita después de until. La diferencia es que en la primera opción las instrucciones no se realizan ni una vez si al principio del bucle no se cumple la condición, mientras que en la segunda opción, las instrucciones entre do y loop se hacen al menos una vez, porque la condición se evalúa después.

    Ejemplo

    Este programa va encendiendo las salidas de una en una (eso está escrito dentro del bucle) hasta que se pulsa la entrada 6, entonces sale del bucle y termina apagándolas todas

    b0=0
    
    do until pin6=1
    	high b0
    	b0=b0+1
    	wait 1
    loop
    
    wait 1
    low 0,1,2,3,4,5,6,7
    
    

    Ejemplo

    Un bucle puede no tener ninguna instrucción entonces se comportará como una espera. Por ejemplo, en el siguiente ejemplo se encienden las salidas de la 0 a la 3, pero el bucle impide continuar hasta que se pulsa el pulsador 6

    low 0,1,2,3,4,5,6,7
    
    high 0
    wait 1
    high 1
    wait 1
    high 2
    wait 1
    high 3
    
    do
    loop while pin6=0; el programa no avanzará hasta que se pulse el pulsador 6
    
    high 4
    wait 1
    high 5
    wait 1
    high 6
    wait 1
    high 7
    
    

  • Ejercicio 10

    Escribe un programa como el del ejemplo. Cada vez se pulsa una vez el pulsador 6 se enciende una salida más.


  • Ejercicio 11

    Mejora el programa anterior. Cada vez se pulsa una vez el pulsador 6 se enciende una salida más. Si se pulsa la 7 se apagan todas. Si volvemos a pulsar 6, el programa se comporta otra vez como al principio.


  • Ejercicio 12

    Escribe un programa como el del ejemplo. Cada vez se pulsa una vez el pulsador 6 se enciende una salida más y cada vez que se pulsa la 7 se enciende una menos.


  • Ejercicio 13

    Escribe un programa como el del ejemplo. Es como una especie de llave digital. Para que se enciendan todas las dsalidas hay que hacer una secuencia de pulsaciones: pulsar una vez 6, pulsar una vez 7, pulsar dos veces 6, pulsar una vez 7, pulsar 3 veces 6, pulsar una vez 7.

    Para que se pueda reiniciar, hay que pulsar simultáneamente 6 y 7