Programación de los microcontroladores PICAXE · Programas Programación de los microcontroladores...

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

Transcript of Programación de los microcontroladores PICAXE · Programas Programación de los microcontroladores...

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 'salida C.0 -> ON

pause 1000 'pausa de 1,0 segundos

low C.0 'salida C.0 -> OFF

pause 500 '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: Alarmas PICAXE

'Micro : PICAXE-08M2 (también versiones anteriores)

'Salidas: 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:

'PRIMER PARPADEO RÁPIDO

high C.0 'salida C.0 -> ON, o bien "nivel alto", o bien "1"

pause 200 'pausa de 0,2 segundos (200 milisegundos)

low C.0 'salida C.0 -> OFF, o bien "nivel bajo", o bien "0"

pause 200 'pausa de 0,2 segundos (200 milisegundos)

'SEGUNDO PARPADEO RÁPIDO

high C.0 'salida C.0 -> ON, o bien "nivel alto", o bien "1"

pause 200 'pausa de 0,2 segundos (200 milisegundos)

low C.0 'salida C.0 -> OFF, o bien "nivel bajo", o bien "0"

pause 200 '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: Proyectos PICAXE-18 estándar (también la de alta potencia)

'Micro: PICAXE-18M2 (también versiones anteriores)

'Salidas: 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: 'etiqueta para poder volver a ella

low B.0 'se apaga la salida 0

low B.1 'se apaga la salida 1

high B.2 'se enciende la salida 2 - VERDE -

pause 2000 'se esperan 2 segundos

low B.0 'se apaga la salida 0

high B.1 'se enciende la salida 1 - AMARILLO -

low B.2 'se apaga la salida 2

pause 500 'se esperan 0,5 segundos

high B.0 'se enciende la salida 0 - ROJO -

low B.1 'se apaga la salida 1

low B.2 'se enciende la salida 2

pause 500 'se 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: Proyectos PICAXE-18 estándar (también la de alta potencia)

'Micro : 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 'se apaga la salida 0

low B.1 'se apaga la salida 1

high B.2 '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 'se apaga la salida 0

high B.1 'se enciende la salida 1 - AMARILLO -

low B.2 'se apaga la salida 2

pause 1000 'se espera 1000 milisegundos - 1 segundo -

'--- SEMÁFORO EN ROJO ---

high B.0 'se enciende la salida 0 - ROJO -

low B.1 'se apaga la salida 1

low B.2 'se apaga la salida 2

pause 3000 'se espera 3000 milisegundos - 3 segundos -

goto inicio '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: Proyectos PICAXE-18 estándar

'Micro : 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 ;salidas con LED 0 a 6 apagadas (la 7 no se usa)

pause 500

let pinsB=%01111111 ;salidas con LED 0 a 6 encendidas (la 7 no se usa)

pause 500

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: Proyectos PICAXE-18 estándar

'Micro : PICAXE-18M2 (también versiones anteriores)

'Salidas: 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 ;encendidos 0 y 1

pause 150

let pinsB=%00000110 ;encendidos 1 y 2

pause 150

let pinsB=%00001100 ;encendidos 2 y 3

pause 150

let pinsB=%00011000 ;encendidos 3 y 4

pause 150

let pinsB=%00110000 ;encendidos 4 y 5

pause 150

let pinsB=%00100001 ;encendidos 5 y 0

pause 150

goto inicio ;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: Proyectos PICAXE-18 estándar

'Micro : 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 'se apaga la salida B.0

low B.1 'se apaga la salida B.1

high B.2 'se enciende la salida B.2 -VERDE coches-

low B.6 'se apaga la salida B.6

high B.7 'se enciende la salida B.7 -ROJO peatones-

pulsacion: '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 'se apaga la salida B.0

high B.1 'se enciende la salida B.1 -AMARILLO coches-

low B.2 'se apaga la salida B.2

pause 2000 'se espera 2 segundos

high B.0 'se enciende la salida B.0 -ROJO coches-

low B.1 'se apaga la salida B.1

low B.2 'se apaga la salida B.2

high B.6 'se enciende la salida B.6 -VERDE peatones-

low B.7 'se apaga la salida B.7

for b1=1 to 10 '10 pitidos

sound 4, (100,60) 'para el paso de peatones

pause 100

next b1

sound 4, (100,200) 'último pitido más largo

low B.4 '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: Proyectos PICAXE-18 estándar (también la de alta potencia)

'Micro : 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 'se enciende el led

pause b0 'pausa de "b0" milisegundos

low B.0 'se apaga el led

pause b0 '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: 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

'Micro: 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: pinsB = '0GFEDCBA'

let pinsB = %00111111 '0

pause 1000

let pinsB = %00000110 '1

pause 1000

let pinsB = %01011011 '2

pause 1000

let pinsB = %01001111 '3

pause 1000

let pinsB = %01100110 '4

pause 1000

let pinsB = %01101101 '5

pause 1000

let pinsB = %01111101 '6

pause 1000

let pinsB = %00100111 '7

pause 1000

let pinsB = %01111111 '8

pause 1000

let pinsB = %01100111 '9

