Vous êtes sur la page 1sur 45

Programas

Programacin de los microcontroladores


PICAXE
Los micros Picaxe que usamos en el taller se pueden programar con distintas aplicaciones.
La mejor opcin es utilizar la aplicacin oficial:

PICAXE Editor 6

Principales caractersticas de PICAXE Editor 6


Totalmente gratis.
Traducido al espaol, adems de a otros idiomas.
Funciona en Windows. Est prevista la migracin a Mac y Linux
La hemos probado en Ubuntu 14 con Wine y funciona correctamente.
Completsimo editor de texto con mltiples 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 programacin: BASIC y Diagramas de flujo
En modo depuracin (DEBUG), puede verse el valor de cada pin y de cada variable del programa.
Mltiples asistentes, por ejemplo para calibrar sensores analgicos.
IMPORTANTSIMO
Permite la simulacin de los programas en el ordenador sin ningn hardware adicional, sin
controladoras, ni sensores, ni nada de nada. Lnea a lnea se va viendo cmo evoluciona el programa.
Adems se puede ver grficamente la simulacin sobre la tarjeta controladora que se use.

NOTA
Los programas que se muestran a continuacin, pueden simularse en el ordenador sin necesidad de tener en ese
momento fsicamente las tarjetas controladoras. Es suficiente la aplicacin 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 prcticamente cubre todos los casos de
programacin y que est dividida en cuatro secciones:
I - INFORMACIN. Datos con los que se documenta el programa (micro, entradas y salidas utilizadas,
funcionalidad,...).
II - INICIALIZACIN. 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 cdigo que pueden llamarse desde el bucle principal u otra subrutina.

PLANTILLA para los programas


;------------- INFORMACIN --------------
; Nombre :
; Autor :
; Micro :
; Entradas:
; Salidas :
; Funcin :
;----------------------------------------

;----------- INICIALIZACIN -------------

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

;----------- BUCLE PRINCIPAL ------------


do

loop
;----------------------------------------

;------------- SUBRUTINAS ---------------

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

NOTA
La plantilla anterior solo aparece en los programas ms recientes.
En los ms antiguos an utilizamos el formato clsico con "inicio:" y "goto inicio"
LISTA DE PROGRAMAS
que hemos desarrollado para nuestras prcticas 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 Semforo simple con tres led.
03.1 Semforo peatonal (I) con tres led y un pulsador.
04.1 Siete led en salidas dinstintas parpadeando simultneamente.
04.2 Seis led dispuestos circularmente y luz-doble dando vueltas.
04.3 Semforo 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 Calibracin 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 cdigos de las teclas de un mando a distancia.
07.2 Controlando cuatro led con un mando a distancia.
08.2 Movimientos bsicos 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 Tecnolgico "Cinta elevadora con parada automtica"


1. Calibracin de la LDR.
2. PROGRAMA FINAL de la "Cinta elevadora con parada automtica".

Proyecto Tecnolgico "Coche evita-paredes"


1. PROGRAMA FINAL del "Coche evita-paredes".

Proyecto Tecnolgico "Coche evita-cadas"


1. PROGRAMA FINAL del "Coche evita-cadas".

Proyecto Tecnolgico "Coche teledirigido por mando a distancia de infrarrojos"


1. Lectura de los cdigos de los botones a usar del mando a distancia de IR.
2. Prueba bsica de movimiento de los motores.
3. PROGRAMA FINAL del "Coche teledirigido por mando a distancia de infrarrojos".

Configuracin del mdulo JY-MCU V1.06 para comunicaciones por Bluetooth


Enviar comando "AT+VERSION" y leer la versin del mdulo
Cambiar el nombre del mdulo con "AT+NAMEnombrehasta20caracte"

Proyecto Tecnolgico "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).
Funcin: El programa hace parpadear indefinidamente el led; puede ajustarse el tiempo que est encendido
y apagado.
Implementacin prctica: Desarrollado en la SESIN 01 del programa Profundiza 2012.
Cdigo del programa:

'Tarjeta: Alarmas PICAXE


