Práctica 2: El buscador de luz

0
0
37
6 months ago
Preview
Full text
Práctica 1: Comprobación de luces y sonido  Práctica 3: El detector de obstáculos Además de los tres sensores de luz visible, el Scribbler contiene un detector de rayos infrarrojos (IR) en la parte central de su morro y dos emisores del mismo tipo a amboslados de aquel. Así por ejemplo, el módulo buscador de luz (práctica 2) se activa tapando sólo el sensor derecho, por lo que le corresponde el número 001, el módulo detector de línea (práctica4) tapando los sensores derecho e izquierdo, pero no el central, por lo que se identifica con el número 101, etc. 3. Desde el menú File > Open busca y abre el programa ScribblerSaluda.bs2  Tras un breve mensaje que indica que el programa se está cargando, verás que el robotabre en la pantalla de tu ordenador una ventana como esta 5. Ciertamente no ha sido un resultado muy espectacular, pero lo que se trata en esta práctica es que aprendáis de memoria el proceso de carga y ejecución de programas,porque lo vais a realizar muchas veces. 2. En el editor busca y abre el programa CalculaConScribbler.bs2  Así pues, una orden como HIGH 8 indica que se le está enviando una señal de al menos +1,41 V a lo que esté conectado a la patilla 8 de la controladora, que en este caso el LED central. Por otra parte, en esta práctica utilizaremos la orden PAUSE, que lo único que hace es mantener a la controladora y a los dispositivo conectados a ella en la situación en que seencuentren durante un tiempo especificado en milisegundos. 2. En el editor busca y abre el programa PruebaLeds.bs2 que, por cierto, tienes al principio del apartado 23  Modifica el programa para que encienda primero la luz izquierda durante un segundo y luego la apague, encienda después la luz central durante otro segundo yla apague y haga lo mismo con la luz derecha. Modifica el programa para que encienda la luz izquierda, tras 1,5 segundos la luz central, en el instante 3,0 seg la luz derecha y al llegar a 4,0 seg apague las tres. 8. Hemos terminado la práctica. Si no vas a hacer más apaga el robot. Si vas a hacer otra, vuelve a conectarlo al ordenador  Práctica 9: Verificación del altavoz y uso de bucles El altavoz del Scribbler no se activa con la orden HIGH porque para que produzca sonidos es necesario activarlo y desactivarlo muchas veces por segundo, más cuanto más agudo seael sonido. Para hacer esto el lenguaje PBASIC tiene una orden que se llama FREQOUT y que vamos a aprender a usar en esta práctica. 2. En el editor busca y abre los programas PruebaAltavoz.bs2 y  Básicamente consiste en que el robot repetirá todo lo que haya entre las órdenes DO y LOOP una y otra vez hasta que algo externo lo detenga. Esta última ya sabes lo que hace; en cuanto a las otras, la primera (línea 48) FREQOUT emAltavoz, 500, La4 equivale a FREQOUT 11, 500, 1760 y eso conecta y desconecta lo que haya en el puerto 11, es decir, el altavoz, durante 500 milisegundos con una frecuencia de 1760 veces por segundo. 6. Sustituye el bucle indefinido DO … LOOP por este otro:  Práctica 10: Comprobación de los fotosensores Los fotosensores del Scribbler constan de un condensador y una foto-resistencia que a grandes rasgos funcionan así: el condensador se carga al recibir una señal alta durante untiempo suficiente (alrededor de 3 ms) y se descarga después sobre la foto-resistencia, tanto más deprisa cuanta más luz esté recibiendo esta. Con esto el robotes capaz de encontrar una línea pintada en el suelo aprovechando el hecho de que los rayos IR rebotan al alcanzar una superficie clara y brillante, pero son absorbidos porsuperficies oscuras y mates. 2. En el editor busca y abre los programas PruebaLineas.bs2 y  En general, estas estructuras consisten en evaluar una expresión que generalmente suele ser una comparación; si el resultado es verdadero (1) o bien un número distinto de cero entonces se ejecuta un conjunto de órdenes, pero si el resultadofuera falso o, lo que es lo mismo, el número 0 entonces ejecuta otro conjunto de órdenes. En efecto, para detectar obstáculos es preferible enviar y rastrear el rebote de un pulso, esto es, de una sucesión de brevísimos destellos oscilatorios generadas mediante la ordenFREQOUT (repasa la práctica del altavoz); digamos que es algo parecido al bip del sonar de los barcos, pero con luz infrarroja. 2. En el editor busca y abre el programa PruebaEco.bs2 (y si abres también ScribblerReset.bs2 tanto mejor)  En el lenguaje PBASIC se activan con la ordenPULSOUT seguida de dos valores: el primero es el número de puerto del motor que se desea mover y el segundo es otro número con el que se indica la velocidad a la que debegirar. Es completamente posible hacer que una rueda gire a una velocidad y la otra a una distinta: así es como se consigue que el robot se desvíe hacia un lado o al otro o que rotesobre sí mismo. 2. En el editor busca y abre el programa PruebaMotores1.bs2 (y si abres también ScribblerReset.bs2 tanto mejor)  Observa las dos definiciones de constantes (CON) que aparecen en las líneas 32 y 33: Vizq CON 2800 ' Velocidad de la rueda izquierda Vder CON 2500 ' Velocidad de la rueda derecha Las constantes son datos como las variables pero cuyo valor se mantiene fijo a lo largo de todo el programa, de ahí su nombre (observa que no es necesario hacer la reserva previade espacio). La ruedaizquierda gira algo más deprisa que la derecha, así que cuando lo dejemos en el suelo el robot se moverá describiendo un círculo en sentido horario. 5. Apaga el robot, vuelve a situarlo sobre su apoyo, enciéndelo de nuevo y carga el programa ScribblerReset.bs2 para que se detenga  Cuandohayas comprobado que funciona, guarda el programa modificado con el nombrePruebaMotores1d.bs2 Como habrás podido observar, esta forma de programar los motores del Scribbler presenta un problema muy importante: los motores se quedan indefinidamente en la última parejade órdenes PULSOUT que se les dé y no hay manera de pararlos. Para ello se debe enviar a cada motor un grupo de tres órdenes como este: PULSOUT 12, 2200 PAUSE 1PULSOUT 12, 1800 La primera orden le dice al motor (en este caso, el derecho) que gire a 2200 udv, la segunda le pide que espere a recibir otra orden, la tercera es la que establece el tiempoque permanecerá girando, que en este caso es 1800 unidades de tiempo (lo llamaremos para abreviar). 2. En el editor busca y abre el programa PruebaMotoresbs2 (y si abres también  Observa en las líneas 50 a 56 cómo se envían las órdenes de marcha programada a los motores; pese a lo que pudiera parecer, nose mueve primero un motor y luego otro, sino ambos a la vez. Comprueba que el robotvuelve al punto de partida o, mejor aún, si tienes un rotulador grueso pónselo en el agujero que tiene en el lomo y haz que lo dibuje sobre un papel suficientementegrande. 10. Carga y ejecuta en el robot el programa de reinicio ScribblerReset.bs2 y apágalo  Si repites alguno de los apartados anteriores te darás cuenta de que las velocidades y tiempos de maniobra varían apreciablemente, dependiendo del estado de las pilas, delsuelo, de las ruedas, de lo bien o mal engrasados que estén los ejes, etc. Práctica 15: Verificación del detector de bloqueo de los motores No es raro que al moverse el Scribbler se tope con algún obstáculo que impida el movimiento de uno o de sus dos motores. 2. En el editor busca y abre el programa PruebaBloqueo.bs2 (y si abres también ScribblerReset.bs2 tanto mejor)  Después se declara la variable Vudv como un número entero que ocupa dos bytes Vudv VAR Word y seguidamente se convierte la velocidad de porcentaje a udv aplicando la siguiente fórmula Vudv = 2000 + (10*Vpc) ' Se convierte la velocidad en udv (aprox) Esa es una fórmula aproximada que sólo sirve para el robot Scribbler y siempre que no se usen porcentajes cercanos a +100, a –100 ó a 0. En concreto, debeshacer que el robot active y desactive los tres led, el altavoz, los tres foto-sensores, los dos detectores de líneas, el detector de obstáculos, los dos motores y eldetector de bloqueo, informando desde el Debug Terminal de por dónde se llega. 2. En el editor busca y abre el programa PruebaGosub1.bs2 (y si abres también ScribblerReset.bs2 tanto mejor)  Tan solo queda por comentar algo ajeno a las subrutinas que se encuentra en la línea 54 vfAtascado = IN7 ' Comprueba el detector de bloqueo En ella se recoge lo que hay en el puerto de entrada número 7 (el del detector de bloqueo) y se guarda en la variable valAtascado que, por cierto, es de tipo Bit , por lo que sólopuede contener un 0 ó un 1. Para usarla es necesario haber definido y asignado valores a tres variables: las velocidades Vpcder y Vpcizq en forma de porcentajes y eltiempo de marcha Tds en décimas de segundo. 2. En el editor busca y abre el programa PruebaGosubbs2 (y si abres también ScribblerReset.bs2 tanto mejor)  Modifica el programa anterior para que el robot trace en el suelo una letra B haciendo que regrese al mismo sitio y en la misma posición de partida. En realidad ya casi lo tenemos hecho en la práctica anterior así que sólo vamos a tener que añadirle unas pocas modificaciones; lamás importante consiste en hacer que los motores se vayan moviendo paso a paso según lo que les vayan indicando los sensores de infra-rojos y de bloqueo, a saber: si hay unobstáculo a un lado gira hacia el otro y si hay un obstáculo a ambos lados o se ha bloqueado, retrocede. 2. En el editor busca y abre el programa ScribblerEvitaObstaculos.bs2  Para asegurarte de que entiendes bien lo que hace, vas a hacer lo siguiente: en la hoja de prácticas dibuja una tabla como esta vfLibreDer vfLibreIzq vfAtascado Vpcder Vpcizq Escribe en las tres primeras columnas todas las posibles combinaciones de valores que pueden tomar las variables indicadas en la fila superior y en las dos últimascolumnas los valores que toman Vpcder y Vpcizq en cada caso. Conecta el Scribbler al ordenador, abre el Basic Stamp Editor y carga el programaPruebaZonaIR.bs2 En ese programa todo es conocido excepto la línea LOOKUP cuentaFreq, [37500,38250,39500,40500,41500], freqIR Lo que hace la orden LOOKUP es tomar la lista que está entre corchetes, seleccionar el elemento que está en el puesto cuentafreq+1 y guardarlo en la variable freqIR ; porejemplo, si cuentafreq vale 2 tomará el número 39500 y lo guardará en freqIR . 4. Carga en el Basic Stamp Editor el programa ScribblerDeambula.bs2  Después, en la segunda etapa se calculan las velocidades (en udv) de los motores a través de las fórmulas Vizq = Vref + (zonaDer*incrV) Vder = Vref + (zonaIzq*incrV) Supón, por ejemplo, que hay un obstáculo en la zona 2 derecha y el lado izquierdo está libre. Elajuste se hace por tanteo, pero como Vref y incrV no pueden tomar cualquier valor sería conveniente que antes de hacer ningún cambio sustituyeras la terceraetapa por esto otro DEBUG CLS DEBUG "Vizq = ", DEC5 Vizq, CRDEBUG "Vder = ", DEC5 Vder, CR DEBUG HOME Así podrás ver con los motores parados los valores que toman las velocidades y, cuando sean razonables, volver a poner las órdenes de marcha a los motores. 8. Vuelve a hacer otra copia del programa ScribblerDeambula.bs2 y llámala  Práctica 21: Programa de seguimiento El programa de seguimiento consiste en hacer que el robot permanezca a una distancia fija del obstáculo (pongamos por caso, en la zona 2), siguiéndolo si este se mueve, es decir,alejándose de él si está muy cerca y acercándose a él cuando esté muy lejos. Ejecuta y prueba el programa con el robot en volandas y si ves que funciona apaga el robot, desconéctalo del ordenador y ponlo sobre en el suelo sobre la línea delpapel.

RECENT ACTIVITIES

Etiquetas