pause 1000

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: Proyectos PICAXE-18 estándar (también la de alta potencia)

'Micro: 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 ;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)

debug ;con "debug" podemos leer b0 en pantalla

pause 100 ;se espera 0,1 segundos entre lecturas

goto inicio

- 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: Proyectos PICAXE-18 estándar (también la de alta potencia)

'Micro: 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 ;se lee de C.0 el valor de distancia y se guarda en b0

debug ;con "debug" podemos ver la variable b0 en pantalla

pause 100 ;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 then goto num_2 ; 8cm

if b0 > 72 then goto num_3 ;12cm

if b0 > 53 then goto num_4 ;16cm

if b0 > 42 then goto num_5 ;20cm

if b0 > 34 then goto num_6 ;24cm

if b0 > 29 then goto num_7 ;28cm

if b0 > 26 then goto num_8 ;32cm

if b0 > 23 then goto num_9 ;36cm

goto num_0 ;fuera de rango

num_0:

let pinsB = %00111111 '0

goto inicio

num_1:

let pinsB = %00000110 '1

goto inicio

num_2:

let pinsB = %01011011 '2

goto inicio

num_3:

let pinsB = %01001111 '3

goto inicio

num_4:

let pinsB = %01100110 '4

goto inicio

num_5:

let pinsB = %01101101 '5

goto inicio

num_6:

let pinsB = %01111101 '6

goto inicio

num_7:

let pinsB = %00100111 '7

goto inicio

num_8:

let pinsB = %01111111 '8

goto inicio

num_9:

let pinsB = %01100111 '9

goto inicio

- 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: Proyectos PICAXE-18 estándar" (también la de alta potencia)

'Micro: 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 ;durante 0,2s se espera señal del mando a distancia

debug ;para ver en pantalla el valor b5 con la tecla pulsada

goto inicio

- 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 ;tecla flecha arriba

low 0

low 1

high 2

low 3

endif

if b5=22 then ;tecla flecha abajo

high 0

low 1

low 2

low 3

endif

if b5=17 then ;tecla flecha izquierda

low 0

high 1

low 2

low 3

endif

if b5=16 then ;tecla flecha derecha

low 0

low 1

low 2

high 3

endif

if b5=23 then ;tecla play

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 ;para reiniciar (cualq. valor)

endif

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 ;durante 0,2s se espera señal del mando a distancia

;debug b0 ;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 ; rueda derecha AVANZA

high B.5

low B.6 ; rueda izquierda AVANZA

high B.7

return ; vuelve al "gosub"

Retrocede:

high B.4 ; rueda derecha RETROCEDE

low B.5

high B.6 ; rueda izquierda RETROCEDE

low B.7

return ; vuelve al "gosub"

Para:

low B.4 ; rueda derecha PARADA

low B.5

low B.6 ; rueda izquierda PARADA

low B.7

return ; vuelve al "gosub"

Derecha:

low B.4 ; rueda derecha PARADA

low B.5

low B.6 ; rueda izquierda AVANZA

high B.7

return ; vuelve al "gosub"

Izquierda:

low B.4 ; rueda derecha AVANZA

high B.5

low B.6 ; rueda izquierda PARADA

low B.7

return ; 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) Motor derecho conectado en las salidas B.4 y B.5

'(MI) Motor izquierdo conectado en las salidas B.6 y B.7

; B.4 B.5 (MD) B.6 B.7 (MI)

; low low parado low low parado

; low high avanza low high Avanza

; high low retrocede high low Retrocede

; high high parado high high Parado

goto para ; se inicia con el coche parado

inicio:

readadc C.0, b0 ;se toma el valor de distancia en b0

;debug ;con "debug" podemos leerlo en pantalla

pause 50 ;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 B.4 ;MD avanza

high B.5

low B.6 ;MI avanza

high B.7

goto inicio

Para:

low B.4 ;MD detenido

low B.5

low B.6 ;MI detenido

low B.7

goto 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) Motor derecho conectado en las salidas B.4 y B.5

'(MI) Motor izquierdo conectado en las salidas B.6 y B.7

; B.4 B.5 (MD) B.6 B.7 (MI)

; low low parado low low parado

; low high avanza low high Avanza

; high low retrocede high low Retrocede

; high high parado high high Parado

goto para ; se inicia con el coche parado

inicio:

readadc C.1, b1 ;se toma el valor de distancia en b1

;debug ;con "debug" podemos leerlo en pantalla

pause 50 ;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 ;si muy cerca -> Giro_Izq_Corto

if b1>49 AND b1<110 then goto Avanza ;entre 20cm y 4cm -> AVANZA (CALIBRAR)

if b1<50 then goto Giro_Der_corto ;si más de 20cm -> Giro_Der_corto

goto inicio

Avanza:

low B.4 ;MD avanza

high B.5

low B.6 ;MI avanza

high B.7

goto inicio

Para:

low B.4 ;MD detenido

low B.5

low B.6 ;MI detenido

low B.7

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

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) Motor derecho conectado en las salidas B.4 y B.5

'(MI) Motor izquierdo conectado en las salidas B.6 y B.7