'Micro : PICAXE-08M2 (tambin 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).
Funcin: El programa hace parpadear el led dos veces muy rpido, seguido de una pausa lenta; todo
indefinidamente.
Implementacin prctica: Desarrollado en la SESIN 01 del programa Profundiza 2012.
Cdigo del programa:

'Tarjeta: Alarmas PICAXE


'Micro : PICAXE-08M2 (tambin versiones anteriores)
'Salidas: C.0 -> LED

'El siguiente programa hace parpadear el LED:


' dos parpadeos muy rpidos seguido de una pausa lenta
' y todo se repite indefinidamente.

inicio:
'PRIMER PARPADEO RPIDO
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 RPIDO


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 Semforo simple con tres led


Microcontrolador: PICAXE-18M2 (tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar" (tambin la de alta potencia)
Actuadores: Tres led conectados a la salidas B.0, B.1 y B.2 (rojo, amarillo y verde).
Funcin: Alternativamente se van encendiendo los led verde (el que ms dura), amarillo y rojo.
Implementacin prctica: Desarrollado en la SESIN 02 del programa Profundiza 2012.
Cdigo del programa:

'Tarjeta: Proyectos PICAXE-18 estndar (tambin la de alta potencia)


'Micro: PICAXE-18M2 (tambin versiones anteriores)
'Salidas: B.0 -> LED ROJO
' B.1 -> LED AMARILLO
' B.2 -> LED VERDE

'Se simula un semforo simple


'Los LED se van encendiendo alternativamente
'El verde dura un poco ms 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 Semforo peatonal (I), tres led y un pulsador


Microcontrolador: PICAXE-18M2 (tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar" (tambin 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
Funcin: Se enciende el led VERDE; se espera pulsacin; si se PULSA se pasa a AMARILLO, ROJO y de
nuevo al verde, y todo se vuelve a REPETIR
Implementacin prctica: Desarrollado en la SESIN 03 del programa Profundiza 2012
Cdigo del programa:
'Tarjeta: Proyectos PICAXE-18 estndar (tambin la de alta potencia)
'Micro : PICAXE-18M2 (tambin 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 pulsacin se inicia la secuencia rojo-amarillo-verde
'volviendo a la situacin inicial

inicio:
'--- SEMFORO 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:
'--- SEMFORO 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 -

'--- SEMFORO 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 (SEMFORO EN VERDE y a esperar)

- Volver a la lista de programas -


04.1 Siete LED en salidas distintas parpadeando
simultneamente
Microcontrolador: PICAXE-18M2 (tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar"
Actuadores: Siete led dispuestos circularmente en placa protoboard (con sus resistencias de proteccin)
Funcin: Aunque conectados a salidas distintas, parpadean todos a la vez cada 0,5 segundos
Implementacin prctica: Desarrollado en la SESIN 04 del programa Profundiza 2012.
Cdigo del programa:

'Tarjeta: Proyectos PICAXE-18 estndar


'Micro : PICAXE-18M2 (tambin versiones anteriores)

'Salidas: B.0 a B.7 -> 7 LED rojos (con resistencias de proteccin de 330ohm)

'Se trata de una prueba bsica de funcionamiento


'Todos los LED se encienden y apagan simultneamente cada medio segundo

'En este ejemplo vemos cmo pueden manejarse simultnemente 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 (tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar"
Actuadores: Seis LED dispuestos circularmente.en placa protoboard (con sus resistencias de proteccin).
Funcin: Se simulan dos luces dando vueltas; el estado de los 6 LED se cambia simultneamente.
Implementacin prctica: Desarrollado en la SESIN 04 del programa Profundiza 2012
Cdigo del programa:

'Tarjeta: Proyectos PICAXE-18 estndar


'Micro : PICAXE-18M2 (tambin versiones anteriores)

'Salidas: B.0 a B.5 -> 6 LED (con resistencias de proteccin de 330ohm)

'Los 6 LED estn montados en la protoboard formando un crculo


'Se encienden y apagan simultneamente de dos en dos
'simulando una luz-doble dando vueltas

'En este ejemplo vemos cmo pueden manejarse simultnemente 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 Semforo peatonal completo (y II) con cinco led, pulsador y
zumbador
Microcontrolador: PICAXE-18M2 (tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar"
Actuadores:
Tres LED para luces semforo coches (rojo en salida B.0, amarillo en B.1 y verde en B.2)
Dos LED para luces semforo peatones (verde en salida B.6 y rojo en la B.7)
Zumbador para semforo peatones (en salida B.4)
Sensor:
Pulsador fin de carrera para cambiar a paso de peatones (en entrada C.7).
Funcin: El programa controla un paso de peatones en una va de coches.
Inicialmente siempre est en verde el semforo 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.
Implementacin prctica: Desarrollado en la SESIN 04 del programa Profundiza 2012
Esquema elctrico del circuito: E04.3
Cdigo del programa:

'Tarjeta: Proyectos PICAXE-18 estndar


'Micro : PICAXE-18M2 (tambin versiones anteriores)

'Salidas:
' LUCES en semforo para los COCHES
' B.0 -> LED ROJO
' B.1 -> LED AMARILLO
' B.2 -> LED VERDE
' LUCES y SONIDO en semforo para los PEATONES
' B.6 -> LED VERDE
' B.7 -> LED ROJO
' B.4 -> Zumbador

'Entradas:
' BOTN para pasar los PEATONES
' C.7 <- pulsador

'Se simula un SEMFORO 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 ms 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 ms 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 (tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar" (tambin la de alta potencia)
Actuador: Led conectado a la salida 0
Sensor: Sensor analgico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V).
Funcin: El programa hace parpadear un led proporcionalmente al valor raw que devuelve al micro.
Cuanto ms cerca est el objeto, mayor es este valor raw y ms rpido parpadea.
Implementacin prctica: Desarrollado en la SESIN 05 del programa Profundiza 2012.
Cdigo del programa:
'Tarjeta: Proyectos PICAXE-18 estndar (tambin la de alta potencia)
'Micro : PICAXE-18M2 (tambin versiones anteriores)

'Entradas:
' C.0 <- Sensor analgico de proximidad;
' el sensor tambin est conectado a +4,5V y 0V;

'Salidas :
' B.0 <- LED

'La seal analgica que devuelve el sensor se guarda en la variable b0


'El led parpadea con velocidad proporcional a la seal raw que da el sensor
'Mientras ms cerca detecte algo el sensor, ms rpido parpadea el led

inicio:
readadc C.0,b0 'se lee la seal analgica del sensor y mete el valor en b0
'cuanto ms 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 (tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar".
Actuador: Visualizador (display) de 7 segmentos conectados a las salidas 0 a 6.
Se usan resistencias de proteccin para cada entrada, puesto se encienden LED.
Funcin: El programa muestra consecutiva e indefinidamente los dgitos del 0 al 9 en un visualizador en
intervalos de 1 segundo.
Implementacin prctica: Desarrollado en la SESIN 05 del programa Profundiza 2012.
Cdigo del programa:

'Tarjeta: Proyectos PICAXE-18 estndar (tambin la de alta potencia [**])


'[**]: Ojo! En la de alta pot. las salidas B.4 a B.7 tienen la lgica invertida
'Micro: PICAXE-18M2 (tambin versiones anteriores)

'Salidas:
' Desde B.0 a B.6 se conectan a los segmentos (LED) del visualizador
' (en total hay 7 resistencias de proteccin 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 Calibracin de un sensor de distancias
Microcontrolador: PICAXE-18M2 (tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar" (tambin la de alta potencia)
Sensor: Sensor analgico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V).
Actuador: Ninguno. El resultado lo vemos en pantalla al depurar (DEBUG).
Funcin: El programa funciona en modo depuracin. Muestra en pantalla en la variable b0 el valor que
devuelve el sensor (0 a 255) cuando colocamos un objeto a una determinada distancia.
Cdigo del programa:

'Tarjeta: Proyectos PICAXE-18 estndar (tambin la de alta potencia)


'Micro: PICAXE-18M2 (tambin versiones anteriores)

'Entradas:
' C.0 (ADC0) <- Sensor de distancias (4 a 30cm).
' Las otras dos patas del sensor van a G y a V+

'CALIBRACIN
'- Construimos la tabla: distancia_real_obstculo - valor_devuelto_por_sensor.
'- Colocamos un obstculo 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 conversin


'distancia_real_obstculo vs. valor_devuelto_por_sensor.

'NOTA: tambin se puede usar el asistente de Calibrar Sensor Analgico


' de la aplicacin PICAXE Editor e incluso obtener una grfica.

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 analgica 0
; tambin 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(tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar" (tambin la de alta potencia)
Sensor: Sensor analgico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V)
Actuadores: Display de 7 segmentos de nodo comn conectado a las salidas B.0 a B.6 usando las
correspondientes resistencias de proteccin (330ohm)
Funcin: El rango de medicin 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.
Implementacin prctica: Desarrollado en la SESIN 06 del programa Profundiza 2012.
Cdigo del programa:

'Tarjeta: Proyectos PICAXE-18 estndar (tambin la de alta potencia)


'Micro: PICAXE-18M2 (tambin 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 seccin de "Actuadores" cmo 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.
' - Segn 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 calibracin se ha realizado


;previamente de forma manual.
;Segn el valor devuelto mostramos uno u otro
;dgito 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 cdigos de las teclas de un mando a distancia
Microcontrolador: PICAXE-18M2 (tambin versiones anteriores)
Tarjeta controladora: "Proyectos PICAXE-18 estndar" (tambin la de alta potencia)
Sensor: Receptor de seales infrarrojas emitidas por un mando a distancia (protocolo Sony).
Actuador: Ninguno. El resultado lo vemos en pantalla con "DEBUG".
Funcin: El programa funciona en modo depuracin. 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.
Cdigo del programa:

'Tarjeta: Proyectos PICAXE-18 estndar" (tambin la de alta potencia)


'Micro: PICAXE-18M2 (tambin versiones anteriores)

'Entradas:
' C.0 (ADC0) <- Receptor de infrarrojos (protocolo Sony)
' conectado segn manual de PICAXE.

'UTILIDAD DEL PROGRAMA:


' Con este sencillo programa leemos los cdigos 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 seal 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 seales infrarrojas emitidas por un mando a distancia (protocolo Sony).
Actuadores: Cuatro led conectados a las salidas 0 a 3..
Funcin: El programa detecta 5 teclas del mando a distancia. Realiza distintas funciones de encendido y
apagado de los led segn la tecla pulsada.
Implementacin prctica: Desarrollado en la SESIN 07 del programa Profundiza.
Esquema elctrico del circuito: E07.2
Cdigo del programa:

'Tarjeta "Proyectos Picaxe-18"


'Microcontrolador "Picaxe-18M2"

'Receptor de infrarrojos (protocolo Sony)


'conectado segn esquema que proporciona Picaxe en el manual.

'En la entrada 0 (C.0) se conecta la seal que devuelve el sensor anterior.

'En las Salidas 0 a 3 se conectan 4 led.

;Funcin del programa


;Segn 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 seal del mando a distancia (por la entrada 0) se guarda en b5.
;Si no hay nueva seal 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 podra poner que a los 0,2seg sin recibir seal 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 bsicos de dos motores con un mando a


distancia
Microcontrolador: Picaxe 18M2.
Tarjeta controladora: "Proyectos Picaxe 18 alta potencia".
Sensor: Receptor de seales 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).
Funcin: El programa detecta 5 teclas del mando a distancia. Realiza distintas combinaciones de
movimiento de los motores segn la tecla pulsada.
Implementacin prctica: Desarrollado en la SESIN 08 del programa Profundiza.
Cdigo del programa:

'Tarjeta "Proyectos Picaxe 18 de alta potencia"


'Microcontrolador "Picaxe-18M2"

'SENSOR
'Receptor de infrarrojos (protocolo Sony)
'conectado segn esquema que proporciona Picaxe en el manual
'En la entrada 0 (C.0) se conecta la seal que devuelve el sensor anterior
'la seal 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)

'Funcin
'Segn las teclas pulsadas en el mando
'conseguimos distintos movimientos de los motores

inicio:
irin [200],C.0,b0 ;durante 0,2s se espera seal 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 analgico 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 analgica 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
Funcin: 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.
Implementacin prctica: Desarrollado en la SESIN 11 del programa Profundiza.
Cdigo 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 analgico de distancias FRONTAL conectado a +4,5V y 0V;
' La seal analgica que devuelve (SDF)
' se lee en la entrada analgica 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 calibracin 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 analgico 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 analgica 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
Funcin: 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.
Implementacin prctica: Desarrollado en la SESIN 11 del programa Profundiza.
Cdigo 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 analgico de distancias DERECHO conectado a +4,5V y 0V;


' La seal analgica que devuelve (SDD)
' se lee en la entrada analgica 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 calibracin 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 ms 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 analgico de distancia (Sharp GP2Y0A41SK0F; rango de 4 a 30cm; 4,5V).
Un sensor est situado en parte FRONTAL y se lee en la entrada analgica C.0
En otro sensor est en la cara DERECHA y se lee en la entrada analgica 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
Funcin: El coche intenta salir de un laberinto. Para ello sigue siempre la pared de su derecha.
Implementacin prctica: Desarrollado en la SESIN 12 del programa Profundiza.
Cdigo 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 analgico de distancias FRONTAL conectado a +4,5V y 0V;


' La seal analgica que devuelve (SDF)
' se lee en la entrada analgica C.0
' y se guarda en la variable b0

'(SDD) Sensor analgico de distancias DERECHO conectado a +4,5V y 0V;


' La seal analgica que devuelve (SDD)
' se lee en la entrada analgica 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 calibracin 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
;ms 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 ;rotacin izq de 0,5 seg
goto inicio

- Volver a la lista de programas -

Proyecto Tecnolgico "Cinta elevadora con parada


automtica".
1. Calibracin de la LDR.
Microcontrolador: Picaxe08.
Tarjeta controladora: "Alarmas Picaxe".
Sensor:
LDR conectada a la entrada 1 del micro (entrada digital).
Funcin: El programa lee y muestra en pantalla el valor RAW que devuelve la LDR segn las condiciones de
iluminacin.
Implementacin prctica: Desarrollado en el Proyecto Cinta elevadora con parada automtica.
Cdigo del programa:
;Tarjeta controladora: Alarmas Picaxe
;Microcontrolador: Picaxe-08

;Sensores: LDR conectada a la entrada analgica in1


; e iluminado por una bombilla pequea a unos 10cm.

;Funcionamiento
;En el ordenador leemos los distintos valores que devuelve la LDR
;segn la luz que le llega.
;Se tiene en cuenta la bombillita que tiene enfrente,
;si hay o no un objeto entre ambos
;y la iluminacin 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 Tecnolgico "Cinta elevadora con parada


automtica".
2. PROGRAMA FINAL de la "Cinta elevadora con parada
automtica".
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).
Piezoelctrico 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).
Funcin: El programa detecta cuando llega poca luz a la LDR debido a que tiene un objeto delante.
Implementacin prctica: Desarrollado en el Proyecto Cinta elevadora con parada automtica.
Cdigo del programa:

