Programas Programación de los microcontroladores PICAXE Los micros Picaxe que usamos en el taller se pueden programar con distintas aplicaciones. La mejor opción es utilizar la aplicación oficial: PICAXE Editor 6 Principales características de PICAXE Editor 6 Totalmente gratis. Traducido al español, además de a otros idiomas. Funciona en Windows. Está prevista la migración a Mac y Linux La hemos probado en Ubuntu 14 con Wine y funciona correctamente. Completísimo editor de texto con múltiples funciones. Exporta en varios formatos. Sistema de ayudas a varios niveles. Por ejemplo, para cada comando escrito salen sus opciones y enlaces a los manuales. Vienen integrados todas las hojas de datos y manuales. Lenguajes de programación: BASIC y Diagramas de flujo En modo depuración (DEBUG), puede verse el valor de cada pin y de cada variable del programa. Múltiples asistentes, por ejemplo para calibrar sensores analógicos. IMPORTANTÍSIMO Permite la simulación de los programas en el ordenador sin ningún hardware adicional, sin controladoras, ni sensores, ni nada de nada. Línea a línea se va viendo cómo evoluciona el programa. Además se puede ver gráficamente la simulación sobre la tarjeta controladora que se use. NOTA Los programas que se muestran a continuación, pueden simularse en el ordenador sin necesidad de tener en ese momento físicamente las tarjetas controladoras. Es suficiente la aplicación anterior, con la que podremos visualizar dichas tarjetas y su funcionamiento. PLANTILLA para los programas PICAXE Editor permite empezar a programar con una plantilla por defecto cada vez que se crea un archivo BASIC nuevo. Nosotros recientemente estamos utilizando la siguiente plantilla que prácticamente cubre todos los casos de programación y que está dividida en cuatro secciones: I - INFORMACIÓN. Datos con los que se documenta el programa (micro, entradas y salidas utilizadas, funcionalidad,...). II - INICIALIZACIÓN. Instrucciones que solo se ejecutan una vez al iniciar el programa. III - BUCLE PRINCIPAL. Conjunto de instrucciones que por defecto ejecutan indefinidamente. IV - SUBRUTINAS. Bloques de código que pueden llamarse desde el bucle principal u otra subrutina. PLANTILLA para los programas ;------------- INFORMACIÓN -------------; Nombre : ; Autor : ; Micro : ; Entradas: ; Salidas : ; Función : ;---------------------------------------- ;----------- INICIALIZACIÓN ------------;---------------------------------------- ;----------- BUCLE PRINCIPAL -----------do loop ;---------------------------------------- ;------------- SUBRUTINAS --------------;---------------------------------------- NOTA La plantilla anterior solo aparece en los programas más recientes. En los más antiguos aún utilizamos el formato clásico con "inicio:" y "goto inicio" LISTA DE PROGRAMAS que hemos desarrollado para nuestras prácticas y proyectos: IMPORTANTE: hemos actualizado todos los programas para que funcionen con micros "M2", que son los últimos que se ofrecen en el mercado. Sesiones del programa Profundiza 2012 "El robot resuelve-laberintos". 01.1 Programando un led en la salida C.0 de un Picaxe (parpadeo simple). 01.2 Programando un led en la salida C.0 de un Picaxe (parpadeo doble). 02.1 Semáforo simple con tres led. 03.1 Semáforo peatonal (I) con tres led y un pulsador. 04.1 Siete led en salidas dinstintas parpadeando simultáneamente. 04.2 Seis led dispuestos circularmente y luz-doble dando vueltas. 04.3 Semáforo peatonal completo (y II) con cinco led, pulsador y zumbador. 05.1 Led con parpadeo proporcional a la distancia de un objeto. 05.2 Cuenta repetitiva de 0 a 9 en un visualizador (display de 7 segmentos) con intervalos de 1 segundo. 06.1 Calibración de un sensor de distancias. 06.2 Midiendo con sensor de distancia y mostrando el resultado en un visualizador de 7 segmentos. 07.1 Leyendo los códigos de las teclas de un mando a distancia. 07.2 Controlando cuatro led con un mando a distancia. 08.2 Movimientos básicos de dos motores con un mando a distancia. 11.1 Probando el sensor frontal del robot resuelve-laberintos. 11.2 Probando el sensor derecho del robot resuelve-laberintos. 12.1 PROGRAMA FINAL del Robot resuelve-laberintos. Proyecto Tecnológico "Cinta elevadora con parada automática" 1. Calibración de la LDR. 2. PROGRAMA FINAL de la "Cinta elevadora con parada automática". Proyecto Tecnológico "Coche evita-paredes" 1. PROGRAMA FINAL del "Coche evita-paredes". Proyecto Tecnológico "Coche evita-caídas" 1. PROGRAMA FINAL del "Coche evita-caídas". Proyecto Tecnológico "Coche teledirigido por mando a distancia de infrarrojos" 1. Lectura de los códigos de los botones a usar del mando a distancia de IR. 2. Prueba básica de movimiento de los motores. 3. PROGRAMA FINAL del "Coche teledirigido por mando a distancia de infrarrojos". Configuración del módulo JY-MCU V1.06 para comunicaciones por Bluetooth Enviar comando "AT+VERSION" y leer la versión del módulo Cambiar el nombre del módulo con "AT+NAMEnombrehasta20caracte" Proyecto Tecnológico "Coche controlado por Bluetooth" 1. PROGRAMA FINAL del "Coche controlado por Bluetooth" 01.1 Programando un led en la salida C.0 de un Picaxe (parpadeo simple) Microcontrolador: Picaxe08. Tarjeta controladora: "Alarmas Picaxe". Actuador: Led conectado a la salida C.0 del micro (viene integrado en la tarjeta). Función: El programa hace parpadear indefinidamente el led; puede ajustarse el tiempo que está encendido y apagado. Implementación práctica: Desarrollado en la SESIÓN 01 del programa Profundiza 2012. Código del programa: 'Tarjeta: Alarmas PICAXE 'Micro : PICAXE-08M2 (también versiones anteriores) 'Salidas: C.0 -> LED 'El siguiente programa hace parpadear el LED: ' un segundo encendido, medio segundo apagado ' y todo se repite indefinidamente. inicio: high C.0 pause 1000 'salida C.0 -> ON 'pausa de 1,0 segundos low C.0 pause 500 'salida C.0 -> OFF 'pausa de 0,5 segundos goto inicio 'ir a inicio - Volver a la lista de programas - 01.2 Programando un led en la salida C.0 de un Picaxe (parpadeo doble) Microcontrolador: Picaxe08. Tarjeta controladora: "Alarmas Picaxe". Actuador: Led conectado a la salida 0 del micro (viene integrado en la tarjeta). Función: El programa hace parpadear el led dos veces muy rápido, seguido de una pausa lenta; todo indefinidamente. Implementación práctica: Desarrollado en la SESIÓN 01 del programa Profundiza 2012. Código del programa: 'Tarjeta: 'Micro : 'Salidas: Alarmas PICAXE PICAXE-08M2 (también versiones anteriores) C.0 -> LED 'El siguiente programa hace parpadear el LED: ' dos parpadeos muy rápidos seguido de una pausa lenta ' y todo se repite indefinidamente. inicio: high C.0 pause 200 low C.0 pause 200 'PRIMER PARPADEO RÁPIDO 'salida C.0 -> ON, o bien "nivel alto", o bien "1" 'pausa de 0,2 segundos (200 milisegundos) 'salida C.0 -> OFF, o bien "nivel bajo", o bien "0" 'pausa de 0,2 segundos (200 milisegundos) high C.0 pause 200 low C.0 pause 200 'SEGUNDO PARPADEO RÁPIDO 'salida C.0 -> ON, o bien "nivel alto", o bien "1" 'pausa de 0,2 segundos (200 milisegundos) 'salida C.0 -> OFF, o bien "nivel bajo", o bien "0" 'pausa de 0,2 segundos (200 milisegundos) pause 2000 'PAUSA LARGA (2 segundos) goto inicio 'ir a inicio - Volver a la lista de programas - 02.1 Semáforo simple con tres led Microcontrolador: PICAXE-18M2 (también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar" (también la de alta potencia) Actuadores: Tres led conectados a la salidas B.0, B.1 y B.2 (rojo, amarillo y verde). Función: Alternativamente se van encendiendo los led verde (el que más dura), amarillo y rojo. Implementación práctica: Desarrollado en la SESIÓN 02 del programa Profundiza 2012. Código del programa: 'Tarjeta: 'Micro: 'Salidas: ' ' Proyectos PICAXE-18 estándar (también la de alta potencia) PICAXE-18M2 (también versiones anteriores) B.0 -> LED ROJO B.1 -> LED AMARILLO B.2 -> LED VERDE 'Se simula un semáforo simple 'Los LED se van encendiendo alternativamente 'El verde dura un poco más que el resto inicio: low B.0 low B.1 high B.2 pause 2000 'etiqueta para poder volver 'se apaga la salida 'se apaga la salida 'se enciende la salida 'se esperan 2 segundos a ella 0 1 2 - VERDE - low B.0 high B.1 low B.2 pause 500 'se 'se 'se 'se apaga la enciende la apaga la esperan 0,5 salida 0 salida 1 - AMARILLO salida 2 segundos high B.0 low B.1 low B.2 pause 500 'se 'se 'se 'se enciende la salida 0 - ROJO apaga la salida 1 enciende la salida 2 espera 0,5 segundos goto inicio 'se vuelve a la etiqueta inicio - Volver a la lista de programas - 03.1 Semáforo peatonal (I), tres led y un pulsador Microcontrolador: PICAXE-18M2 (también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar" (también la de alta potencia) Actuadores: Tres led conectados a la salidas 0, 1 y 2 (rojo, amarillo y verde) Sensores: Un pulsador en la entrada 7 Función: Se enciende el led VERDE; se espera pulsación; si se PULSA se pasa a AMARILLO, ROJO y de nuevo al verde, y todo se vuelve a REPETIR Implementación práctica: Desarrollado en la SESIÓN 03 del programa Profundiza 2012 Código del programa: 'Tarjeta: 'Micro : Proyectos PICAXE-18 estándar (también la de alta potencia) PICAXE-18M2 (también versiones anteriores) 'Salidas: ' ' B.0 -> LED ROJO B.1 -> LED AMARILLO B.2 -> LED VERDE 'Entradas: C.7 <- pulsador 'Por defecto se enciende el LED verde 'Si hay pulsación se inicia la secuencia rojo-amarillo-verde 'volviendo a la situación inicial inicio: '--- SEMÁFORO EN VERDE --low B.0 low B.1 high B.2 'se apaga la salida 0 'se apaga la salida 1 'se enciende la salida 2 - VERDE - pulsacion: 'Se espera hasta que se pulse en entrada 7 if pinC.7 is on then cambiar goto pulsacion cambiar: '--- SEMÁFORO EN AMARILLO --low B.0 high B.1 low B.2 pause 1000 'se apaga la salida 0 'se enciende la salida 1 - AMARILLO 'se apaga la salida 2 'se espera 1000 milisegundos - 1 segundo - '--- SEMÁFORO EN ROJO --high B.0 low B.1 low B.2 pause 3000 goto inicio 'se enciende la salida 0 - ROJO 'se apaga la salida 1 'se apaga la salida 2 'se espera 3000 milisegundos - 3 segundos 'se vuelve a inicio (SEMÁFORO EN VERDE y a esperar) - Volver a la lista de programas - 04.1 Siete LED en salidas distintas parpadeando simultáneamente Microcontrolador: PICAXE-18M2 (también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar" Actuadores: Siete led dispuestos circularmente en placa protoboard (con sus resistencias de protección) Función: Aunque conectados a salidas distintas, parpadean todos a la vez cada 0,5 segundos Implementación práctica: Desarrollado en la SESIÓN 04 del programa Profundiza 2012. Código del programa: 'Tarjeta: 'Micro : Proyectos PICAXE-18 estándar PICAXE-18M2 (también versiones anteriores) 'Salidas: B.0 a B.7 -> 7 LED rojos (con resistencias de protección de 330ohm) 'Se trata de una prueba básica de funcionamiento 'Todos los LED se encienden y apagan simultáneamente cada medio segundo 'En este ejemplo vemos cómo pueden manejarse simultánemente todas las salidas let dirsB=%11111111 ;indicamos que desde B.0 a B.7 son todos salidas inicio: let pinsB=%00000000 pause 500 ;salidas con LED 0 a 6 apagadas (la 7 no se usa) let pinsB=%01111111 pause 500 ;salidas con LED 0 a 6 encendidas (la 7 no se usa) goto inicio ;se vuelve a empezar - Volver a la lista de programas - 04.2 Seis led dispuestos circularmente y luz-doble dando vueltas Microcontrolador: PICAXE-18M2 (también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar" Actuadores: Seis LED dispuestos circularmente.en placa protoboard (con sus resistencias de protección). Función: Se simulan dos luces dando vueltas; el estado de los 6 LED se cambia simultáneamente. Implementación práctica: Desarrollado en la SESIÓN 04 del programa Profundiza 2012 Código del programa: 'Tarjeta: 'Micro 'Salidas: : Proyectos PICAXE-18 estándar PICAXE-18M2 (también versiones anteriores) B.0 a B.5 -> 6 LED (con resistencias de protección de 330ohm) 'Los 6 LED están montados en la protoboard formando un círculo 'Se encienden y apagan simultáneamente de dos en dos 'simulando una luz-doble dando vueltas 'En este ejemplo vemos cómo pueden manejarse simultánemente todas las salidas let dirsB=%11111111 ;indicamos que desde B.0 a B.7 son todos salidas inicio: let pinsB=%00000011 pause 150 let pinsB=%00000110 pause 150 let pinsB=%00001100 pause 150 let pinsB=%00011000 pause 150 let pinsB=%00110000 pause 150 let pinsB=%00100001 pause 150 goto inicio ;encendidos 0 y 1 ;encendidos 1 y 2 ;encendidos 2 y 3 ;encendidos 3 y 4 ;encendidos 4 y 5 ;encendidos 5 y 0 ;se vuelve a empezar - Volver a la lista de programas - 04.3 Semáforo peatonal completo (y II) con cinco led, pulsador y zumbador Microcontrolador: PICAXE-18M2 (también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar" Actuadores: Tres LED para luces semáforo coches (rojo en salida B.0, amarillo en B.1 y verde en B.2) Dos LED para luces semáforo peatones (verde en salida B.6 y rojo en la B.7) Zumbador para semáforo peatones (en salida B.4) Sensor: Pulsador fin de carrera para cambiar a paso de peatones (en entrada C.7). Función: El programa controla un paso de peatones en una vía de coches. Inicialmente siempre está en verde el semáforo de coches. Tras pulsar, se cambia a rojo y se pone en verde el de los peatones. Un sonido intermitente se emite mientras dura el paso de peatones. Implementación práctica: Desarrollado en la SESIÓN 04 del programa Profundiza 2012 Esquema eléctrico del circuito: E04.3 Código del programa: 'Tarjeta: 'Micro : Proyectos PICAXE-18 estándar PICAXE-18M2 (también versiones anteriores) 'Salidas: ' LUCES en semáforo para los COCHES ' B.0 -> LED ROJO ' B.1 -> LED AMARILLO ' B.2 -> LED VERDE ' LUCES y SONIDO en semáforo para los PEATONES ' B.6 -> LED VERDE ' B.7 -> LED ROJO ' B.4 -> Zumbador 'Entradas: ' BOTÓN para pasar los PEATONES ' C.7 <- pulsador 'Se simula un SEMÁFORO PEATONAL 'En principio Verde-Coches y Rojo-Peatones siempre encendidos 'Si pulsamos: ' - se pasa a Amarillo-Coches ' - se pasa a Rojo-Coches y Verde-Peatones ' - el zumbador suena 10 veces ' - un último sonido más largo indica que termina ' - se vuelve al principio. inicio: low B.0 low B.1 high B.2 low B.6 high B.7 pulsacion: 'se 'se 'se 'se 'se apaga la apaga la enciende apaga la enciende salida B.0 salida B.1 la salida B.2 salida B.6 la salida B.7 -VERDE coches-ROJO peatones- 'Se espera PULSACION en la entrada C.7 ' ' a) si se pulsa cambiamos a paso de peatones b) si no se pulsa seguimos esperando if pinC.7 is on then cambiar 'a) goto pulsacion 'b) cambiar: low B.0 high B.1 low B.2 'se apaga la salida B.0 'se enciende la salida B.1 'se apaga la salida B.2 pause 2000 'se espera 2 segundos high B.0 low B.1 low B.2 high B.6 low B.7 'se enciende 'se apaga 'se apaga 'se enciende 'se apaga la la la la la salida salida salida salida salida B.0 B.1 B.2 B.6 B.7 -AMARILLO coches- -ROJO coches- -VERDE peatones- for b1=1 to 10 sound 4, (100,60) pause 100 next b1 '10 pitidos 'para el paso de peatones sound 4, (100,200) low B.4 'último pitido más largo 'termina el paso de peatones goto inicio 'se vuelve a inicio - Volver a la lista de programas - 05.1 LED con parpadeo proporcional a la distancia a un objeto Microcontrolador: PICAXE-18M2 (también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar" (también la de alta potencia) Actuador: Led conectado a la salida 0 Sensor: Sensor analógico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V). Función: El programa hace parpadear un led proporcionalmente al valor raw que devuelve al micro. Cuanto más cerca está el objeto, mayor es este valor raw y más rápido parpadea. Implementación práctica: Desarrollado en la SESIÓN 05 del programa Profundiza 2012. Código del programa: 'Tarjeta: 'Micro : Proyectos PICAXE-18 estándar (también la de alta potencia) PICAXE-18M2 (también versiones anteriores) 'Entradas: ' C.0 <- Sensor analógico de proximidad; ' el sensor también está conectado a +4,5V y 0V; 'Salidas : ' B.0 <- LED 'La señal analógica que devuelve el sensor se guarda en la variable b0 'El led parpadea con velocidad proporcional a la señal raw que da el sensor 'Mientras más cerca detecte algo el sensor, más rápido parpadea el led inicio: readadc C.0,b0 'se lee la señal analógica del sensor y mete el valor en b0 'cuanto más cerca detecte algo el sensor, menor será este valor 'debug 'por si se quisiera mostrar en pantalla el valor de "b0" high B.0 pause b0 'se enciende el led 'pausa de "b0" milisegundos low B.0 pause b0 'se apaga el led 'pausa de "b0" milisegundos goto inicio - Volver a la lista de programas - 05.2 Cuenta repetitiva de 0 a 9 con un visualizador con intervalos de 1 segundo. Microcontrolador: PICAXE-18M2 (también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar". Actuador: Visualizador (display) de 7 segmentos conectados a las salidas 0 a 6. Se usan resistencias de protección para cada entrada, puesto se encienden LED. Función: El programa muestra consecutiva e indefinidamente los dígitos del 0 al 9 en un visualizador en intervalos de 1 segundo. Implementación práctica: Desarrollado en la SESIÓN 05 del programa Profundiza 2012. Código del programa: 'Tarjeta: '[**]: 'Micro: Proyectos PICAXE-18 estándar (también la de alta potencia [**]) ¡Ojo! En la de alta pot. las salidas B.4 a B.7 tienen la lógica invertida PICAXE-18M2 (también versiones anteriores) 'Salidas: ' Desde B.0 a B.6 se conectan a los segmentos (LED) del visualizador ' (en total hay 7 resistencias de protección para los 7 LED) ' B.0 -> led_A; B.1 -> led_B; ... ; B.6 -> led_G 'Se cuenta indefinidamente de 0 a 9 cada segundo let dirsB = %01111111 'ponemos B.0 a B.6 como salidas inicio: 'La equivalencia de pines-led es: let pinsB = %00111111 pause 1000 '0 let pinsB = %00000110 pause 1000 '1 let pinsB = %01011011 pause 1000 '2 let pinsB = %01001111 pause 1000 '3 let pinsB = %01100110 pause 1000 '4 let pinsB = %01101101 pause 1000 '5 let pinsB = %01111101 pause 1000 '6 let pinsB = %00100111 pause 1000 '7 let pinsB = %01111111 pause 1000 '8 let pinsB = %01100111 pause 1000 '9 pinsB = '0GFEDCBA' goto inicio - Volver a la lista de programas - 06.1 Calibración de un sensor de distancias Microcontrolador: PICAXE-18M2 (también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar" (también la de alta potencia) Sensor: Sensor analógico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V). Actuador: Ninguno. El resultado lo vemos en pantalla al depurar (DEBUG). Función: El programa funciona en modo depuración. Muestra en pantalla en la variable b0 el valor que devuelve el sensor (0 a 255) cuando colocamos un objeto a una determinada distancia. Código del programa: 'Tarjeta: 'Micro: Proyectos PICAXE-18 estándar (también la de alta potencia) PICAXE-18M2 (también versiones anteriores) 'Entradas: ' C.0 (ADC0) <- Sensor de distancias (4 a 30cm). ' Las otras dos patas del sensor van a G y a V+ 'CALIBRACIÓN '- Construimos la tabla: distancia_real_obstáculo - valor_devuelto_por_sensor. '- Colocamos un obstáculo delante del sensor y anotamos a la distancia que está, ' y en PICAXE Editor vemos el valor que devuelve el sensor. 'Esta tabla de valores nos servirá para hacer la conversión 'distancia_real_obstáculo vs. valor_devuelto_por_sensor. 'NOTA: también se puede usar el asistente de Calibrar Sensor Analógico ' de la aplicación PICAXE Editor e incluso obtener una gráfica. inicio: readadc C.0, b0 debug pause 100 goto inicio ;se lee de C.0 el valor de la distancia y se guarda en b0 ; (C.0 es la entrada analógica 0 ; también se puede usar readadc 0, b0) ;con "debug" podemos leer b0 en pantalla ;se espera 0,1 segundos entre lecturas - Volver a la lista de programas - 06.2 Midiendo con sensor de distancia y mostrando en visualizador de 7 segmentos Microcontrolador: PICAXE-18M2(también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar" (también la de alta potencia) Sensor: Sensor analógico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V) Actuadores: Display de 7 segmentos de ánodo común conectado a las salidas B.0 a B.6 usando las correspondientes resistencias de protección (330ohm) Función: El rango de medición del sensor se ha dividido en 8 segmentos. Si se coloca un objeto al inicio del primero, se visualiza un "1" en el display. Al llegar al segundo un "2" y así sucesivamente hasta el final del último en el se muestra un "9". Cuando no hay objeto se muestra un "0". NOTA: previamente hubo que calibrar el sensor como se indica en el programa anterior. Implementación práctica: Desarrollado en la SESIÓN 06 del programa Profundiza 2012. Código del programa: 'Tarjeta: 'Micro: Proyectos PICAXE-18 estándar (también la de alta potencia) PICAXE-18M2 (también versiones anteriores) 'Entradas: ' C.0 (ADC0) <- Sensor de distancias (4 a 30cm). ' Las otras dos patas del sensor van a G y a V+ 'Salidas: ' B.0 a B.6 -> Visualizador de 7 segmentos ' (ver en la sección de "Actuadores" cómo se conecta) 'Funcionamiento: ' - El rango de distancias del sensor se ha dividido en 8 tramos ' y se ha tomado el valor (RAW) que devuelve el sensor. ' - Según a la distancia que pongamos un objeto, ' se mostrará un valor en el display del 1 al 9 ' - En caso de fuera de distancia o sin objeto, se mostrará un 0. let dirsB = %11111111 ;indicamos que desde B.0 a B.7 son salidas inicio: readadc C.0, b0 debug pause 100 ;se lee de C.0 el valor de distancia y se guarda en b0 ;con "debug" podemos ver la variable b0 en pantalla ;se espera 0,1 segundos entre lecturas ;La siguiente calibración se ha realizado ;previamente de forma manual. ;Según el valor devuelto mostramos uno u otro ;dígito en el display de 7 segmentos. if b0 > 168 then goto num_1 ; 4cm if b0 > 112 if b0 > 72 if b0 > 53 if b0 > 42 if b0 > 34 if b0 > 29 if b0 > 26 if b0 > 23 goto num_0 then then then then then then then then goto goto goto goto goto goto goto goto num_2 num_3 num_4 num_5 num_6 num_7 num_8 num_9 ; 8cm ;12cm ;16cm ;20cm ;24cm ;28cm ;32cm ;36cm ;fuera de rango num_0: let pinsB = %00111111 goto inicio '0 num_1: let pinsB = %00000110 goto inicio '1 num_2: let pinsB = %01011011 goto inicio '2 num_3: let pinsB = %01001111 goto inicio '3 num_4: let pinsB = %01100110 goto inicio '4 num_5: let pinsB = %01101101 goto inicio '5 num_6: let pinsB = %01111101 goto inicio '6 num_7: let pinsB = %00100111 goto inicio '7 num_8: let pinsB = %01111111 goto inicio '8 num_9: let pinsB = %01100111 goto inicio '9 - Volver a la lista de programas - 07.1 Leyendo los códigos de las teclas de un mando a distancia Microcontrolador: PICAXE-18M2 (también versiones anteriores) Tarjeta controladora: "Proyectos PICAXE-18 estándar" (también la de alta potencia) Sensor: Receptor de señales infrarrojas emitidas por un mando a distancia (protocolo Sony). Actuador: Ninguno. El resultado lo vemos en pantalla con "DEBUG". Función: El programa funciona en modo depuración. Muestra en pantalla la variable b5 en la que se ha guardado el valor que devuelve el sensor para cada tecla pulsada del mando a distancia. Código del programa: 'Tarjeta: 'Micro: Proyectos PICAXE-18 estándar" (también la de alta potencia) PICAXE-18M2 (también versiones anteriores) 'Entradas: ' C.0 (ADC0) <- Receptor de infrarrojos (protocolo Sony) ' conectado según manual de PICAXE. 'UTILIDAD DEL PROGRAMA: ' Con este sencillo programa leemos los códigos de las teclas pulsadas ' en el mando a distancia de TV ' y los vemos directamente en la pantalla del ordenador, ' concretamente en la variable b5. inicio: irin [200],C.0,b5 debug goto inicio ;durante 0,2s se espera señal del mando a distancia ;para ver en pantalla el valor b5 con la tecla pulsada - Volver a la lista de programas - 07.2 Controlando cuatro led con un mando a distancia Microcontrolador: Picaxe-18M2. Tarjeta controladora: "Proyectos Picaxe-18". Sensor: Receptor de señales infrarrojas emitidas por un mando a distancia (protocolo Sony). Actuadores: Cuatro led conectados a las salidas 0 a 3.. Función: El programa detecta 5 teclas del mando a distancia. Realiza distintas funciones de encendido y apagado de los led según la tecla pulsada. Implementación práctica: Desarrollado en la SESIÓN 07 del programa Profundiza. Esquema eléctrico del circuito: E07.2 Código del programa: 'Tarjeta "Proyectos Picaxe-18" 'Microcontrolador "Picaxe-18M2" 'Receptor de infrarrojos (protocolo Sony) 'conectado según esquema que proporciona Picaxe en el manual. 'En la entrada 0 (C.0) se conecta la señal que devuelve el sensor anterior. 'En las Salidas 0 a 3 se conectan 4 led. ;Función del programa ;Según la tecla que se pulse en un mando a distancia, ;llega un valor distinto del sensor de infrarrojos ;y se realizan distintas acciones de encendido y apagado con los led. inicio: irin [200],C.0,b5 ;Si hay nueva señal del mando a distancia (por la entrada 0) se guarda en b5. ;Si no hay nueva señal por el mando a distancia, se sale a los 0,2 segundos ;y en b5 sigue el mismo valor anterior. ;irin [200,otra_accion],C.0,b5 ;se podría poner que a los 0,2seg sin recibir señal se saltara a otro sitio ;debug b5 ;se puede visualizar en el ordenador el valor de tecla_pulsada if b5=13 then low 0 low 1 high 2 low 3 endif ;tecla flecha arriba if b5=22 then high 0 low 1 low 2 low 3 endif ;tecla flecha abajo if b5=17 then low 0 high 1 ;tecla flecha izquierda low 2 low 3 endif if b5=16 then low 0 low 1 low 2 high 3 endif ;tecla flecha derecha if b5=23 then for b0=0 to 10 high 0 high 1 high 2 high 3 pause 50 low 0 low 1 low 2 low 3 pause 50 next b0 b5=100 endif ;tecla play ;para reiniciar (cualq. valor) goto inicio - Volver a la lista de programas - 08.2 Movimientos básicos de dos motores con un mando a distancia Microcontrolador: Picaxe 18M2. Tarjeta controladora: "Proyectos Picaxe 18 alta potencia". Sensor: Receptor de señales infrarrojas emitidas por un mando a distancia (protocolo Sony). Actuadores: Dos motores con movimiento reversible. El motor derecho en las salidas B.4 y B.5 (cables negro y rojo). El motor izquierdo en las salidas B.6 y B.7 (cables rojo y negro). Función: El programa detecta 5 teclas del mando a distancia. Realiza distintas combinaciones de movimiento de los motores según la tecla pulsada. Implementación práctica: Desarrollado en la SESIÓN 08 del programa Profundiza. Código del programa: 'Tarjeta "Proyectos Picaxe 18 de alta potencia" 'Microcontrolador "Picaxe-18M2" 'SENSOR 'Receptor de infrarrojos (protocolo Sony) 'conectado según esquema que proporciona Picaxe en el manual 'En la entrada 0 (C.0) se conecta la señal que devuelve el sensor anterior 'la señal se guarda en la variable b0 'ACTUADORES 'Motor derecho en las entradas B.4 (negro) y B.5 (rojo) 'Motor izquierdo en las entradas B.6 (rojo) y B.7 (negro) 'Función 'Según las teclas pulsadas en el mando 'conseguimos distintos movimientos de los motores inicio: irin [200],C.0,b0 ;debug b0 ;durante 0,2s se espera señal del mando a distancia ;para ver en pantalla los valores de tecla pulsada if b0=13 then gosub Avanza ;tecla flecha arriba if b0=22 then gosub Retrocede ;tecla flecha abajo if b0=17 then gosub Izquierda ;tecla flecha izquierda if b0=16 then gosub Derecha ;tecla flecha derecha if b0=23 then gosub Para ;tecla debajo de flecha abajo goto inicio Avanza: low B.4 high B.5 low B.6 high B.7 return Retrocede: high B.4 low B.5 high B.6 low B.7 return ; rueda derecha AVANZA ; rueda izquierda AVANZA ; vuelve al "gosub" ; rueda derecha RETROCEDE ; rueda izquierda RETROCEDE ; vuelve al "gosub" Para: low B.4 low B.5 low B.6 low B.7 return Derecha: low B.4 low B.5 low B.6 high B.7 return Izquierda: low B.4 high B.5 low B.6 low B.7 return ; rueda derecha PARADA ; rueda izquierda PARADA ; vuelve al "gosub" ; rueda derecha PARADA ; rueda izquierda AVANZA ; vuelve al "gosub" ; rueda derecha AVANZA ; rueda izquierda PARADA ; vuelve al "gosub" - Volver a la lista de programas - 11.1 Probando el sensor frontal del robot resuelve-laberintos Microcontrolador: Picaxe-18M2. Tarjeta controladora: "Proyectos Picaxe-18M2 de alta potencia". Sensor: Sensor analógico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V). El sensor está situado en la parte FRONTAL del coche y conectado a la entrada analógica C.0 Actuadores: Dos motores con movimiento reversible. El motor derecho en las salidas B.4 y B.5 El motor izquierdo en las salidas B.6 y B.7 Función: El coche avanza mientras no encuentre una pared enfrente. Si la encuentra gira a la izquierda. El coche debe ser capaz de recorrer un recinto cerrado (por ejemplo cuadrado) por su interior. Implementación práctica: Desarrollado en la SESIÓN 11 del programa Profundiza. Código del programa: 'Tarjeta "Proyectos Picaxe-18M2 de alta potencia" 'Microcontrolador "Picaxe-18M2" 'PRUEBA 1. El coche avanza hasta encontrar una pared de frente ' y entonces gira a la izquierda '(SDF) ' ' ' Sensor analógico de distancias FRONTAL conectado a +4,5V y 0V; La señal analógica que devuelve (SDF) se lee en la entrada analógica C.0 y se guarda en la variable b0 '(MD) '(MI) Motor derecho conectado en las salidas B.4 y B.5 Motor izquierdo conectado en las salidas B.6 y B.7 ; ; ; ; ; B.4 low low high high B.5 low high low high (MD) parado avanza retrocede parado goto para inicio: readadc C.0, b0 ;debug pause 50 B.6 low low high high B.7 low high low high (MI) parado Avanza Retrocede Parado ; se inicia con el coche parado ;se toma el valor de distancia en b0 ;con "debug" podemos leerlo en pantalla ;se espera 0,050 segundos entre lecturas ;La siguiente calibración de (SDF) se ha realizado previamente de forma manual ;b0 -> 168 -> 4cm ;b0 -> 112 -> 8cm ;b0 -> 72 -> 12cm ;b0 -> 53 -> 16cm ;b0 -> 42 -> 20cm ;b0 -> 34 -> 24cm ;b0 -> 29 -> 28cm ;b0 -> 26 -> 32cm ;b0 -> 23 -> +32cm ;PRUEBA 1 - si pared al frente -> giro a la izquierda if b0>150 then goto Para ;si se esta demasiado cerca -> Para if b0<50 then goto Avanza ;si quedan mas de 20cm -> Avanza (CALIBRAR) if b0>49 then goto Giro_Izq_corto ;si quedan menos de 20cm -> Giro_Izq_corto goto inicio Avanza: low high low high goto B.4 ;MD avanza B.5 B.6 ;MI avanza B.7 inicio Para: low low low low goto B.4 ;MD detenido B.5 B.6 ;MI detenido B.7 inicio Giro_Der_corto: low B.4 ;MD detenido low B.5 low B.6 ;MI avanza high B.7 pause 300 ;giro de 0,3 seg goto inicio Giro_Izq_corto: low B.4 ;MD avanza high B.5 low B.6 ;MI detenido low B.7 pause 300 ;giro de 0,3 seg goto inicio - Volver a la lista de programas - 11.2 Probando el sensor derecho del robot resuelve-laberintos Microcontrolador: Picaxe-18M2. Tarjeta controladora: "Proyectos Picaxe-18M2 de alta potencia". Sensor: Sensor analógico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V). El sensor está situado en la cara DERECHA del coche y conectado a la entrada analógica C.1 Actuadores: Dos motores con movimiento reversible. El motor derecho en las salidas B.4 y B.5 El motor izquierdo en las salidas B.6 y B.7 Función: El coche avanza mientras detecte una pared a la derecha. Si no la encuentra gira a la derecha. El coche debe ser capaz de recorrer un recinto cerrado (por ejemplo cuadrado) por su exterior. Implementación práctica: Desarrollado en la SESIÓN 11 del programa Profundiza. Código del programa: 'Tarjeta "Proyectos Picaxe-18M2 de alta potencia" 'Microcontrolador "Picaxe-18M2" ; PRUEBA 2. El coche avanza mientras tenga pared a la derecha ; cuando no la hay entonces gira a la derecha '(SDD) ' ' ' Sensor analógico de distancias DERECHO conectado a +4,5V y 0V; La señal analógica que devuelve (SDD) se lee en la entrada analógica C.1 y se guarda en la variable b1 '(MD) '(MI) Motor derecho conectado en las salidas B.4 y B.5 Motor izquierdo conectado en las salidas B.6 y B.7 ; ; ; ; ; B.4 low low high high B.5 low high low high (MD) parado avanza retrocede parado goto para inicio: readadc C.1, b1 ;debug pause 50 B.6 low low high high B.7 low high low high (MI) parado Avanza Retrocede Parado ; se inicia con el coche parado ;se toma el valor de distancia en b1 ;con "debug" podemos leerlo en pantalla ;se espera 0,050 segundos entre lecturas ;La siguiente calibración de (SDD) se ha realizado previamente de forma manual ;b1 -> 168 -> 4cm ;b1 -> 112 -> 8cm ;b1 -> 72 -> 12cm ;b1 -> 53 -> 16cm ;b1 -> 42 -> 20cm ;b1 -> 34 -> 24cm ;b1 -> 29 -> 28cm ;b1 -> 26 -> 32cm ;b1 -> 23 -> +32cm ;PRUEBA 2 - si no hay pared a la derecha -> giro a la derecha if b1>109 then goto Giro_Izq_corto if b1>49 AND b1<110 then goto Avanza if b1<50 then goto Giro_Der_corto goto inicio Avanza: low high low high goto B.4 ;MD avanza B.5 B.6 ;MI avanza B.7 inicio Para: low low low low goto B.4 ;MD detenido B.5 B.6 ;MI detenido B.7 inicio Giro_Der_corto: low B.4 ;MD detenido low B.5 low B.6 ;MI avanza high B.7 pause 300 ;giro de 0'3 seg goto inicio Giro_Izq_corto: ;si muy cerca -> Giro_Izq_Corto ;entre 20cm y 4cm -> AVANZA (CALIBRAR) ;si más de 20cm -> Giro_Der_corto low B.4 ;MD avanza high B.5 low B.6 ;MI detenido low B.7 pause 300 ;giro de 0'3 seg goto inicio - Volver a la lista de programas - 12.1 PROGRAMA FINAL del "Robot resuelve-laberintos" Microcontrolador: Picaxe-18M2. Tarjeta controladora: "Proyectos Picaxe-18M2 de alta potencia". Sensores: Dos sensores analógico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V). Un sensor está situado en parte FRONTAL y se lee en la entrada analógica C.0 En otro sensor está en la cara DERECHA y se lee en la entrada analógica C.1 Actuadores: Dos motores con movimiento reversible. El motor derecho está conectado a las salidas B.4 y B.5 El motor izquierdo está conectado a las salidas B.6 y B.7 Función: El coche intenta salir de un laberinto. Para ello sigue siempre la pared de su derecha. Implementación práctica: Desarrollado en la SESIÓN 12 del programa Profundiza. Código del programa: 'Tarjeta "Proyectos Picaxe-18M2 de alta potencia" 'Microcontrolador "Picaxe-18M2" ;SALIR ; ; ; DE UN LABERINTO. El coche sigue siempre la pared de su derecha. Para ello intenta estar siempre cerca de la pared de la derecha y si se encuentra una pared de frente entonces gira a la izquierda. '(SDF) Sensor analógico de distancias FRONTAL conectado a +4,5V y 0V; ' La señal analógica que devuelve (SDF) ' se lee en la entrada analógica C.0 ' y se guarda en la variable b0 '(SDD) ' ' ' Sensor analógico de distancias DERECHO conectado a +4,5V y 0V; La señal analógica que devuelve (SDD) se lee en la entrada analógica C.1 y se guarda en la variable b1 '(MD) '(MI) Motor derecho conectado en las salidas B.4 y B.5 Motor izquierdo conectado en las salidas B.6 y B.7 ; ; ; ; ; B.4 low low high high B.5 low high low high (MD) parado avanza retrocede parado goto para inicio: readadc C.0, b0 readadc C.1, b1 ;debug B.6 low low high high B.7 low high low high (MI) parado Avanza Retrocede Parado ; se inicia con el coche parado ;se toma el valor de distancia en b0 ;se toma el valor de distancia en b1 ;con "debug" podemos leerlo en pantalla ;La calibración puede encontrarse en los programas de prueba ;SENSOR DERECHO ;Se intenta estar entre 10 y 20cm de la pared derecha ;Pared derecha a menos de 10cm se gira a la izq ;Pared derecha a mas de 20cm se gira a la der if b1>65 then goto Giro_Izq ;menos de 10 cm -> girar izq if b1<30 then goto Giro_Der ;mas de 20 cm -> girar der ;SENSOR FRONTAL ;Pared frontal a menos de 15cm ¡¡se ROTA a la izq!! ;Pared frontal a menos de 24cm se gira a la izquierda ;Pared frontal a mas de 24cm se avanza if b0>50 then goto Rotar_Izq ;menos de 15cm -> rotacion izq if b0>24 then goto Giro_Izq ;entre 15 y 24cm -> girar izq ;más de 24 cm -> se avanza goto Avanza ;desde Avanza se vuelve a Inicio Avanza: low high low high goto B.4 ;MD avanza B.5 B.6 ;MI avanza B.7 inicio Para: low low low low goto B.4 ;MD detenido B.5 B.6 ;MI detenido B.7 inicio Giro_Der: low B.4 ;MD detenido low B.5 low B.6 ;MI avanza high B.7 pause 300 ;giro de 0,3 seg goto inicio Giro_Izq: low B.4 high B.5 low B.6 low B.7 pause 300 goto inicio Rotar_Izq: low B.4 high B.5 low B.6 low B.7 pause 500 goto inicio ;MD avanza ;MI detenido ;giro de 0,3 seg ;MD avanza ;MI detenido ;rotación izq de 0,5 seg - Volver a la lista de programas - Proyecto Tecnológico "Cinta elevadora con parada automática". 1. Calibración de la LDR. Microcontrolador: Picaxe08. Tarjeta controladora: "Alarmas Picaxe". Sensor: LDR conectada a la entrada 1 del micro (entrada digital). Función: El programa lee y muestra en pantalla el valor RAW que devuelve la LDR según las condiciones de iluminación. Implementación práctica: Desarrollado en el Proyecto Cinta elevadora con parada automática. Código del programa: ;Tarjeta controladora: Alarmas Picaxe ;Microcontrolador: Picaxe-08 ;Sensores: ; LDR conectada a la entrada analógica in1 e iluminado por una bombilla pequeña a unos 10cm. ;Funcionamiento ;En el ordenador leemos los distintos valores que devuelve la LDR ;según la luz que le llega. ;Se tiene en cuenta la bombillita que tiene enfrente, ;si hay o no un objeto entre ambos ;y la iluminación de la sala de trabajo. inicio: debug ;Para visualizar los datos en el ordenador readadc 1,b1 pause 500 ;Se lee el valor que devuelve la LDR ;Se deja algo de tiempo para poder leer goto inicio - Volver a la lista de programas - Proyecto Tecnológico "Cinta elevadora con parada automática". 2. PROGRAMA FINAL de la "Cinta elevadora con parada automática". Microcontrolador: Picaxe08. Tarjeta controladora: "Alarmas Picaxe". Sensor: LDR conectada a la entrada 1 del micro (entrada digital). Actuadores: Led conectado a la salida 0 del micro (viene integrado en la tarjeta). Piezoeléctrico conectado a la salida 2 del micrho (viene integrado en la tarjeta). Motor conectado a la salida 4 del micro (salida de potencia hasta 500mA). Función: El programa detecta cuando llega poca luz a la LDR debido a que tiene un objeto delante. Implementación práctica: Desarrollado en el Proyecto Cinta elevadora con parada automática. Código del programa: ;Tarjeta controladora: Alarmas Picaxe ;Microcontrolador: Picaxe-08 ;Sensores: ; ;Actuadores: ; ; LDR conectada a la entrada analógica in1 e iluminado por una bombilla pequeña a unos 10cm. Motor conectado a la salidad de potencia out4 LED integrado en la tarjeta y conectado a la salida out0 Piezoeléctrico también integrado y conectado a la salida out2 ;Funcionamiento ;La LDR devuelve un valor RAW alto cuando le llega mucha luz ;y bajo cuando le llega poca luz. ;Previa calibración y mediante pruebas ;(hay que tener en cuenta la iluminación de la sala de trabajo), ;se establece el valor a partir del cual se considera que llega poca luz ;porque hay un objeto entre la LDR y la bombilla (en este ejemplo es 120). inicio: readadc 1,b1 if b1<120 then Parada high 4 low 0 goto inicio Parada: low 4 ;Se lee el valor que devuelve la LDR ;Si se baja de un valor previamente calibrado ;entonces ejecutamos la parada. ;Caso contrario se pone en marcha el motor ;Y se apaga el led ;Se apaga el motor high 0 pause 200 low 0 pause 200 ;Se ejecuta un parpadeo rápido del led sound 2, (120,30) ;Se da también un rápido aviso sonoro goto inicio ;Volvemos a leer la LDR repetir el proceso. - Volver a la lista de programas - Proyecto Tecnológico "Coche evita-paredes". 1. PROGRAMA FINAL del "Coche evita-paredes". Microcontrolador: Picaxe-18M2. Tarjeta controladora: "Proyectos Picaxe-18M2 de alta potencia". Sensores: Fin de carrera derecho en entrada C.1 Fin de carrera izquierdo en entrada C.2 Actuadores: Motor derecho en salidas B4 y B5 (movimiento reversible). Motor izquierdo en salidas B6 y B7 (movimiento reversible). Función: Si no está pulsado ningún fin de carrera, el coche avanza. Si se pulsa un fin de carrera, el coche se para, retrocede, gira atrás para evitar el obstáculo que pulsó el fdc, se para y vuelve a avanzar. Implementación práctica: Desarrollado en el Proyecto "Coche evita-paredes". Código del programa: 'Tarjeta "Proyectos Picaxe-18M2 de alta potencia" 'Microcontrolador "Picaxe-18M2" 'Sensores : ' Fin de carrera derecho (fdcD) ' Fin de carrera izquierdo (fdcI) 'Actuadores: ' Motor derecho (MD) en salidas ' Motor izquierdo (MI) en salidas en entrada C.1 en entrada C.2 B4 y B5 B6 y B7 'Funcionamiento: 'Si el fdcD no está pulsado, el MD avanza 'Si el fdcI no está pulsado, el MI avanza 'Si el fdcD sí está pulsado, (obstáculo a la derecha) entonces: ' - se detienen los dos motores ' - se retrocede (ambos motores giran hacia atrás) ' - se vuelven a detener los dos motores ' - el MI gira hacia atrás (con lo que el coche gira a izq.) ' - y por último empieza a avanzar de nuevo 'Si el fdcI sí está pulsado, todo se hace simétricamente a lo anterior. principal: 'pin 1 -> fin de carrera derecho 'out 4 y 5 -> rueda derecha if pinC.2 = 0 then gosub r_izq_avanza if pinC.1 = 0 then gosub r_der_avanza if pinC.2 = 1 then gosub retro_y_gira_r_der if pinC.1 = 1 then gosub retro_y_gira_r_izq goto principal r_der_avanza: low B.4 high B.5 return r_izq_avanza: high B.6 low B.7 return retro_y_gira_r_der: gosub parar wait 1 gosub retroceder wait 1 gosub parar wait 1 gosub r_der_atras wait 2 gosub parar return retro_y_gira_r_izq: gosub parar wait 1 gosub retroceder wait 1 gosub parar wait 1 gosub r_izq_atras wait 2 gosub parar return parar: low B.4 low B.5 low B.6 low B.7 return retroceder: high B.4 low B.5 low B.6 high B.7 return r_der_atras: high B.4 low B.5 return r_izq_atras: low B.6 high B.7 return - Volver a la lista de programas - Proyecto Tecnológico "Coche evita-caídas". 1. PROGRAMA FINAL del "Coche evita-caídas". Microcontrolador: Picaxe-18M2. Tarjeta controladora: "Proyectos Picaxe-18M2 de alta potencia". Sensores: Fin de carrera derecho en entrada C.1 Fin de carrera izquierdo en entrada C.2 Actuadores: Motor derecho en salidas B4 y B5 (movimiento reversible). Motor izquierdo en salidas B6 y B7 (movimiento reversible). Función: Si están pulsados ambos conmutadores fin de carrera, el coche avanza. Si algún fin de carrera deja de estar pulsado, el coche se detiene, retrocede, gira atrás para evitar caer, se para y vuelve a avanzar. Implementación práctica: Desarrollado en el Proyecto "Coche evita-caídas". Código del programa: 'COCHE EVITA-CAÍDAS ' 'Tarjeta "Proyectos Picaxe-18M2 de alta potencia" 'Microcontrolador "Picaxe-18M2" 'Sensores : ' Fin de carrera derecho (fdcD) ' Fin de carrera izquierdo (fdcI) 'Actuadores: ' Motor derecho (MD) en salidas ' Motor izquierdo (MI) en salidas en entrada C.1 en entrada C.2 B4 y B5 B6 y B7 'Funcionamiento: 'Si el fdcD sí está pulsado, el MD avanza 'Si el fdcI sí está pulsado, el MI avanza 'Si el fdcD no está pulsado, (obstáculo a la derecha) entonces: ' - se detienen los dos motores ' - se retrocede (ambos motores giran hacia atrás) ' - se vuelven a detener los dos motores ' - el MI gira hacia atrás (con lo que el coche gira a izq.) ' - y por último empieza a avanzar de nuevo 'Si el fdcI no está pulsado, todo se hace simétricamente a lo anterior. principal: 'pin 1 -> fin de carrera derecho 'out 4 y 5 -> rueda derecha if pinC.2 = 1 then gosub r_izq_avanza if pinC.1 = 1 then gosub r_der_avanza if pinC.2 = 0 then gosub retro_y_gira_r_der if pinC.1 = 0 then gosub retro_y_gira_r_izq goto principal r_der_avanza: low B.4 high B.5 return r_izq_avanza: high B.6 low B.7 return retro_y_gira_r_der: gosub parar wait 1 gosub retroceder wait 1 gosub parar wait 1 gosub r_der_atras wait 2 gosub parar return retro_y_gira_r_izq: gosub parar wait 1 gosub retroceder wait 1 gosub parar wait 1 gosub r_izq_atras wait 2 gosub parar return parar: low B.4 low B.5 low B.6 low B.7 return retroceder: high B.4 low B.5 low B.6 high B.7 return r_der_atras: high B.4 low B.5 return r_izq_atras: low B.6 high B.7 return - Volver a la lista de programas - Proyecto Tecnológico "Coche teledirigido por mando a distancia de IR". 1. Lectura de los códigos de los botones a usar del mando a distancia. Microcontrolador: Picaxe-18M2. Tarjeta controladora: "Proyectos Picaxe-18". Sensor: Receptor de señales infrarrojas emitidas por un mando a distancia (protocolo Sony) segúnesquema proporcionado por Picaxe. Actuador: Ninguno. El resultado lo vemos en pantalla. Función: El programa funciona en modo depuración. Muestra en pantalla en la variable b1 el valor que devuelve el sensor para cada tecla pulsada del mando a distancia. Se trata del mismo programa usado en la "Práctica 7 del Programa Profundiza 2012". Código del programa: 'Tarjeta "Proyectos Picaxe-18" 'Microcontrolador "Picaxe-18M2" 'Receptor de infrarrojos (protocolo Sony) 'conectado según esquema que proporciona Picaxe en el manual. 'En la entrada 1 (C.1) se conecta la señal que devuelve el sensor anterior. 'UTILIDAD DEL PROGRAMA 'Usamos este sencillo programa para leer los codigos de las teclas del mando 'directamente en la pantalla del ordenador, concretamente en la variable b1. inicio: irin [200],C.1,b1 debug b1 goto inicio ;durante 0,2s se espera señal del mando a distancia ;para ver en pantalla el valor de la tecla pulsada - Volver a la lista de programas - Proyecto Tecnológico "Coche teledirigido por mando a distancia de IR". 2. Prueba básica de movimiento de los motores. Microcontrolador: Picaxe-18M2. Tarjeta controladora: "Proyectos Picaxe-18". Sensor: Ninguno. Actuadores: Motor derecho en salidas B4 y B5 (movimiento reversible). Motor izquierdo en salidas B6 y B7 (movimiento reversible). Función: El programa funciona realiza los siguientes movimientos indefinidamente: Avanza 3 segundos (MD y MI avanzan). Retrocede 3 segundos (MD y MI retroceden). Giro a la izquierda 3 segundos (MD avanza y MI se detiene). Giro a la derecha 3 segundos (MD se detiene y MI avanza). Parada durante 3 segundos (MD y MI se detienen). Código del programa: 'Tarjeta "Proyectos Picaxe 18" 'Microcontrolador "Picaxe-18M2" 'Motor derecho en las entradas B.4 (negro) y B.5 (rojo) 'Motor izquierdo en las entradas B.6 (rojo) y B.7 (negro) 'Función: se prueban los movimientos básicos de los motores inicio: gosub Avanza pause 3000 ;tecla flecha arriba ;espera 3 segundos gosub Retrocede pause 3000 ;tecla flecha abajo ;espera 3 segundos gosub Izquierda pause 3000 ;tecla flecha izquierda ;espera 3 segundos gosub Derecha pause 3000 gosub Para pause 3000 goto inicio Avanza: low B.4 high B.5 low B.6 high B.7 return Retrocede: high B.4 low B.5 high B.6 low B.7 return Para: low B.4 low B.5 low B.6 low B.7 return Derecha: low B.4 low B.5 low B.6 high B.7 return Izquierda: low B.4 high B.5 low B.6 low B.7 return ;tecla flecha derecha ;espera 3 segundos ;espera 3 segundos ;vuelve a inicio ; rueda derecha AVANZA ; rueda izquierda AVANZA ; vuelve al "gosub" ; rueda derecha RETROCEDE ; rueda izquierda RETROCEDE ; vuelve al "gosub" ; rueda derecha PARADA ; rueda izquierda PARADA ; vuelve al "gosub" ; rueda derecha PARADA ; rueda izquierda AVANZA ; vuelve al "gosub" ; rueda derecha AVANZA ; rueda izquierda PARADA ; vuelve al "gosub" - Volver a la lista de programas - Proyecto Tecnológico "Coche teledirigido por mando a distancia de IR". 3. PROGRAMA FINAL del "Coche teledirigido por mando de IR" . Microcontrolador: Picaxe-18M2. Tarjeta controladora: "Proyectos Picaxe-18". Sensores: Receptor de infrarrojos en entrada C.1 para leer la señal del mando a distancia. Actuadores: Motor derecho en salidas B4 y B5 (movimiento reversible). Motor izquierdo en salidas B6 y B7 (movimiento reversible). Función: El programa funciona realiza los siguientes movimientos indefinidamente: Avanza 3 segundos (MD y MI avanzan). Retrocede 3 segundos (MD y MI retroceden). Giro a la izquierda 3 segundos (MD avanza y MI se detiene). Giro a la derecha 3 segundos (MD se detiene y MI avanza). Parada durante 3 segundos (MD y MI se detienen). Implementación práctica: Utilizado en el Proyecto "Coche teledirigido por mando a distancia de infrarrojos". Código del programa: 'TARJETA : "Proyectos Picaxe 18 de alta potencia" 'MICRO : "Picaxe-18M2" 'SENSORES: ' - Receptor de infrarrojos (Sony) conectado según esquema de Picaxe ' En la entrada 1 (C.1) se conecta la señal que devuelve el sensor de IR ' y la señal se guarda en la variable b1 'ACTUADORES: ' - Motor derecho en las entradas B.4 (negro) y B.5 (rojo) ' - Motor izquierdo en las entradas B.6 (rojo) y B.7 (negro) 'FUNCIONAMIENTO: ' - Según tecla pulsada en el mando -> distintos movimientos de los motores b1=222; ;valor usado para no hacer nada (reset) inicio: irin [100],C.1,b1 debug b1 ;durante 0,1s se espera señal del mando ;si no llega señal 'b1' no cambia ;para ver en b1 en el ordenador ;Movimientos básicos: se realiza la acción hasta que llegue otra nueva if b1=13 then gosub Avanza ;TECLA flecha arriba if b1=22 then gosub Retrocede ;TECLA flecha abajo if b1=17 then gosub Izquierda ;TECLA flecha izquierda if b1=16 then gosub Derecha ;TECLA flecha derecha if b1=23 then gosub Para ;TECLA debajo de flecha abajo ;Maniobras varias programadas. Al terminal el coche se detiene if b1=10 then ;TECLA 0 - giro cerrado sobre si mismo a izq gosub Giro_cerrado_izquierda pause 3000 gosub Para b1=222 endif if b1=0 then ;TECLA 1 - avanza 50cm, retrocede 50cm gosub Avanza ; y al final se detiene pause 700 gosub Retrocede pause 700 gosub Para b1=222 endif if b1=1 then ;TECLA 2 - cuadrado de 20cm lado hacia izq. gosub Avanza ; y al final se detiene pause 3000 gosub Giro_cerrado_izquierda pause 2000 gosub pause gosub pause Avanza 3000 Giro_cerrado_izquierda 2000 gosub pause gosub pause Avanza 3000 Giro_cerrado_izquierda 2000 gosub Avanza pause 3000 gosub Giro_cerrado_izquierda pause 2000 b1=222 endif if b1=2 then ;TECLA 3 - triangulo de 25cm lado hacia der. gosub Giro_cerrado_derecha ;y al final se detiene pause 1500 gosub Avanza pause 4000 gosub pause gosub pause Giro_cerrado_derecha 2000 Avanza 4000 gosub Giro_cerrado_derecha pause 2000 gosub Avanza pause 4000 b1=222 endif goto inicio ;--- Fin del bucle principal del programa --- ;SUBRUTINAS DE MOVIMIENTOS DE LAS RUEDAS Avanza: low B.4 ; rueda derecha AVANZA high B.5 low B.6 ; rueda izquierda AVANZA high B.7 return ; vuelve al "gosub" Retrocede: high B.4 low B.5 high B.6 low B.7 return Para: low B.4 low B.5 low B.6 low B.7 return Derecha: low B.4 low B.5 low B.6 high B.7 return Izquierda: low B.4 high B.5 low B.6 low B.7 return ; rueda derecha RETROCEDE ; rueda izquierda RETROCEDE ; vuelve al "gosub" ; rueda derecha PARADA ; rueda izquierda PARADA ; vuelve al "gosub" ; rueda derecha PARADA ; rueda izquierda AVANZA ; vuelve al "gosub" ; rueda derecha AVANZA ; rueda izquierda PARADA ; vuelve al "gosub" - Volver a la lista de programas - Configuración con módulo JY-MCU de Bluetooth Enviar comando "AT+VERSION" y leer la versión del módulo Microcontrolador: PICAXE-18M2 Tarjeta controladora: "Proyectos PICAXE-18 estándar" (también la de alta potencia) Sensor/actuador: Módulo JY-MCU V1.06 de comunicaciones por Bluetooth (HC-06) Función: Enviar comando "AT+VERSION" para leer la versión del módulo Leer en pantalla la versión que se devuelve ("OK LinvorV1.8" en nuestro caso) De forma similar, enviar cualquier comando "AT" y leer su resultado Conexiones (módulo-Picaxe): Vcc ---- V+ (por ej. 4,5V) Gnd ---- G Txd ---> C.0 Rxd <--- C.1 (hay que indicar que C.1 funcionará como salida) Resistencia de 10K entre V+ y C.0 (también vale de 1K) Esta resistencia se pone porque las entradas de las tarjetas traen una resistencia de pull-down de 10K que no hace posible la lectura directa desde el módulo NOTA: si usamos directamente un PICAXE-18M2 sin tarjeta controladora, NO hace falta la resistencia anterior Código del programa: ;Tarjeta: "Proyectos PICAXE-18 estándar" (también la de alta potencia) ;Micro : PICAXE-18M2 ;Otros : Módulo JY-MCU V1.06 (tiene 4 pines; Vcc-Gnd-Txd-Rxd) ; ;Vcc -- V+ ;Gnd -- 0V ;Txd -> C.0 ;más una resistencia de 10K (o de 1K) entre C.0 y V+ !! ;Rxd <- C.1 ;Parámetros iniciales de configuración pause 1000 output C.1 ;(indicamos que C.1 funcionará como salida) setfreq m8 ; ponemos la frecuencia a 8MHz (por defecto es 4MHz) do ;Envío del comando AT por salida C.1 serout C.1, T9600_8, ("AT+VERSION") pause 200 ;Lectura de datos devueltos por entrada C.0 serin [1000], C.0, T9600_8, b0,b1,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15 debug pause 8000 w0=0 w1=0 debug pause 4000 ; (debe aparecer "OK LinvorV1.8" en b0-...-b15) w2=0 w3=0 w4=0 w5=0 w6=0 w7=0 ; (todas las variables aparecen a "0") loop ;NOTA FINAL ;Si utilizamos el comando: serout C.1, T9600_8, ("AT") ;la lectura de datos nos devolvería "OK" - Volver a la lista de programas - Configuración con módulo JY-MCU de Bluetooth Enviar comando "AT+NAMEnombre" para cambiar nombre del módulo Microcontrolador: PICAXE-18M2 Tarjeta controladora: "Proyectos PICAXE-18 estándar" (también la de alta potencia) Sensor/actuador: Módulo JY-MCU V1.06 de comunicaciones por Bluetooth (HC-06) Función: Enviar comando "AT+NOMBREnombrehasta20caracte" para cambiar el nombre del módulo (por defecto se llama HC-06) Leer en pantalla "OK setname" si el cambio se realizó correctamente Comprobar desde tableta Android que cambió el nombre Conexiones (módulo-Picaxe): Vcc ---- V+ (por ej. 4,5V) Gnd ---- G Txd ---> C.0 Rxd <--- C.1 (hay que indicar que C.1 funcionará como salida) Resistencia de 10K entre V+ y C.0 (también vale de 1K) Esta resistencia se pone porque las entradas de las tarjetas traen una resistencia de pull-down de 10K que no hace posible la lectura directa desde el módulo NOTA: si usamos directamente un PICAXE-18M2 sin tarjeta controladora, NO hace falta la resistencia anterior Código del programa: ;Tarjeta: "Proyectos PICAXE-18 estándar" (también la de alta potencia) ;Micro : PICAXE-18M2 ;Otros : Módulo JY-MCU V1.06 (tiene 4 pines; Vcc-Gnd-Txd-Rxd) ; ;Vcc -- V+ ;Gnd -- 0V ;Txd -> C.0 ;más una resistencia de 10K (o de 1K) entre C.0 y V+ !! ;Rxd <- C.1 ;Parámetros iniciales de configuración pause 1000 output C.1 ;(indicamos que C.1 funcionará como salida) setfreq m8 ; ponemos la frecuencia a 8MHz (por defecto es 4MHz) do while b0=0 ;Envío del comando AT por salida C.1 serout C.1, T9600_8, ("AT+NAMEnombrehasta20caracte") pause 200 ;Lectura de datos devueltos por entrada C.0 serin [1000], C.0, T9600_8, b0,b1,b3,b4,b5,b6,b7,b8,b9 debug ;(debe aparecer "OK setname" en b0-...-b9 loop ;NOTAS FINALES ;Este programa finalizará cuando se devuelva el "OK setname". ;Si buscamos ahora el módulo Bluetooth desde una tableta o móvil Android, ;debería aparecer en la misma el nuevo nombre (por defecto es HC-06). ;De forma similar, con el correspondiente comando AT ;se podría cambiar también la contraseña o la velocidad de transmisión. - Volver a la lista de programas - 1. Coche controlado por Bluetooth (5 movimientos básicos) Microcontrolador: PICAXE-18M2 Tarjeta controladora: "Proyectos PICAXE-18 de alta potencia" Sensor: Módulo JY-MCU V1.06 de comunicaciones por Bluetooth (HC-06) Actuadores: Dos motores Función: Se leen los códigos enviados desde la tableta por Bluetooth Según el valor el coche avanza, gira a izquierda o derecha, se detiene o retrocede. Comprobar desde tableta Android que cambió el nombre Conexiones (módulo-Picaxe): Vcc ---- V+ (por ej. 4,5V) Gnd ---- G Txd ---> C.0 Resistencia de 10K entre V+ y C.0 (también vale de 1K) Esta resistencia se pone porque las entradas de las tarjetas traen una resistencia de pull-down de 10K que no hace posible la lectura directa desde el módulo NOTA: si usamos directamente un PICAXE-18M2 sin tarjeta controladora, NO hace falta la resistencia anterior Código del programa: ;------------- INFORMACIÓN -------------; Nombre : coche-controlado-por-Bluetooth.bas ; Autor : Departamento de Tecnología - IES J. Romero Murube ; Micro : PICAXE-18M2 (CHI035A) ; Entradas: C.0 <- Tx del módulo Bluetooth (HC-06) ; Salidas : B.4 B.5 -> motor izquierdo ; B.6 B.7 -> motor derecho ; Función : Se controlan los 5 movimientos básicos del coche ; desde una tableta a través de Bluetooth ; usando nuestra App de Androig "MultiControlBT" ;---------------------------------------- ;----------- INICIALIZACIÓN ------------pause 1000 setfreq m8 pause 1000 ;---------------------------------------- ;----------- BUCLE PRINCIPAL -----------do serin c.0, T9600_8, b0 ;se guarda en b0 el valor ;debug ;transmitido por Bluetooth select case b0 case 2 ;Códigos gosub avanzar ; 2 case 5 ; 4 5 6 gosub detener ; 8 case 4 gosub girar_izquierda case 6 gosub girar_derecha case 8 gosub retroceder endselect loop ;---------------------------------------- ;------------- SUBRUTINAS --------------detener: low B.4 ;rueda izquierda se detiene low B.5 low B.6 low B.7 ;rueda derecha se detiene return girar_izquierda: low B.4 low B.5 high B.6 low B.7 ;rueda izquierda se detiene ;rueda derecha avanza return girar_derecha: high B.4 low B.5 low B.6 low B.7 ;rueda izquierda avanza ;rueda derecha se detiene return avanzar: high B.4 low B.5 high B.6 low B.7 ;rueda izquierda avanza ;rueda derecha avanza return retroceder: low B.4 high B.5 low B.6 high B.7 ;rueda izquierda retrocede ;rueda derecha retrocede return ;---------------------------------------- Volver a la lista de programas -