; B.4 B.5 (MD) B.6 B.7 (MI)

; low low parado low low parado

; low high avanza low high Avanza

; high low retrocede high low Retrocede

; high high parado high high Parado

goto para ; se inicia con el coche parado

inicio:

readadc C.0, b0 ;se toma el valor de distancia en b0

readadc C.1, b1 ;se toma el valor de distancia en b1

;debug ;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 B.4 ;MD avanza

high B.5

low B.6 ;MI avanza

high B.7

goto inicio

Para:

low B.4 ;MD detenido

low B.5

low B.6 ;MI detenido

low B.7

goto 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 ;MD avanza

high B.5

low B.6 ;MI detenido

low B.7

pause 300 ;giro de 0,3 seg

goto inicio

Rotar_Izq:

low B.4 ;MD avanza

high B.5

low B.6 ;MI detenido

low B.7

pause 500 ;rotación izq de 0,5 seg

goto inicio

- 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 ;Se lee el valor que devuelve la LDR

pause 500 ;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: LDR conectada a la entrada analógica in1

; e iluminado por una bombilla pequeña a unos 10cm.

;Actuadores: 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 ;Se lee el valor que devuelve la LDR

if b1<120 then Parada ;Si se baja de un valor previamente calibrado

;entonces ejecutamos la parada.

high 4 ;Caso contrario se pone en marcha el motor

low 0 ;Y se apaga el led

goto inicio

Parada:

low 4 ;Se apaga el motor

high 0 ;Se ejecuta un parpadeo rápido del led

pause 200

low 0

pause 200

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) en entrada C.1

' Fin de carrera izquierdo (fdcI) en entrada C.2

'Actuadores:

' Motor derecho (MD) en salidas B4 y B5

' Motor izquierdo (MI) en salidas 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) en entrada C.1

' Fin de carrera izquierdo (fdcI) en entrada C.2

'Actuadores:

' Motor derecho (MD) en salidas B4 y B5

' Motor izquierdo (MI) en salidas 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 ;durante 0,2s se espera señal del mando a distancia

debug b1 ;para ver en pantalla el valor de la tecla pulsada

goto inicio

- 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 ;tecla flecha arriba

pause 3000 ;espera 3 segundos

gosub Retrocede ;tecla flecha abajo

pause 3000 ;espera 3 segundos

gosub Izquierda ;tecla flecha izquierda

pause 3000 ;espera 3 segundos

gosub Derecha ;tecla flecha derecha

pause 3000 ;espera 3 segundos

gosub Para

pause 3000 ;espera 3 segundos

goto inicio ;vuelve a inicio

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 ; rueda derecha RETROCEDE

low B.5

high B.6 ; rueda izquierda RETROCEDE

low B.7

return ; vuelve al "gosub"

Para:

low B.4 ; rueda derecha PARADA

low B.5

low B.6 ; rueda izquierda PARADA

low B.7

return ; vuelve al "gosub"

Derecha:

low B.4 ; rueda derecha PARADA

low B.5

low B.6 ; rueda izquierda AVANZA

high B.7

return ; vuelve al "gosub"

Izquierda:

low B.4 ; rueda derecha AVANZA

high B.5

low B.6 ; rueda izquierda PARADA

low B.7

return ; 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 ;durante 0,1s se espera señal del mando

;si no llega señal 'b1' no cambia

debug b1 ;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 Avanza

pause 3000

gosub Giro_cerrado_izquierda

pause 2000

gosub Avanza

pause 3000

gosub Giro_cerrado_izquierda

pause 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 Giro_cerrado_derecha

pause 2000

gosub Avanza

pause 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 ; rueda derecha RETROCEDE

low B.5

high B.6 ; rueda izquierda RETROCEDE

low B.7

return ; vuelve al "gosub"

Para:

low B.4 ; rueda derecha PARADA

low B.5

low B.6 ; rueda izquierda PARADA

low B.7

return ; vuelve al "gosub"

Derecha:

low B.4 ; rueda derecha PARADA

low B.5

low B.6 ; rueda izquierda AVANZA

high B.7

return ; vuelve al "gosub"

Izquierda:

low B.4 ; rueda derecha AVANZA

high B.5

low B.6 ; rueda izquierda PARADA

low B.7

return ; 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 ; (debe aparecer "OK LinvorV1.8" en b0-...-b15)

w0=0 w1=0 w2=0 w3=0 w4=0 w5=0 w6=0 w7=0

debug

pause 4000 ; (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 ;rueda derecha se detiene

low B.7

return

girar_izquierda:

low B.4 ;rueda izquierda se detiene

low B.5

high B.6 ;rueda derecha avanza

low B.7

return

girar_derecha:

high B.4 ;rueda izquierda avanza

low B.5

low B.6 ;rueda derecha se detiene

low B.7

return

avanzar:

high B.4 ;rueda izquierda avanza

low B.5

high B.6 ;rueda derecha avanza

low B.7

return

retroceder:

low B.4 ;rueda izquierda retrocede

high B.5

low B.6 ;rueda derecha retrocede

high B.7

return

;----------------------------------------

- Volver a la lista de programas -