;Tarjeta controladora: Alarmas Picaxe


;Microcontrolador: Picaxe-08

;Sensores: LDR conectada a la entrada analgica in1


; e iluminado por una bombilla pequea a unos 10cm.
;Actuadores: Motor conectado a la salidad de potencia out4
; LED integrado en la tarjeta y conectado a la salida out0
; Piezoelctrico tambin 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 calibracin y mediante pruebas
;(hay que tener en cuenta la iluminacin 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 rpido del led


pause 200
low 0
pause 200

sound 2, (120,30) ;Se da tambin un rpido aviso sonoro

goto inicio ;Volvemos a leer la LDR repetir el proceso.

- Volver a la lista de programas -


Proyecto Tecnolgico "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).
Funcin:
Si no est pulsado ningn fin de carrera, el coche avanza.
Si se pulsa un fin de carrera, el coche se para, retrocede, gira atrs para evitar el obstculo que puls
el fdc, se para y vuelve a avanzar.
Implementacin prctica: Desarrollado en el Proyecto "Coche evita-paredes".
Cdigo 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, (obstculo a la derecha) entonces:
' - se detienen los dos motores
' - se retrocede (ambos motores giran hacia atrs)
' - se vuelven a detener los dos motores
' - el MI gira hacia atrs (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 simtricamente 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 Tecnolgico "Coche evita-cadas".


1. PROGRAMA FINAL del "Coche evita-cadas".
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).
Funcin:
Si estn pulsados ambos conmutadores fin de carrera, el coche avanza.
Si algn fin de carrera deja de estar pulsado, el coche se detiene, retrocede, gira atrs para evitar
caer, se para y vuelve a avanzar.
Implementacin prctica: Desarrollado en el Proyecto "Coche evita-cadas".
Cdigo del programa:

'COCHE EVITA-CADAS
'
'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, (obstculo a la derecha) entonces:
' - se detienen los dos motores
' - se retrocede (ambos motores giran hacia atrs)
' - se vuelven a detener los dos motores
' - el MI gira hacia atrs (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 simtricamente 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 Tecnolgico "Coche teledirigido por mando a


distancia de IR".
1. Lectura de los cdigos de los botones a usar del mando a
distancia.
Microcontrolador: Picaxe-18M2.
Tarjeta controladora: "Proyectos Picaxe-18".
Sensor: Receptor de seales infrarrojas emitidas por un mando a distancia (protocolo Sony)
segnesquema proporcionado por Picaxe.
Actuador: Ninguno. El resultado lo vemos en pantalla.
Funcin: El programa funciona en modo depuracin. 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 "Prctica 7 del Programa Profundiza 2012".
Cdigo del programa:

'Tarjeta "Proyectos Picaxe-18"


'Microcontrolador "Picaxe-18M2"
'Receptor de infrarrojos (protocolo Sony)
'conectado segn esquema que proporciona Picaxe en el manual.

'En la entrada 1 (C.1) se conecta la seal 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 seal 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 Tecnolgico "Coche teledirigido por mando a


distancia de IR".
2. Prueba bsica 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).
Funcin: 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).
Cdigo 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)

'Funcin: se prueban los movimientos bsicos 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 Tecnolgico "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 seal del mando a distancia.
Actuadores:
Motor derecho en salidas B4 y B5 (movimiento reversible).
Motor izquierdo en salidas B6 y B7 (movimiento reversible).
Funcin: 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).
Implementacin prctica: Utilizado en el Proyecto "Coche teledirigido por mando a distancia de infrarrojos".
Cdigo del programa:

'TARJETA : "Proyectos Picaxe 18 de alta potencia"


'MICRO : "Picaxe-18M2"
'SENSORES:
' - Receptor de infrarrojos (Sony) conectado segn esquema de Picaxe
' En la entrada 1 (C.1) se conecta la seal que devuelve el sensor de IR
' y la seal 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:
' - Segn 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 seal del mando
;si no llega seal 'b1' no cambia
debug b1 ;para ver en b1 en el ordenador
;Movimientos bsicos: se realiza la accin 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 -


Configuracin con mdulo JY-MCU de Bluetooth
Enviar comando "AT+VERSION" y leer la versin del mdulo
Microcontrolador: PICAXE-18M2
Tarjeta controladora: "Proyectos PICAXE-18 estndar" (tambin la de alta potencia)
Sensor/actuador: Mdulo JY-MCU V1.06 de comunicaciones por Bluetooth (HC-06)
Funcin:
Enviar comando "AT+VERSION" para leer la versin del mdulo
Leer en pantalla la versin que se devuelve ("OK LinvorV1.8" en nuestro caso)
De forma similar, enviar cualquier comando "AT" y leer su resultado
Conexiones (mdulo-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 (tambin 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 mdulo
NOTA: si usamos directamente un PICAXE-18M2 sin tarjeta controladora, NO
hace falta la resistencia anterior
Cdigo del programa:

;Tarjeta: "Proyectos PICAXE-18 estndar" (tambin la de alta potencia)


;Micro : PICAXE-18M2
;Otros : Mdulo JY-MCU V1.06 (tiene 4 pines; Vcc-Gnd-Txd-Rxd)
;
;Vcc -- V+
;Gnd -- 0V
;Txd -> C.0 ;ms una resistencia de 10K (o de 1K) entre C.0 y V+ !!
;Rxd <- C.1

;Parmetros iniciales de configuracin


pause 1000
output C.1 ;(indicamos que C.1 funcionar como salida)
setfreq m8 ; ponemos la frecuencia a 8MHz (por defecto es 4MHz)

do
;Envo 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 devolvera "OK"

- Volver a la lista de programas -

Configuracin con mdulo JY-MCU de Bluetooth


Enviar comando "AT+NAMEnombre" para cambiar nombre del
mdulo
Microcontrolador: PICAXE-18M2
Tarjeta controladora: "Proyectos PICAXE-18 estndar" (tambin la de alta potencia)
Sensor/actuador: Mdulo JY-MCU V1.06 de comunicaciones por Bluetooth (HC-06)
Funcin:
Enviar comando "AT+NOMBREnombrehasta20caracte" para cambiar el nombre del mdulo (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 (mdulo-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 (tambin 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 mdulo
NOTA: si usamos directamente un PICAXE-18M2 sin tarjeta controladora, NO
hace falta la resistencia anterior
Cdigo del programa:

;Tarjeta: "Proyectos PICAXE-18 estndar" (tambin la de alta potencia)


;Micro : PICAXE-18M2
;Otros : Mdulo JY-MCU V1.06 (tiene 4 pines; Vcc-Gnd-Txd-Rxd)
;
;Vcc -- V+
;Gnd -- 0V
;Txd -> C.0 ;ms una resistencia de 10K (o de 1K) entre C.0 y V+ !!
;Rxd <- C.1

;Parmetros iniciales de configuracin


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
;Envo 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 mdulo Bluetooth desde una tableta o mvil Android,
;debera aparecer en la misma el nuevo nombre (por defecto es HC-06).
;De forma similar, con el correspondiente comando AT
;se podra cambiar tambin la contrasea o la velocidad de transmisin.

- Volver a la lista de programas -

1. Coche controlado por Bluetooth (5 movimientos bsicos)


Microcontrolador: PICAXE-18M2
Tarjeta controladora: "Proyectos PICAXE-18 de alta potencia"
Sensor: Mdulo JY-MCU V1.06 de comunicaciones por Bluetooth (HC-06)
Actuadores: Dos motores
Funcin:
Se leen los cdigos enviados desde la tableta por Bluetooth
Segn el valor el coche avanza, gira a izquierda o derecha, se detiene o retrocede.
Comprobar desde tableta Android que cambi el nombre
Conexiones (mdulo-Picaxe):
Vcc ---- V+ (por ej. 4,5V)
Gnd ---- G
Txd ---> C.0
Resistencia de 10K entre V+ y C.0 (tambin 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 mdulo
NOTA: si usamos directamente un PICAXE-18M2 sin tarjeta controladora, NO
hace falta la resistencia anterior
Cdigo del programa:

;------------- INFORMACIN --------------


; Nombre : coche-controlado-por-Bluetooth.bas
; Autor : Departamento de Tecnologa - IES J. Romero Murube
; Micro : PICAXE-18M2 (CHI035A)
; Entradas: C.0 <- Tx del mdulo Bluetooth (HC-06)
; Salidas : B.4 B.5 -> motor izquierdo
; B.6 B.7 -> motor derecho
; Funcin : Se controlan los 5 movimientos bsicos del coche
; desde una tableta a travs de Bluetooth
; usando nuestra App de Androig "MultiControlBT"
;----------------------------------------

;----------- INICIALIZACIN -------------


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 ;Cdigos
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 -

Vous aimerez peut-être aussi