Sei sulla pagina 1di 142

Sistemas de control programado.

Sistema PICAXE

MANUAL PICAXE rea Tecnolgica

Relator:

Jos L. del Canto Alarcn


1 /141

Noviembre 2011

Sistemas de control programado. Sistema PICAXE

Los microcontroladores PIC son a menudo definidos como un PC en un Chips" y es un integrado que tiene memoria, procesadores y circuitos de entrada/salida, en un solo chips. Los microchips son vendidos en "blanco" y luego Pueden ser programados con un programa de control. Una vez programados, este microchips est apto para una aplicacin especfica Por ejemplo, un horno de microondas puede utilizar un solo microcontrolador para manejar la informacin que viene del teclado, mostrar la informacin para el usuario en pantalla y controlar los dispositivos de salida (motor de la mesa giratoria, luz, timbre etc).

El microcontrolador puede a reemplazar a un gran nmero de partes separadas, o incluso a un circuito electrnico completo. Las principales ventajas obtenidas con el uso de microcontroladores en el diseo son: Aumento en la confiabilidad debido al menor de componentes. Reduccin en los niveles de existencia ya que un microcontrolador reemplaza varias partes Mayor facilidad de ensamblaje del producto y productos finales ms reducidos Gran flexibilidad y adaptabilidad del producto ya que las funciones del producto estn programadas en el microcontrolador y no en el hardware electrnico Rapidez en modificaciones y desarrollo del producto mediante cambios en el programa del microcontrolador, y no en el cambio de parte del equipo. Algunas de las principales aplicaciones que utilizan microcontroladores son: artefactos domsticos, Alarmas, Equipos mdicos, Algunos automviles tienen ms de 10 microcontroladores. En la Industria,los microcontroladores son usualmente programados en lenguaje C. Sin embargo, debido a la complejidad de este lenguaje, es preferible programarlos en Basic.

2 /141

Sistemas de control programado. Sistema PICAXE

El PICAXE

El "PICAXE" es un sistema de microcontrol fcil de programar que utiliza programacin BASIC . El PICAXE usa las todas las ventajas de la nueva generacin de microcontroladores de bajo costo FLASH. Estos pueden ser una y otra vez programados sin usar programador PIC. El poder del PICAXE radica en su sencillez. No necesita de ningn programador, borrador o complejo sistema electrnico, el microcontrolador es programado (con un programa BASIC o bien un diagrama de flujo) mediante una conexin de tres alambres conectada al puerto serie del PC. El circuito operacional PICAXE utiliza nicamente tres componentes y puede ser ensamblado en un protoboard. EL PICAXE est disponible en dos variedades - 18 pines y 28 pines. El controlador PICAXE-28 provee 22 pines de entrada/salida (8 salidas digitales, 8 entradas digitales y 4 entradas analgicas). El PICAXE-18 provee 8 salidas y 5 entradas. Las principales caractersticas del PICAXE son las siguientes:
-

Bajo costo, circuito de fcil construccin 8 entradas, 8 salidas y 4 canales analgicos Rpida operacin de descarga mediante el cable serial Software "Editor de Programacin" gratuito y de fcil uso Lenguaje BASIC Editor de diagramas de flujo incluido Puede ser programado tambin mediante el software "Crocodile Technology" Gran nmero de manuales gratuitos. Tablero experimental tutorial y tutoriales incluidos Paquete de control remoto infrarrojo. Paquete de servocontrolador.

3 /141

Sistemas de control programado. Sistema PICAXE

Tutorial 1. El PICAXE
El PICAXE tiene tres componentes principales:

El Software "Editor de Programacin" El software debe ser ejecutado en un PC y permite utilizar el teclado del computador para escribir programas en lenguaje BASIC. Los programas tambin pueden hacerse con un diagrama de flujo. Por otra parte , el software "Crocodile Technology" puede ser utilizado para simular los circuitos electrnicos, programndolos con diagramas de flujo. El cable serie Este es el cable que conecta el PICAXE al PC. El cable slo necesita ser conectado durante la descarga de programas. No debe ser conectado cuando el PICAXE est siendo ejecutado debido a que el programa est almacenado en el chip PICAXE, an cuando la fuente de alimentacin ha sido desconectada. Existen dos tipos de cables para descarga disponibles, los cuales se conectan ya sea a la cabecera de tres pines o al enchufe hembra estereo. El chip PICAXE y el tablero electrnico El PICAXE ejecuta programas que han sido descargados al mismo. Sin embargo, para operar, el chip debe ser montado en un tablero electrnico que provea una conexin al microcontrolador.

El tablero electrnico puede ser diseado por el usuario en un circuito impreso, en una interfase prefabricada. Este tutorial asume el uso del microcontrolador PICAXE-18 (18 pines) montado en el tablero electrnico tutorial. Procedimiento de programacin 1. Escriba el programa en el ordenador utilizando el software "Programming Editor". 2. Conecte el cable de descarga desde el ordenador al PICAXE. 3. Conecte la batera al PICAXE. 4. Utilice el software "Editor de Programacin" para descargar el programa. El cable de descarga se debe retirar posteriormente . El programa comenzar a ejecutarse en el PICAXE automticamente, pero puede ser reiniciado en cualquier momento presionando el interruptor de reinicio.

4 /141

Sistemas de control programado. Sistema PICAXE

Construccin del entrenador de PICAXE-08


1. Disposicin de componentes y montaje:

2. Componentes: Parte CT1 TB1 R1 R2 C1 IC2 PIC H1 H2 TB1 3. Caractersticas del 08:
Tipo de PICAXE PICAXE-08 N Pines 8 Memoria (lneas) 40 Pines 5 Salidas 1-4 Entradas 1-4 A/D (b-baja) 1b Memoria Datos 128-prog Interrupciones -

Descripcin 3.5mm stereo socket Borne placa C.I. 2 terminales 10k/0,25W 22k/0,25W 100nF polyester Zcalo 8 pin Microcontrolador PICAXE08 Tira 3 pines Tira 7 pines Portapilas 4xAA

NOTA:
El nmero de lneas de memoria de programa es solo aproximado, ya que diferentes comandos requieren diferentes cantidades de memoria. El pin3 es solo de salida y el pin0 es solo de salida. La alimentacin de 3V a 5V. Se puede alimentar con 6V (4x1,5). El conector H1 tiene un jumper que permite la programacin del PICAXE-08 (jumper en parte superior) o bien poner el pin 0 como salida (jumper en parte inferior.).

5 /141

Sistemas de control programado. Sistema PICAXE

4. Cable de conexin:

5. El software de programacin: El software de programacin que se utiliza para programar, compilar y transferir es el diseado por Revolucin Educacin Ltda. es de uso libre (para uso exclusivo en educacin). Para instalarlo basta con ejecutar el archivo: Programming Editor.ms. Antes de probar el montaje deberemos realizar la configuracin del software siguiendo los siguientes pasos: 1. 2. 3. 4. 5. Seleccionar el interface en idioma espaol Configurar el puerto de conexin Seleccionar el tipo de microchips, en esta prctica ser PICAXE-08M Conecta el cable de programacin entre PC y el Entrenador. Escribir el cdigo del programa de prueba y enviarlo al microchips.

6 /141

Sistemas de control programado. Sistema PICAXE Configuracin del software: Al iniciar la aplicacin aparece el cuadro de configuracin (por opcin) si no fuese el caso se encuentra dentro del men principal: Ver Opciones

En la ficha Idioma seleccionar el idioma Castellano.

En la ficha Puerto Serie seleccionar el que utilizemos (en el ejemplo es el COM3). Lo lgico es utilizar el COM1 o COM2 dependiendo si se tiene conectado ratn con conexin serie o un mdem. En la ficha Modo seleccionaremos el microcontrolador que programaremos, en este caso el: PICAXE-08M.

Ahora realizaremos la edicin del cdigo, compilacin y programacin. Para poder comunicar nuestras intenciones al microcontrolador debemos hacerlo siguiendo el siguiente modo: Edicin del cdigo del programa: se puede realizar de dos mtodos diferentes: o Mediante diagrama de flujo: q u e es el mtodo ms sencillo pero bastante limitado en sus posibilidades de programacin.

7 /141

Sistemas de control programado. Sistema PICAXE

o Mediante cdigo BASIC . El sistema PICAXE utiliza cdigo BASIC. La ventaja de este tipo de programacin es su potencia de programacin y la posibilidad de reutilizar parte del cdigo de un programa en otro, dado que muchas rutinas son vlidas para varias aplicaciones. Una vez editado el cdigo del programa, bien utilizando comandos o bien diagramas de flujo, debemos codificarlo al lenguaje que utilizan los micro, es decir o sea 1 y 0 . La aplicacin encargada de realizar esa transformacin recibe el nombre de compilador. Por ltimo debemos enviar esa informacin a la memoria de programa del microchips , el dispositivo encargado de realizar esta operacin recibe el nombre de programador o loader. La ventaja del PICAXE es que las operaciones anteriormente mencionadas las realizan la misma aplicacin y de una forma sencilla sin tener que tener grandes conocimientos de ensamblador ni conocer y saber manejar los diferentes dispositivos que permiten realizar la programacin del PIC. 6. Veamos nuestra primera programacin y comprobemos su correcto funcionamiento con un fcil programa, se trata de encender y apagar un led de forma intermitente conectado a la salida de la placa de prototipos. El programa lo realizaremos primeramente en cdigo BASIC y posteriormente mediante diagramas de flujo.

********************************************************************** ********* PRUEBA ENCENDIDO LED D1 (pin 7, out 0)********************** ********************************************************************** inicio: high 0 wait 1 low 0 wait 1 goto inicio 'enciende LED en pin 7 'retardo 1 segundo 'apaga LED en pin 7 'retardo 1 segundo 'salto a inicio

Posteriormente se analizarn cada uno de los comandos que se estn utilizando, en el captulo de programacin. Es necesario conectar un Led a travs de una resistencia limitadora entre los terminales de salida o y GND y poner el jumper en funcin de salida (figura pgina 4)

8 /141

Sistemas de control programado. Sistema PICAXE Para esto iniciemos la aplicacin Programming Editor y escribamos las lneas del cdigo de la aplicacin o bien utilizaremos la funcin copiar (ctrl + c) y pegar (crtl + v) en la ventana del editor de cdigo:

Ahora debemos compilar el cdigo y programar el PIC, aqu es donde entra en funcionamiento el sistema de dispositivos automatizados de forma autnoma utilizando este sistema. Para realizar la operacin, de forma conjunta, basta con tener conectado el cable de programacin y el jumper en la posicin de programacin (jumper en los terminales de la parte inferior conmutados, tal como figura en la pgina 4). Ejecutamos en comando de compilacin y programacin: Tambin se puede ejecutar mediante el men principal: PICAXE Ejecutar (o F5)

La transferencia del cdigo compilado se enva a la memoria de programa del PIC visualizando su evolucin mediante una barra azul (muy pocos segundos).

Se indicar el trmino de la transferencia as como el tamao ocupado en la memoria interna:

9 /141

Sistemas de control programado. Sistema PICAXE Para comprobar su funcionamiento solo resta cambiar el jumper a la posicin de salida del pin0, salida 7 (ojo con la denominacin de pin 0 y salida 7!, no se corresponde Terminal fsico con pin definido por los creadores de PICAXE). Si todo est bien, el Led parpadear intermitentemente con una frecuencia de un segundo.

Tutorial 2. Programando mediante Diagrama de flujos.


Los Diagrama de flujos son una herramienta muy til que permiten representar grficamente a los programas para hacerlos ms fciles de entender. El software Editor de Programacin incluye un editor de organigramas que permite dibujar organigramas en la pantalla del ordenador. Estos organigramas se pueden convertir luego en cdigo BASIC para descargarlos en el PICAXE.. Instrucciones detalladas para dibujar/descargar un diagrama flujo: 1. Conecte el cable PICAXE a uno de los puertos serie del ordenador. Recuerde tomar nota del puerto serie al cual conecta el cable (normalmente COM1 COM2). 2. Inicie el software "Editor de Programacin". 3. En el men desplegable seleccione Ver Opciones para acceder a la pantalla de opciones (esta puede que aparezca automticamente). 4. Haga clic en la lengeta "Modo" y seleccione PICAXE-08. 5. Haga clic en la lengeta "Puerto Serie" y seleccione el puerto serie al cual ha conectado el cable PICAXE. Haga clic en "OK". 6. Cree un nuevo diagrama de flujo haciendo clic en el men Archivo Nuevo Organigrama. 7. 8. Dibuje el diagrama arrastrando los bloques requeridos a la pantalla y luego utilizando el ratn para dibujar flechas para conectar los bloques. Cuando termine de dibujar el diagrama , puede convertirlo en un programa BASIC seleccionando el men Organigrama Convertir Organigrama a BASIC. Luego el programa BASIC puede descargarse en el PICAXE seleccionando en el men PICAXE Ejecutar.

9. Para guardar el organigrama, utilice las opciones en el men de Archivo. Para exportar el organigrama como figura, utilice el men Archivo Exportar. Para exportar la imagen a un documento de Word seleccione el archivo tipo EMF. Para exportar el organigrama a una pgina web use el archivo tipo GIF. 10 /141

Sistemas de control programado. Sistema PICAXE Este ser el aspecto que tendr el programa en BASIC editado en la prctica anterior, pero esta vez utilizando la funcin de organigrama, conozcamos su interface para poder realizar el diagrama:
Seleccin de componente Seleccin de rea Zoom de rea Lnea de conexin Interconexin de organigramas Subrutina

Otras opciones

Retardo Zoom manual Mover organigrama Salida Condicional Si

Crear etiquetas

Seleccin de componente: este comando se utiliza para seleccionar y mover bloques. Cuando se selecciona un solo bloque, su cdigo BASIC puede editarse en la barra editora en la parte inferior de la ventana.

Seleccin de rea: este comando se utiliza para seleccionar un conjunto de bloques seleccionados mediante la formacin de un rea (pinchar y arrastrar con botn izquierdo). Zoom de rea: amplia una zona, previamente seleccionada, mediante pinchar y arrastrar. Zoom manual: amplia una zona de forma manual. Para acercar hacer clic y mover el ratn hacia arriba. Para alejar hacer clic y mover el ratn hacia abajo. Mover: utilizar este comando para mover el organigrama completo alrededor de la pantalla. 11 /141

Lnea de conexin: este comando se usa para dibujar lneas entre los bloques. Se pueden hacer quiebres en las lneas haciendo clic una vez. Cuando la lnea est cerca de un bloque, esta se pegar al punto de conexin del mismo. Interconexin de organigramas: este comando se utiliza cuando el diagrama es muy complejo y ste se puede simplificar en bloques ms sencillos, utilizndolo posteriormente para la interconexin de los mismos de forma correspondiente. Etiqueta: Este comando se usa para aadirle etiquetas o ttulos a los elementos del organigrama. Salida/Si/Retardo/Subrutina/Otras opciones: hacer clic en estos botones para ir al submen de estos comandos y seleccionar el comando correspondiente.

Dibujando Diagramas: Para dibujar un diagrama hacer clic en uno de los bloques de mens de comandos (Salida/Si/Retardo/Otras opciones) de la barra de herramientas para ir al submen de comandos requerido. Seleccione el comando deseado y luego hacer clic en la pantalla, en el lugar donde desea situar el comando. No tratar de colocar el bloque exactamente en posicin en primera instancia, ponerlo en la pantalla en las cercanas del rea donde desea ubicarlo y luego usar el comando Seleccionar para mover el bloque a la posicin correspondiente. Una vez que el bloque est en posicin, hacer clic en l de manera que sea resaltado. El cdigo BASIC del objeto aparecer en la barra editora en la parte inferior de la pantalla. Unin de bloques Para unir los bloques, se deben acercar uno al otro hasta que se junten. Otra opcin es dibujar lneas entre los mismos usando el comando lnea en la barra de herramientas. Note que slo es posible unir la parte inferior de un bloque nicamente con la parte superior de otro (no se pueden conectar lneas con lneas). Adems, slo se permite sacar una lnea de la parte inferior de conexin de cada bloque. Para hacer diagramas ordenados, se pueden agregar quiebres a las lneas haciendo clic en las mismas. Al mover una lnea cerca de un punto de conexin, la misma se pegar a este; para terminar la lnea haga clic una vez ms y la misma quedar en posicin. Las lneas no pueden moverse. Si se trata de mover una lnea la misma ser borrada y tendr que crear una nueva. Simulacin en pantalla: Para simular el organigrama, haga clic en "Simular" en el men Organigrama. El programa comenzar a ejecutarse en pantalla. A medida que el programa se ejecuta, los bloques cuyos comandos estn siendo ejecutados se irn resaltando en rojo. Las ventanas de "Entradas/Salidas" y "Variables" tambin aparecern mientras se ejecuta la simulacin. Para cambiar los valores de las

entradas haga clic en el respectivo interruptor en pantalla (mostrado debajo del LED) utilice la barra deslizadora de entradas analgicas. El tiempo de retardo entre un objeto y otro puede ser ajustado en las Opciones del diagrama (men Ver Opciones Organigrama). Note que algunos comandos representan acciones que no pueden ser simuladas en pantalla. En estos casos el comando es simplemente ignorado al ejecutar el organigrama.

Carga de los diagramas al PICAXE: Los diagramas no se descargan directamente al microcontrolador. Primero el diagrama es convertido en un programa BASIC, el cual luego es cargado al PIC. Para convertir un diagrama seleccionar "Convertir" en el men diagrama; el programa BASIC del diagrama ser creado. Aquellos bloques que no estn conectados a los bloques "inicio" "sub" en el organigrama, sern ignorados al momento de hacer la conversin. La conversin se detendr si se encuentra un bloque no conectado; por lo tanto, utilizar siempre un bloque "detener" para terminar el diagrama antes de iniciar una simulacin o de convertir el diagrama. Nota.- Es posible convertir y descargar rpidamente un diagrama presionando dos veces la tecla F5.

Utilizando smbolos: Entradas, Salidas y Variables pueden renombrarse utilizando la "Tabla de Smbolos" del men Organigrama. Cuando un smbolo es renombrado el nuevo nombre aparecer en los mens desplegables en la barra editora. No deben utilizarse nombres de comandos (por ejemplo switch o sound) como smbolos ya que esto puede generar errores en el programa BASIC convertido. Guardar e imprimir organigramas: Los diagramas pueden guardarse, imprimirse y exportarse como figuras (para insertarlos en documentos de procesadores de textos) utilizando el men Archivo. Los organigramas pueden tambin copiarse en el portapapeles de Windows (para pegarlos luego a otras aplicaciones) utilizando el men Editar.

Tutorial 3. Prcticas de programacin con Cyberpet


Prctica 1: Encendido y apagado de forma intermitente de un led conectado al pin 7 del PICAXE - 08 (Salida: Pin0) Cdigo:
'********************************************************************************* '************************ PRUEBA ENCENDIDO LED D1 (pin 7, out 0) **************** '********************************************************************************* inicio: high 0 wait 1 low 0 wait 1 goto inicio 'enciende LED en pin 7 'retardo 1 segundo 'apaga LED en pin 7 'salto a inicio

Flujograma:

Prctica 2: Encendido y apagado de forma intermitente de un led conectado al pin 3 del PICAXE-08 (Salida: Pin4) Cdigo:
'********************************************************************************* '************************ PRUEBA ENCENDIDO LED D2 (pin 3, out 4) **************** '********************************************************************************* inicio: high 4 wait 3 low 4 wait 3 goto inicio 'enciende LED en pin 3 'retardo 1 segundo 'apaga LED en pin 3 'salto a inicio

Diagrama:

Prctica 3: Encendido y apagado alternativos de dos leds conectados al pin 3 y pin 7 del PICAXE-08 (Salida: Pin4 y Pin0). Cdigo:
'********************************************************************************* '****** Leds Intermitentes alternativamente (pin 7, out 0)y (pin 3, 0ut 4) ******************* '********************************************************************************* inicio: high 0 wait 1 low 0 wait 1 high 4 wait 1 low 4 wait 1 goto inicio 'enciende LED en pin 7 'retardo 1 segundo 'apaga LED en pin 7 'enciende LED en pin 3 'apaga led en pin 3 'salto a inicio

Diagrama:

Prctica 4: Generacin de 3 tonos diferentes a travs del altavoz piezoelctrico conectado al pin 5 del PICAXE-08 (Salida: Pin2). Cdigo:
'********************************************************************************* '************************ PRUEBA ALTAVOZ ************************************* '********************************************************************************* inicio: sound 2, (50, 100) sound 2, (100, 100) sound 2, (120, 100) pause 1000 goto inicio 'sonido en altavoz piezo del pin 5, out 2 tono ((0..127), duracin ms 'otro tono 'otro tono 'pausa de 1000ms = 1 seg

Diagrama:

Prctica 5: Si se activa el interruptor conectado al pin 4 (Entrada: Pin3) enciende el led conectado al pin 7 del PICAXE-08 (Salida: Pin0). Cdigo:
'********************************************************************************* '************************ PRUEBA INTERRUPTOR ************************************* '********************************************************************************* inicio: if input3 is on then led goto inicio led: 'si la entrada 3 es "1" salta a subrutina led sino a inicio 'salto a inicio

high 0 wait 2 low 0 goto inicio

'enciende LED pin 7 'encendido durante un retardo de 2 segundos 'apagado LED pin 7

Dgrama:

Prctica 6: Tenemos conectada un LDR en el pin 6 (Entrada: Pin1) del PICAXE-08. Visualizaremos el valor que nos da el convertidor Analgico/Digital (DAC) a travs del Debug de la aplicacin (presenta el valor de las variables b0..b13, tanto en valor decimal como digital). Cdigo:
'********************************************************************************* '************************ Chequeo de umbral de luz ********************************* '********************************************************************************* 'LDR wn pin 6, input1

'**** Bucle principal ****** inicio: readadc 1,b0 debug b0 pause 100 goto inicio 'lee la seal analgica de LDR y carga en variable b0 'transmite el valor b0 a la pantalla del PC 'pausa 'saltar a inicio

Resultado: Al cargar el programa al PICAXE-08 se abrir el depurador (Debug) mostrando el valor de las variables b0..b13. Deberemos fijarnos en el valor que toma la variable b0 que es donde se almacena el valor generado por el convertidor DAC, anotaremos el valor justo en el momento que la intensidad luminosa que nos interesa detectar se presente. Cada muestreo ser indicado visualmente a travs del Led conectado al pin 7 del PICAXE-08 (Salida: Pin0).

Prctica 7: Tenemos conectada un LDR en el pin 6 (Entrada: Pin1) del PICAXE-08. Si la intensidad de luz es alta (>120) se iluminar el Led 1, por el contrario, si la luz que incide sobre la LDR es baja (<70) se iluminar el Led 2. Cdigo:
'********************************************************************************* '************************ Detector luz mx y mn ********************************* '********************************************************************************* 'LDR wn pin 6, input1 'LED D1 en pin7, out0 'LED D2 en pin3, out4 '**** Bucle principal ****** inicio: readadc 1,b0 if b0 > 120 then maximo if b0 < 70 then minimo low 0 low 4 goto inicio '**** Accin lmite mx ***** maximo: high 0 low 4 goto inicio '**** Accin lmite mn ***** minimo: high 4 low 0 goto inicio 'encender LED1 'apagar LED2 'leer seal analgica de LDR y cargar en variable b0 'si valor de variable es mayor de 120 ir a subrutina maximo 'si valor de variable es menor de 70 ir a subrutina minimo 'apagar LED D1 'apagar LED D2 'ir a inicio

Diagrama de flujo:

Prctica 8: Tenemos conectada un LDR en el pin 6 (Entrada: Pin1) del PICAXE-08. Debemos generar un haz de luz unidireccional que deber incidir sobre la superficie sensible de la LDR. Si la luz incide no se dispara la alarma (Led y piezo activados), por el contrario si se corta el haz de luz (atravesado por un objeto mvil) esta se disparar activando una seal acstica y luminosa (altavoz piezoelctrico y Led). Cdigo:
'********************************************************************************* '************************ BARRERA LUMINOSA. Alarma ******************************* '********************************************************************************* 'LDR wn pin 6, input1 'LED D1 en pin7, out0 'ALTAVOZ piezoelctrico en pin5, out2 symbol light=b1 '**** Bucle principal ****** 'Este bucle detecta la presencia de intrusos y corta la barrera de luz inicio: low 0 readadc 1,light if light < 80 then alarma goto inicio '**** Activar alarma ***** 'Esta rutina enciende el LED D1 y hace sonar el altavoz mientras exista corte de haz de luz alarma: high 0 sound 2,(50,300) readadc 1, light if light > 80 then inicio goto alarma

Prctica 9: Control total de Cyberpet. Analizar el cdigo y descubrir sus funciones a travs de la interpretacin del mismo. Cdigo:
'********************************************************************************* '************************ CIBERMASCOTA. Programa1 ***************************** '********************************************************************************* 'LDR wn pin 6, input1 'PULSADOR en pin4, input3 'LED D1 en pin7, out0 'LED D2 en pin3, out4 'ALTAVOZ piezoelctrico en pin5, out2 symbol light=b1 '**** Bucle principal ****** 'Este bucle hace parpadear los leds y verifica el estado del sensor de luz y del pulsador inicio: 'Encender ambos led y leer valor de luz (light=b1) high 4 high 0 readadc 1,light 'Si el valor de luz est por debajo de 80 ir a dormir if light < 80 then bed 'Si el pulsador es presionado emitir sonido if pin3 = 1 then purr 'Hacer una pausa pause 500 'Apagar ambos LEDs y verificar estado del sensor nuevamente low 4 low 0 readadc 1,light goto inicio '**** Emitir sonido ***** purr: sound 2, (120,50,80,50,120,50) pause 200 goto inicio '**** Rutina de ir a dormir cuando oscurece ***** 'Si est oscuro apagar ambos leds y esperar hasta que haya luz nuevamente bed: low 0 low 4 readadc 1, light if light > 80 then inicio goto bed

Tutorial 4. Proyecto de automatizacin de un puente levadizo.


Con este proyecto queremos aplicar el entrenador PICAXE-08 junto con un controlador de inversin de giro la automatizacin de un puente levadizo. Circuito de control : Entrenador PICAXE-18. Esquema de conexin:

Final de carrera superior Final de carrera inferior Sensor Presencia vehculo Control Motor Control Motor Semforo Rojo Semforo Verde

Input 2 Input 0 Input 6 Output 0 Output 1 Output 2 Output 3

(1 en programacin) (1 en programacin) (1 en programacin) Ver cuadro Ver cuadro (high ilumina, low no ilumina) (high ilumina, low no ilumina)

Control del motor:


OUTPUT 0 low high low high OUTPUT 1 low low high high MOTOR PARO PARO Baja Puente Sube Puente

Montaje:

Cdigo del PICAXE: Baja puente levadizo inicio: if input2 is on and input0 is off then bajapuente goto inicio bajapuente: low output0 high output1 high output2 low output3 if input2 is off and input0 is on then paro goto bajapuente paro: low output0 low output1 high output3 low output2 goto inicio Sube puente levadizo inicio: if input0 is on and input6 is on then subepuente goto inicio subepuente: high output1 high output0 high output2 low output3 if input2 is on and input0 is off then paro goto subepuente paro: low output0 low output1 high output3 low output2 goto inicio

Control del puente levadizo

'*********Control Puente Levadizo********' '***FCsup -> input 2*** '***FCinf -> input 0*** '***Sensor -> input 6*** '***Control inversin giro motor -> output 0*** '***Control alimentacin motor -> output 1*** '***Semforo Rojo -> output 2*** '***Semforo Verde -> output 3*** inicio: if input0 is on and input2 is off then paso1 goto inicio '***Motor parado*** '***Puente abajo*** '***Semforo en verde*** '***consulta si Sensor est activado*** paso1: low output0 low output1 high output3 low output2 if input6 is on then paso2 goto inicio '***Motor sube*** '***Semforo en rojo*** paso2: high output0 high output1 high output2 low output3 if input0 is off and input2 is on then paso3 goto paso2 '***Motor parado*** '***Semaforo en rojo*** '***Temporizacin de 5s.***

paso3: low output0 low output1 wait 5 if input0 is off and input2 is on then paso4 goto paso2 '***Motor baja*** '***Semforo en rojo*** paso4: low output0 high output1 high output2 low output3 if input0 is on and input2 is off then inicio goto paso4

Tutorial 5. Proyecto de automatizacin de un cruce con semforos.

Control de un Semforo

En este caso hemos partido de un semforo de pinzas construdo mediante el empleo de un PICAXE-08. El primer problema que encontramos al emplear un PICAXE-08 es que slo disponemos de 4 salidas y necesitamos controlar 5 leds. Inicialmente simplificaremos este problema ignorando la luz de color rojo de los peatones y posteriormente mejoraremos el sistema empleando una puerta inversora para controlar este led.

1. Programa para el control de 3 luces para coches y una para peatones:


Programa que permite controlar el funcionamiento del semforo de 4 luces:
principal: gosub rc wait 5 gosub parpadeo gosub vc wait 7 gosub ac wait 2 goto principal rc: high 0 low 1 low 2 high 4

return ac:

return vc:

low 0 high 1 low 2 low 4

return

low 0 low 1 high 2 low 4

parpadeo:

return

high 0 low 1 low 2 low 4 for b0=1 to 5 high 4 pause 200 low 4 pause 200 next b0

Como se observar incluye un parpadeo en la luz verde de los peatones que indica el cambio a rojo.

2. Control completo del semforo.


El programa de control es idntico al anterior pero excluyendo el parpadeo de la luz verde de los peatones. En este caso se emplea una puerta inversora (74LS04) para lograr que cuando la luz verde de los peatones este encendida la roja este apagada y viceversa. De esta forma combinamos en una misma prctica el uso de un microcontrolador PICAXE con el de puertas lgicas tradicionales mostrando a los alumnos las posibilidades de conexionado de ambos tipos de circuitos.

Tutorial 6. Proyecto de construccin de una alarma.


Este es un pequeo proyecto de construccin de una alarma activada por haz de luz (o corte de haz, segn programemos), con activacin de seal acstica y luminosa y activacin de un dispositivo externo (que puede ser bocina, rel auxiliar).

Esquema:

Conexin del programador:

PCB:

Diagrama de bloques de una aplicacin de un sistema automatizado de alarma:

Componentes necesarios:
Microcontrolador PICAXE-08 Diodo Emisor de Luz (LED) Altavoz piezoelctrico Resistencia dependiente de la luz (LDR) Transistor Diodo semiconductor Conector descarga de programas al PICAXE Resistencia

Cantidad 1 1 1 3 1 1 1 1 1 1 1 1 1 1

Parte CT1 B1 CN1 R1-R3-R1 R1 R2 R5 Q1 C1 IC1 IC1 D1 BZ1 R2

Descripcin 3.5mm stereo socket Borne placa C.I. 2 terminales Tira pines (2 pines) 10k/0,25W 1k/0,25W 22k/0,25W 330/0,25W BC548B 100F Electroltico Zcalo 8 pin Microcontrolador PICAXE-08 Diodo LED Altavoz piezoelctrico Resistencia LDR

Programa:
Programa 1
' Alarma para PICAXE-08 ' Entrada analogical en pin 1 ' Entrada digital en pin 3 ' LED en pin 0 ' Altavoz piezoelctrico en pin 2 ' Salida en pin 4 symbol luz = b1 ' ***** Menu principal ***** ' Bucle chequeo luz y sensores inicio: ' Endendido de LED y lectura del valor de la luz high 0 readadc 1, luz ' Si el valor analgico ledo es bajo (inferior a 40) emite sonido if luz < 40 then sonido ' Si el interruptor esta activado activar la alarma if pin3 = 1 then alarma ' Pausa (prdida de tiempo) de 500 ms = s pause 500 ' Apagado de LED y lectura del valor de la luz low 0 readadc 1, luz ' Si el valor analgico ledo es bajo (inferior a 40) emite sonido if luz < 40 then sonido ' Si el interruptor esta activado activar la alarma if pin3 = 1 then alarma

' Pausa (prdida de tiempo) de 500 ms = s pause 500 'Ir a inicio para repetir el bucle goto inicio ' ***** Genera sonido***** sonido: sound 2,(120,50,80,50,120,50) pause 200 goto inicio ' ***** Activacin salida alarma **** alarma: high 4 pause 2000 low 4 goto inicio

Programa 2
' ***** Menu principal ***** ' Bucle chequeo de sensores inicio: 'LED apagado low 0 'Lectura del valor de la luz covertidor A/D y carga valor en variable b1 readadc 1,b1 'Si el valor analgico ledo es bajo (inferior a 40) emite sonido if b1 < 40 then alarma ' Si el interruptor esta activado activar el sonido if pin3 = 1 then sonido 'Ir a inicio para repetir el bucle goto inicio ' ***** Genera sonido hasta que el interruptor se cierre ***** sonido: high 0 sound 2,(120,100) if pin 3 = 1 then inicio ' ***** Activacin de la alarma indefinidamente***** alarma: high 4 goto alarma

Tutorial 7. Construccin del entrenador de PICAXE-18


1. PCB, disposicin de los componentes y vista del montaje:

2. Listado de componentes: Parte CT1 TB1 R1-R6 R7 R8 C1 IC1-2 IC1 IC2 IN OUT SW1 Descripcin 3.5mm stereo socket Borne placa C.I. 2 terminales 10k/0,25W 4,7k/0,25W 22k/0,25W 100F Electroltico Zcalo 18 pin (2 unidades) Microcontrolador PICAXE-18/A ULN2803A Darlington Driver Tira 10 pines Tira 16 pines Microinterruptor

3. Caractersticas PICAXE-18:
Tipo de PICAXE PICAXE-18 PICAXE-18A N Pines 18 18 Memoria (lneas) 40 80 Pines 13 13 Salidas 1-4 8 Entradas 5 5 A/D (b-baja) 3b 3 Memoria Datos 128-prog 256 Interrupciones Si

4. Cable de conexin: El mismo que se utiliz para la programacin del PICAXE-08

Tutorial 8. Construccin de un reproductor de melodas: PICAXE-08M


Este Chip se diferencia del PICAXE-08 de que viene en su cdigo interno implementado una serie de comandos adicionales a los del PICAXE-08, tambin tiene la posibilidad de utilizar interrupciones, comandos de control de servos, lectura de sensores de infrarrojos y de temperatura. Estos comandos y su funcin son los siguientes: Categoria Input ADC Interrupt PWM Music RAM Servo Control Infrared Temperature 1-wire Serial No Clock Frequency Comando count readadc10 setint pwmount play, tune peek, poke servo infrain2, infraout readtemp, readtemp12 readowsn setfreq

Esquema de conexionado con entrenador PICAXE-08:

Entrenador PICAXE-08

La aplicacin Programming Editor tiene un Wizard (Tune Wizard) que es un asistente para crear el cdigo de una meloda diseada personalmente o la carga de una ya existente o bien importar un ringtone monofnico para mviles. Estos ringtones estn ampliamente disponibles en Internet en formato RTTL (usados en la mayara de

telfonos Nokia). Solo funciona en el PICAXE-08M y ste solo puede tocar una nota a la vez (monofnico) no permitiendo el uso de sonidos polifnicos. Hay aproximadamente 1000 melodias para descargar en la pgina web: www.picaxe.co.uk Algunos otras fuentes posibles para ringtones libres son: http://www.ringtonerfest.com/ http://www.free-ringtones.eu.com/ http://www.tones4free.com/ Para ejecutar el Tune Wizard iremos al men y seleccionamos: PICAXE Wizard Tune Wizard La forma ms fcil para importar un ringtone de Internet es encontrar la meloda en una pgina web, marcar el cdigo RTTL y copia (botn derecho y copiar o Ctrl.+C). Regresar al Tune Wizard y pegar (botn derecho y copiar o Ctrl+V). Para importar un ringstone de un fichero elegir del men Archivo Abrir, indicar la ruta donde se encuentra el archivo y aceptar. Para copiar la meloda en la hoja de edicin de cdigo basta con hacer clic en Copiar. Una vez cargada la meloda podemos modificarla (para ello se deben tener conocimientos de msica). La salida configurada en el micro para reproducir los sonidos es la output2, aunque tambin se puede seleccionar otra salida para acompaar a la meloda con destellos de un led. Esta opcin se puede seleccionar en el Wizard en el apartado Salidas marcando los botones de la opcin, con las caractersticas siguientes: 0 = : ninguna de las salidas. 1=0 : Salida activa la output0 de vez en cuando. 2=4 : Salida activa la output4 de vez en cuando. Esta es la opcin a elegir con el montaje descrito anteriormente. Sonara la meloda en el altavoz y el Led se iluminar con cada tono emitido. 3=0&4: Salidas activas output0 y output4 y se iluminan intermitentemente y alternativamente.

La meloda puede ser probada en el PC seleccionando en el men Play, sonando la misma en los altavoces multimedia del equipo (debe disponer de tarjeta de sonido). El sonido emitido dar una idea de cmo sonar en el PICAXE pero no igual.

tems del men Tune Wizards:


Archivo Nuevo Abrir Guardar como Importar Ringtone Exportar Ringtone Exportar Wave (*.wab) Cerrar Insertar lnea Eliminar lnea Copiar BASIC Copiar Ringtone Pegar BASIC Pegar Ringtone Iniciar una nueva meloda Abrir una meloda previamente grabada Guardar la meloda editada Abrir un Ringtone de un archivo de texto Guardar en archivo de texto un Ringtone Aguardar la meloda en formato wav de Windows Cerrar el Wizard Insertar una lnea en la meloda Suprimir la lnea seleccionada Copia en el portapapeles el cdigo Basic de la meloda Copia en el portapapeles el Ringtone en formato texto Pegar el cdigo BASIC en el procesador de textos activo Pegar el cdigo en formato texto en el procesador de textos Reproduce la meloda en el PC Abre el pdf de documentacin del Wizard (Ingls)

Editar

Play Ayuda

Circuitos para la reproduccin de melodas con PICAXE-08M: Altavoz piezoelctrico: es el sistema ms simple y econmico de reproducir las melodas generadas por el PICAXE. Se conecta directamente al pin de salida del micro. Produce un sonido muy dbil y de baja calidad.

Altavoz dinmico: este sistema produce un sonido de mayor calidad pero al conectarlo directamente al pin out del microcontrolador la potencia de sonido es baja.

Altavoz dinmico con amplificador: igual al anterior pero previamente amplificado a travs del uso de un transistor amplificador de corriente. Es el usado en este proyecto. Otra opcin es utilizar un amplificador de audio de B.F. tipo TBA820M o similar, para ello deberemos utilizar un filtro RC.

Caractersticas del comando Tune: Sintaxis: Tune, Led, velocidad, (nota, nota, nota, ) Donde: Led: es una variable/constante (0..3) que especifica si otras salidas estn activas intermitentemente a la vez que la meloda suena. 0 = : ninguna de las salidas. 1=0 : Salida activa la output0 de vez en cuando. 2=4 : Salida activa la output4 de vez en cuando. Esta es la opcin a elegir con el montaje descrito anteriormente. Sonara la meloda en el altavoz y el Led se iluminar con cada tono emitido. 3=0&4: Salidas activas output0 y output4 y se iluminan intermitentemente y alternativamente. Velocidad: la velocidad es una variable /constante (1-15) que especifica el tiempo de la meloda. Nota: son los datos de meloda reales generados por el Tune Wizard.

Este comando solo puede ejecutarse en un PICAXE-08M. Reproducir msica con un microcontrolador con memoria limitada nunca tendr la calidad de dispositivos comerciales de sonido pregrabado, pero si reproducir melodas cortas con un dispositivo muy econmico y fcil de programar. Ejemplos tpicos de su aplicacin son los juguetes, dispositivos electrnicos de broma, etc. El pin de salida es el output2 (pin 5).

La velocidad: La velocidad es el tiempo de ejecucin de la meloda (nmero de pulsos por cuarto de minuto, BPM). En el sistema PICAXE se define mediante un valor que oscila de 1 a 15. La duracin se distribuye de la siguiente forma: Duracin de sonido: velocidad x 65,64 ms Duracin de silencio: velocidad x 8,20 ms Duracin total: (velocidad x 65,64) +( velocidad x 8,20) ms = velocidad x 73,84 ms Bpm = 60000/(velocidad x 73,84) Las melodas utilizadas en la mayora de los juegos tienen una proporcin de 7/8 del tiempo total de nota y un silencia de 1/8. Con el PICAXE la proporcin es ligeramente diferente (8/9) debido a la memoria y las limitaciones del microcontrolador.

Cada byte de la nota est codificado en 8 bits tal y como se muestra en la figura.

Prctica 1: 1. Copiar la carpeta msica en la ruta: "C:\Archivos de programa\Programming Editor\" 2. Montar el circuito de amplificacin y sustituir el PICAXE-08 por um PICAXE08M. 3. Abrir la aplicacin Programming Editor y seleccionar uma melodia de la carpeta anteriormente mencionada. 4. Seleccionar la configuracin 2=4 : Salida activa la output4 de vez en cuando. Esta es la opcin a elegir con el montaje descrito anteriormente. Sonara la meloda en el altavoz y el Led se iluminar con cada tono emitido. 5. Probar la meloda haciendo clic en play y posteriormente cargar el programa al PICAXE-08M y probar su correcto funcionamiento.

Tutorial 9. Construccin de un dado con LEDs


Este proyecto utiliza un entrenador bsico PICAXE-08 conectado a una placa prototipo en la que se han montado los componentes necesarios: LEDs, resistencias, pulsador y conector. Ve r la figura par hacerse una idea del conexionado.

Diagrama de bloques:

Esquema electrnico:

Programa:
'************************** '******** Test Dado ******* '************************** arranque: low 0 low 1 low 2 low 4 inicio: let pins = 23 wait 1 let pins = 0 wait 1 let pins = 1 wait 1 let pins = 2 wait 1 let pins = 4 wait 1 let pins = 16 wait 1 let pins = 0 wait 1 goto inicio ' todos los LEDs on (16+4+2+1) ' espera de 1 segundos ' todos los LEDs off ' espera de 1 segundos ' todos los LEDs pin 0 on, resto off ' espera de 1 segundos ' todos los LEDs pin 1 on, resto off ' espera de 1 segundos ' todos los LEDs pin 2 on, resto off ' espera de 1 segundos ' todos los LEDs pin 4 on, resto off ' espera de 1 segundos ' todos los LEDs off ' espera de 1 segundos ' repite el bucle

Output pin0 (patilla 7) esta conectada a LEDs 0 Output pin1 (patilla 6) esta conectada a LEDs 1 Output pin2 (patilla 5) esta conectada a LED 2 Output pin3 (patilla 3) esta conectada a LEDs 4 Input pin3 (patilla 4) esta conectada al pulsador

Nota: Recuerde no confundir el nmero de la "patilla" del chip con el nmero del pin de entrada /salida. Tambin recordar que en la placa prototipo PICAXE-08 cuando se cargue el programa deberemos ajustar el jumper correctamente, al igual que para ejecutar el programa.

Programa:
'*************************** '******* Dado aleatorio ******* '*************************** low 0 low 1 low 2 low 4 inicio: aleatorio let pins=0 random b1 if input3 is on then construyenumero goto inicio construyenumero: if b1>210 then muestraseis if b1>168 then muestracinco if b1>126 then muestracuatro if b1>84 then muestratres if b1>42 then muestrados muestrauno: let pins=4 wait 2 goto inicio muestrados: let pins=16 wait 2 goto inicio muestratres: let pins=20 wait 2 goto inicio muestracuatro: let pins=18 wait 2 goto inicio muestracinco: let pins=22 wait 2 goto inicio muestraseis: let pins=19 wait 2 goto inicio ' test switch ' pone todos los LEDs off ' carga en la variable b1 un nmero ' todos los LEDs apagados

' chequea el nmero aleatorio y salta

' muestra LEDs para 1

' muestra LEDs para 2

' muestra LEDs para 3

' muestra LEDs para 4

' muestra LEDs para 5

' muestra LEDs para 6

Tutorial 10. Tringulo de emergencia


Con este proyecto construiremos un tringulo de emergencia con mltiples aplicaciones. Se deben utilizar LEDs de alta luminosidad y se puede aplicar como dispositivo indicador de presencia, emergencia, etc. Veremos como programarlo de forma autnoma con un juego de luz cclico y variable en secuencias luminosas o bien utilizarlo de forma automtica con un sensor de luminosidad (LDR) de forma que cuando oscurezca se produzca el funcionamiento del sealizador.

Diagrama de bloques:

Output pin0 (patilla 7) esta conectada a LED 0 Output pin1 (patilla 6) esta conectada a LED 1 Output pin2 (patilla 5) esta conectada a LED 2 Input pin3 (patilla 4) esta conectada al sensor de luz (NTC)

Nota: Recuerde no confundir el nmero de la "patilla" del chip con el nmero del pin de entrada /salida. Tambin recordar que en la placa prototipo PICAXE-08 cuande se cargue el programa deberemos ajustar el jumper correctamente, al igual que para ejecutar el programa.

Esquema electrnico:

Conexionado con entrenador:

Programa 1:
' *********************** ' **** bucle despacio *** ' *********************** lento: high 0 ' LEDs on high 1 high 2 pause 500 'espera 0,5 s

' Si la luz es baja salta a bucle rpido if pin3 = 0 then rapido low 0 low 1 low 2 pause 500 ' LEDS off

' espera 0,5 s

' Si la lugz es baja salta a bucle rpido if pin3 = 0 then rapido goto lento ' *********************** ' **** bucle rpido ***** ' *********************** rapido: high 0 high 1 high 2 pause 100 ' LEDs on

'espera 0,1 s

' Si la luz es alta salta a bucle lento if pin3 = 1 then lento low 0 low 1 low 2 pause 100 ' LEDS off

'espera 0,1 s

' Si la luz es alta salta a bucle lento if pin3 = 1 then lento goto rapido

Programa 2:
************************************************ ******* Test programa Tringulo de emergencia ******** *******encendido de LEDS con distintos patrones******* init: ' poner pines 0, 1 y 2 a nivel bajo low 0 low 1 low 2 main: ' todos los LEDs on y despus todos off for b1 = 1 to 20 let pins = %00000111 pause 100 let pins = %00000000 pause 100 next b1 ' en circulo for b1 = 1 to 20 let pins = %00000001 pause 100 let pins = %00000010 pause 100 let pins = %00000100 pause 100 next b1 ' flash en circulo for b1 = 1 to 20 let pins = %00000001 pause 100 let pins = %00000000 pause 100 let pins = %00000010 pause 100 let pins = %00000000 pause 100 let pins = %00000100 pause 100 let pins = %00000000 pause 100 let pins = %00000010 pause 100 let pins = %00000000 pause 100 next b1 'repite el bucle goto main NOTA: Modificar el programa 1 para que funcione como sealizador, es decir, debe permanecer apagado en todo momento que exista luz y encenderse la secuencia luminosa en el momento que oscurezca.

Tutorial 11. Control LCD Conexionado del mdulo LCD para ser controlado por conexin serie:
El PICAXE-18 puede ser el entrenador de sistemas PICAXE-18x. La conexin de salida del PICAXE-18 (output7) tiene que ser directa sin pasar por el Darligton ULN2803.

Instrucciones para el control del LCD(comandos de control):


A continuacin se describen las instrucciones de control del mdulo LCD. Cada cdigo deber ser enviado al mdulo usando la subrutina wrins. Estas instrucciones se pueden usar para hacer los mensajes ms interesantes: scroll, parpadeo, etc. Los comandos de control tienen prefijado el cdigo (254). Cdigo 1 2 4 5 6 7 10 12 13 14 16 20 24 28 128 192 y y Instruccin Borrar display y poner cursor al principio de la primera lnea Mueve el cursor y muestra la ventana en principio de primera lnea Modo de escritura de derecha a izquierda Escritura en modo scroll hacia la izquierda Modo de escritura de izquierda a derecha Escritura en modo scroll hacia la derecha Apaga el display del LCD Oculta el cursor Cursor parpadea intermitentemente Enciende el display y el cursor Mueve el cursor una posicin a la izquierda Mueve el cursor una posicin a la derecha Scroll de la ventana una posicin a la izquierda Scroll de la ventana una posicin a la derecha Mueve el cursor al principio de la primera lnea Mueve el cursor al principio de la segunda lnea Mueve en la lnea 1, posicin x (y = 128+x) Mueve en la lnea 2, posicin x (y = 192+x)

Nota: ventana es la posicin donde se mostrar el carcter

Caracteres:
Cdigo 0 1-7 8-128 129-252 253 Instruccin Time (fecha/hora) Mensajes predefinidos ASCII caracteres (ver anexo A) Caracteres varios (dependen del tipo de LCD) Comando especial: escritura en memoria

254 255

Comando especial: comando carcter Reservado para futuros usos

Comandos de escritura:
Los comandos de escritura en el mdulo LCD tienen prefijado el cdigo (253). Se debe dejar un perodo de espera de 1000 ms (pause 1000) entre comandos de escritura. Cdigo 0 1-7 8 9 10 Instruccin Set clock time Set mensajes predefinidos 1-7 Set alarma (date/time) Set alarma (intervalo) Turn alarma off

Programa TEST del Mdulo LCD:


inicio: bucle: pause 500 serout 7,N2400, (254,128) serout 7,N2400, (Hola) end espera para la inicializacin del LCD mueve cursor al principio de la primera lnea presenta texto en pantalla LCD

Programacin de mensajes predefinidos dentro del mdulo LCD:


El mdulo admite la programacin de hasta 7 mensajes (1..7) de 16 caracteres cada uno. Estos mensajes quedarn almacenados aunque se desconecte el mdulo LCD. Los mensajes se defines de la forma (1), (2),(7). Los mensajes 1, 3, 5 y 7 se muestran en la lnea 1 del display. Los mensajes 2, 4 y 6 s muestran en la lnea 2 del display. La carga del mensaje en el mdulo se realiza mediante el comando (253), seguido de la direccin de memoria y el propio mensaje. Ejemplo:

inicio: bucle: pause 500 serout 7,N2400, (253,1,Jugador1= pause 1000 serout 7,N2400, (253,1,Jugador2= pause 500 goto bucle ) )

Visualizacin de mensajes predefinidos:


Se pueden visualizar los mensajes que previamente fueron definidos solo basta con enviar su cdigo del mensaje (1)..(7).

Si se van a visualizar ms de un mensaje es necesario hacer una pausa de 10ms (pause 10) entre mensaje y mensaje con el fin de poder hacer la carga de la memoria interna del LCD. Ejemplo:

inicio: bucle: pause 500 serout 7,N2400, (1) pause 10 serout 7,N2400, (2) pause 500 goto bucle

Visualizacin de mensajes predefinidos combinado con variables:


Es posible la combinacin de la visualizacin de mensajes predefinidos con textos alfanumricos almacenados en variables. Las variables se declaran precedidas del smbolo #, por ejemplo: #b1. Veamos un ejemplo de combinacin de ambos mtodos de visualizacin. Visualizaremos el resultado alcanzado por dos jugadores de los que se les ha definido un mensaje previo player1= como mensaje (1) y player2= como mensaje (2). Las variables que indican la puntuacin alcanzada por cada jugador se almacenarn en b1 y b2 respectivamente. El cdigo del programa quedara de la siguiente forma:

inicio: bucle: pause 500 serout 7,N2400, (1) pause 10 serout 7,N2400, (254,137,#b1, ) serout 7,N2400, (2) pause 10 serout 7,N2400, (254,201,#b2, ) let b1 = b1 + 1 let b2 = b2 + 1 pause 500 goto bucle
Nota: Notar que los mensajes con cdigo (1 o 2) son los primero que se visualizan. Posteriormente se produce un retardo de 10 ms (pause 10). Por ltimo se visualizar el resultado almacenado en las variables (#b1 o #b2). El valor a visualizar, almacenado en las variables, deber hacerse en una posicin determinada (posterior al mensaje, 9 caracteres). Para #b1 ser: (254,137) o sea 128+9 y para #b2: (254,201) resultado de 192+9.

Tambin se le aaden dos espacios con el fin de que en la siguiente escritura sobrescriba la cifra antior con espacios para no ser visualizados (caso de que la cifra anterior tenga ms dgitos que la actual).

Visualizacin de caracteres especiales:


La aplicacin Programming Editor contiene un wizard (asistente) que permite la creacin de caracteres definidos por el propio usuario. Veamos como se utiliza: 1. Seleccionar el wizard en el men: PICAXE Wizards Axe033 Serial LCD. 2. Aparecer un editor de caracteres de forma que se dibujar el carcter a crear mediante el clic en la casilla correspondiente. Tambin deberemos indicarle el pin de salida (en este mdulo es el 7) y la direccin de la CGRAM. 3. Por ltimo hacer clic en Copy preload data para copiar el cdigo generado en el portapapeles de Windows (tambin lo pega directamente sobre la pantalla de edicin del cdigo).

Funcionamiento del reloj/alarma:


El mdulo LCD controlado por i2C se puede utilizar como reloj/alarma pero deberemos aadirle: Una pila de Litio de 3V. DS1307 (C.I. reloj en tiempo real). Instrucciones de montaje: 1. Colocar el DS1307 en el zcalo de 8 pines destinado para su conexin. Tener cuidado con la disposicin del mismo. 2. Colocar la pila de litio de 3V en su alojamiento con la cara positiva hacia arriba. Nota: La pila de litio conserva el reloj DS1307 funcionando cuando el suministro de energa principal no est conectado. Esto garantiza el tiempo preciso dentro del mdulo. La pila de litio no da energa a la pantalla de cristal lquido o a la salida de pulsos. La duracin de la pila est estimada en 10 aos.

Input/output Power conexiones:


Main header (V+, 0V): Se conectar la alimentacin principal del mdulo (5-6V DC). Si se desea conectarlo a 4,5V se debe colocar un puente en J2 (power). Este puente cortocircuita el diodo de proteccin de tensin D1, dado que como tiene una cada de tensin de 0,7V que podra poner la pantalla muy oscura con una tensin inferior a 4,5V. Main header (SDA and SCL): stas son las conexiones del modo de trabajo del i2C. Solo pueden usarse cuando un puente ha sido soldado en J1 para colocar el mdulo en modo i2C. Main header (OUT): Salida de la alarma. Cuando se acciona pone a nivel alto la salida OUT durante 5 segundos. Puede conectarse cualquier dispositivo cuyo consumo no supere los 20mA. Pulse Output (PLS): La salida PLS entrega una onda cuadrada de 1 Hz (1 pulso por segundo) cuando el reloj opcional DS1307 est conectado. Unas resistencias de 330 estn conectados en la placa para permitir a un LED conectarlo directamente y producir una seal intermitente. La corriente de salida mxima es de 20 mA. Clock Jumper (CLK): Si se elige esta opcin el mdulo se pone en funcionamiento como reloj (CLK). Durante este modo las instrucciones no pueden ser enviadas por conexin serie. La salidad de pulsos y alarma funcionan con noralidad. En la pantalla del LCD se mostrar en tiempo en todo momento, cuando la alimentacin principal est conectada. LCD Backlight (LCD) (El LCD del modulo no tiene luz de fondo): Si el LCD dispone de luz de fondo se puede ajustar la iluminacin. Se debe soldar los conexiones A y K del LCD a la placa y aadir una resistencia en RB del valor indicado en el Datasheet del fabricante del LCD. Resonador Tuning (RST): Entrada para calibracin del oscilador interno.

Programacin de la hora del mdulo LCD:


Para configurar la hora del reloj del mdulo se deber utilizar un pequeo programa que se cargar a un PICAXE. A continuacin se muestra la estructura del programa. Una vez se envi el programa al mdulo la pila de litio mantendr la hora exacta durante 10 aos. En el ejemplo se configurar el reloj para las 22:00 del 25/11/01. La carga se efectuar con la instruccin de escritura (253), seguida por la direccin de memoria del reloj (0), la fecha y la hora (25/11/01 22.00 ):

inicio: pause 500 ajuste: serout 7,N2400, (253,0,25/11/01 22:00 ) pause 1000 end
Nota: La fecha y la hora se deben configurar exactamente como se muestra, usando el formato de hora de 24 horas: dd/mm/aa hh:mm. Los mensajes de escritura siempre deben ser de 16 caracteres de longitud, por ello se le debe agregar a la configuracin dos espacios en blanco para llegar a los 16 caracteres. Tener en cuenta que despus de cada orden de escritura se debe producir un lapsus muerto de 1000 ms (pause 1000). El ltimo serout muestra la fecha y hora para comprobar que se ha configurado correctamente. Para configurar la fecha y hora de forma exacta hacer la carga del proigrama con un minuto de anterioridad y posteriormente resetear el PICAXE justo en el momento que se cumpla el minuto.

Visualizacin de la hora:
El mensaje de Time ser actualizado con la fecha/hora cada vez que se use. El mensaje se visualizar usando el cdigo de caracteres 0. La fecha/hora se visualizar en la segunda lnea del LCD. El siguiente programa visualiza el mensaje 1 en la primera lnea y la fecha/hora en la segunda lnea. La pantalla se actualizar cada 0,5 segundos.

inicio: pause 500 ajuste: serout 7,N2400, (1) pause 10 serout 7,N2400, (0) pause 500 goto ajuste

Programacin de la alarma:
El pin de salida de la alarma se acciona (nivel alto durante 5 segundos) cuando se alcanzo el tiempo prefijado para el disparo de la misma. La alarma puede estar configurada para mostrar continuamente fecha/hora (cdigo de escritura 8), o bien puede repetir la presentacin fecha/hora cada cierto tiempo (cdigo de escritura 9). La duracin de la alarma debe estar programado en el mdulo usando un pequeo programa corriendo en un PICAXE-18 con el programa que se especifica mas adelante en el ejemplo. Ajuste de la alarma a un tiempo especfico: Para programar el reloj registro de la alarma para las 07:30 de cada da (cdigo de escritura 8), usar el siguiente programa. Este programa carga la instruccin de escritura (253), seguida par la direccin de la alarma (8) y del tiempo (00/00/00 07:30)

inicio: pause 500 ajuste: serout 7,N2400, (253,8,00/00/00 07:30 ) pause 1000 end
Nota: La fecha y la hora deben configurarse exactamente como se muestra. Se le deben aadir dos espacios al final del texto para garantizar que el mensaje tiene 16 caracteres. Tambin debe tenerse en cuenta que se debe aadir un tiempo de retardo despus de una orden de escritura de 1000 ms (pause 1000). Ejemplo: Para activar el despertador el primer da de todos los meses de todos los meses a medianoche

inicio: pause 500 ajuste: serout 7,N2400, (253,8,01/00/00 00:00 ) pause 1000 end

Ajuste de la alarma en un intervalo de tiempo: Para configurar la alarma para accionarse durante un intervalo de tiempo, en lugar de un tiempo exacto, usar el cdigo de escritura 9 en lugar de 9. Por ejemplo, para disparar la alarma cada diez minutos (usando cdigo de escritura 9):

inicio: pause 500 ajuste: serout 7,N2400, (253,9,00:10:00 pause 1000 end
Para configurar la alarma cada 30 segundos:

inicio: pause 500 ajuste: serout 7,N2400, (253,9,00:00:30 pause 1000 end
Para configurar la alarma cada 2 horas:

inicio: pause 500 ajuste: serout 7,N2400, (253,9,02:00:00 pause 1000 end )

Nota: El intervalo de disparo de la alarma es configurado por el nmero de horas (00 a 23), minutos (00 a 59) y segundos (00 a 59). El intervalo prctico menor es de 10 segundos, debido a los 5 segundos de duracin de la salida de la alarma. Comprobar que la longitud de los textos debe ser de 16 caracteres por lo que se le agregarn 8 espacios en blanco. Ajuste del paro de la alarma: Para desactivar cualquier tipo de alarma enviar el comando 10. Este comando no requiere rellenar de espacios en blanco hasta los 16 caracteres.

inicio: pause 500 ajuste: serout 7,N2400, (253,10) pause 1000 end

Anexo A:
Cuadro de caracteres memorizados en la CGRAM del mdulo LCD

Anexo B:
Prcticas para el manejo del mdulo LCD Prctica 1: Crear un programa para poner en hora el reloj y que muestre la hora.

Tutorial 12. Construccin de un robot rastreador


Utilizando un proyecto ya realizado de un rastreador con transistores abordaremos su automatizacin mediante un PICAXE-18 y un Driver controlador de motores L293D. Esquema:

Entradas: Input 0 Sensor ptico reflexivo CNY70 Input 1 Sensor ptico reflexivo CNY70

Salidas: Output 0 Altavoz piezoelctrico indicador de desvo lnea negra Output 1 Indicador motor en marcha izquierdo Output 2 Indicador motor en marcha derecho Output 4 Control motor derecho (ver cuadro de control del motor) Output 5 Control motor derecho (ver cuadro de control del motor) Output 6 Control motor izquierdo (ver cuadro de control del motor) Output 7 Control motor izquierdo (ver cuadro de control del motor)

Control del motor: Accin Motor derecho atrs Motor derecho adelante Motor izquierdo atrs Motor izquierdo adelante Adelante Atrs Paro Giro rpido derecha Giro rpido izquierda Seales de entrada: Los optoacopladores CNY70 generan un nivel alto en las entradas del PICAXE-18 (inputs 0 y 1) cuando el rastreador ve lnea negra. Input0 low low high high Montaje: Input1 low high low high Accin Buscar lnea Giro rpido derecha Giro rpido izquierda Adelante Motor Derecho Motor Izquierdo Output4 Output5 Output6 Output7 low high low low high low low low low low high low low low low high high low low high low high high low low low low low low high low high high low high low

Cdigo:
'********************************************************************************* '************************ COCHE RASTREADOR *********************************** '********************************************************************************* inicio: if input0 is off and input1 is off then buscalinea if input0 is off and input1 is on then giraderecha if input0 is on and input1 is off then giraizquierda if input0 is on and input1 is on then avanza goto inicio giraderecha: low output4 high output5 low output6 high output7 high output2 wait 1 low output2 gosub pitido goto inicio giraizquierda: high output4 low output5 high output6 low output7 high output1 wait 1 low output1 gosub pitido goto inicio avanza: high output4 low output5 low output6 high output7 goto inicio buscalinea: low output4 high output5 high output6 low output7 goto inicio paro: low output4 low output5 low output6 low output7 return sound 0,(125,100) pause 500 return

pitido:

ANEXO1: Comandos BASIC PICAXE


COMENTARIOS Usar comentarios. Aunque sea perfectamente obvio para ti, lo que ests escribiendo, alguien ms puede leerlo (o tu mismo ms tarde) y puede no tener idea de lo que habas hecho. Aunque los comentarios usan espacio en el archivo fuente, no lo hacen en el PICAXE. Haz que los comentarios te digan algo til acerca de lo que el programa est haciendo. Un comentario como poner a 1 el pin 0 simplemente explica la sintaxis del lenguaje, pero no te dice nada acerca de la necesidad de hacerlo. Encender el LED de alarma puede ser ms til. Un bloque de comentarios en el comienzo del programa y antes de cada seccin de cdigo puede describir que suceder con ms detalle que un simple espacio despus de cada lnea. No incluyas un bloque de comentarios en lugar de comentarios individuales de lnea. Usar mbos. En el comienzo del programa que har el programa, autor y fecha. Puede ser til para listar informaciones de revisin y fechas. Especificar las conexiones de cada pin puede ser til para recordar para que equipo en especial se program. Los comentarios comienzan con un apstrofe () o punto y coma (;) y contina hasta el final de la lnea. La palabra clave REM tambin puede ser usada para comentarios. Ejemplo:
high 0 poner pin0 a nivel alto high0 ;poner pin0 a nivel alto Rem poner pin0 a nivel alto

SIMBOLOS Los smbolos nemotcnicos son palabras clave que identifican constantes, variables y direcciones de programa. La asignacin del smbolo se realiza poniendo el nombre del smbolo seguido del smbolo igual (=) y posteriormente la variable o constante. Los smbolos pueden ser cualquier palabra que no sea la relativa a un comando. Los smbolos pueden contener carcteres numricos (e.j.: flash1, flash2, etc.) Pero el primer carcter no puede ser uno numrico (e.j.: 1flash) El uso de smbolos no aumentan la longitud del programa. Las direcciones de programa son asignadas siguiendo el smbolo con dos puntos (:). Ejemplos: symbol Led_Rojo = 7 symbol Contador = B0 let Contador = 200 inicio: high Led_Rojo pause Contador low Led_Rojo pause Counter define Led-Rojo como una constante 7 define Contador como una variable B0 precarga de la variable Contador con el valor 200 define una direccin de programa pone a nivel alto 1 la salida 7 espera de 0,2 segundos pone a nivel bajo 0 la salida 7 espera de 0,2 segundos

goto inicio

salta hasta la direccin indicada en inicio

CONSTANTES Las llamadas constantes pueden ser creadas de manera similar a las variables. Puede ser ms conveniente usar un nombre de constante en lugar de un nmero constante. Si el nmero necesita ser cambiado, nicamente puede ser cambiado en un lugar del programa donde se define la constante. No pueden guardarse datos variables dentro de una constante. Las constantes declaradas pueden ser de cuatro tipos: decimal, hexadecimal, binario y ASCII. Los nmeros decimales se escriben directamente sin ningn prefijo. Los nmeros hexadecimales se preceden del smbolo dlar (&). Los nmeros binarios de preceden del smbolo tanto por ciento (%). Los valores ASCII se colocan tre comilla (). Ejemplos: 100 &64 %01100110 A Hello B1 = B0 ^ $AA VARIABLES Tipos segn sistema: A continuacin se indican las variables que se aplican a cada modelo de programacin: PICAXE es usado al programar mdulos PICAXE. El BASIC y Extended son usados al programar mdulos Stamp. El ensamblador es el utilizado con cdigo de ensamblador. nmero 100 en decimal nmero 64 en hexadecimal nmero binario: 01100110 letra A en cdigo ASCII (65) Hello equivalente a H, e, l, l, o operacin XOR entre la variable B0 com AA en hex

PICAXE
El sistema PICAXE da soporte a las siguientes variables: Words: W0, W1, W2, W3, W4, W5, W6 Bytes: DIRS, PINS (solo PICAXE-08), INFRA, KEYVALUE B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13 Bits: PIN0, PIN1, PIN2, PIN3, PIN4, PIN5, PIN6, PIN7 (conjuntamente igual PINS) BIT0, BIT1, BIT2, BIT3, BIT4, BIT4, BIT5, BIT6, BIT7 (conjuntamente igual B0) BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15 (conjuntamente igual B1) In/Out aade los pseudo nombres: INPUT0, INPUT1, etc. puede usarse en lugar de PIN0, PIN1, tec. OUTPUT0, OUTPUT1, etc. puede usarse en lugar de 0, 1, 2, etc.

BASIC
El modo BASIC da soporte a las siguientes variables: Words: PORT W0, W1, W2, W3, W4, W5, W6 Bytes: DIRS, PINS B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13 Bits: DIR0, DIR1, DIR2, DIR3, DIR4, DIR5, DIR6, DIR7 (conjuntamente igual DIRS) BIT0, BIT1, BIT2, BIT3, BIT4, BIT4, BIT5, BIT6, BIT7 (conjuntamente igual B0) BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15 (conjuntamente igual B1) Nota: B12 y B13 (W6) es usado dentro de las rdenes GOSUB como una pila. Por consiguiente no debera utilizarse como un registro de propsito general.

EXTENDED
El modo extendido da soporte a todas las variables de BASIC. Adems: INPUT0, INPUT1, etc . puede usarse en lugar de pin0, pin1 etctera. OUTPUT0, OUTPUT1, etc . puede usarse en lugar de 0, 1, 2 etctera. Nota: B12 y B13 (W6) es usado dentro de las rdenes GOSUB como una pila. Por consiguiente no debera utilizarse como un registro de propsito general. ENSAMBLADOR El modo ensamblador soporta los mismos modelos de variables que el modo extendido.

RESUMEN DE COMANDOS (A-0)


Sistemas:

La siguiente tabla muestra los comandos que se aplican a los siguientes sistemas: El BASIC y Extended se usan al programar mdulos Stamp. El PIC16F84A se usan al hacer un download directamente en un PIC16F84A PIC16F627 PICAXE se usa al programar mdulos PICAXE
Comando
Backward Branch Button Count Debug Eeprom End For...next Forward Gosub Goto Halt High i2cslave If...then If infra.. then If sensor.. then Infrain Input Keyin Lcd Lookdown Lookup Low Nap Output

BASIC
X X X X X X X X X X

Extendida
X X X

PIC16F84A
X X

PICAXE08
X X X X X X X X X X X X X

PICAXE18
X X X X X X X X X X X X X (X) X x(A)

PICAXE28
X X X X (X) X X X X X X X X X X (X) X X

X X X X X X X X X X

X X X X X X X X X

X(A) X X X X X X X X X X X X X X X X X (A) X X X X X X X X X X X X X X

X X (X) X X X X

RESUMEN DE COMANDOS (P-Z)


Sistemas:

La siguiente tabla muestra los comandos que se aplican a los siguientes sistemas: El BASIC y Extended se usan al programar mdulos Stamp. El PIC16F84A se usan al hacer un download directamente en un PIC16F84A PIC16F627 PICAXE se usa al programar mdulos PICAXE
Comando
Pause Peek Poke Pot Pulsin Pulsout Pwm Pwmout Random Readadc Readadc10 Readi2c Read Readmem Readowclk Resetowclk Readowsn Readtemp Readtemp12 Return Reverse Serin Serout Sertxd Servo Setint Setfreq Sleep Sound Switch on Switch off Symbol Toggle Wait Write Writemem Writei2c

BASIC
X

Extendida
X

PIC16F84A
X

PICAXE08
X

PICAXE18
X X X (use readadc) X X X (X) X X X (X) X (X) X X (A) X (A) X (A) X (A) X (X) X X X X (X) X(A) X (A) X (X) X X X X X X X X X (X)

PICAXE28
X X X (use readadc) X X X (X) X X X (X) X (X) X X

X X X X X (use pot)

X X X X X (use pot)

X X X X

(use readadc) X X X X X

X X X X

X X X X

X X X

X X X X

X (X) X (A) X (X) X X X X (X) X X (A) X X X X X X X X X X (X)

X X

X X X

X X X X X X X X

X X X X X X X X

X X X X X X X X

backward BACKWARD motor Hace que el motor conectado a la salida cambie de giro Motor: puede tomar el valor motor A o motor B Nota: salidas 4, 5 (A) y salidas 6, 7 (B) Ejemplo: inicio: forward A 5 backward A wait 5 halt A wait 5 goto inicio branch BRANCH offset,(direccin0, direccin1.direccinN) Causa que el programa salte a una posicin diferente, basada en una variable indexada. Es similar al ONGOTO de otros BASIC. La etiqueta que especifica la direccin, debe estar en la misma pgina de cdigo que la instruccin BRANCH. offset: es una variable/constante que especifica que direccin usar (0, 1n) direcciones: son etiquetas que especifican donde ir Ejemplo: rest: let infra = 0 inicio: if infra > 0 then test goto inicio test: branch infra, (btn0,btn1,btn2,btn3) goto rest ramifica a rutinas indicadas (btn0..btn3) si no resetea saltando a rest btn0: etc. btn1: etc. btn2: etc. btn3: etc. salta a test si la variable infra es > 0 si no vuelta a inicio resetear la variable infra motor A en marcha wait espera 5 segundos motor A cambio de giro espera 5 segundos motor A parado espera 5 segundos salto a inicio

button BUTTON Pin, Down, Delay, Rate, Bvar, Action, Etiqueta Lee Pin y opcionalmente ejecuta anti-rebote y autoproteccin. Pin automticamente se toma como entrada. Pin debe ser una constante entre 0-15 o una variable que contenga un nmero entre 0-15 (p.ej. B0) un nmero de pin (p.ej. PORTA,0) Down: estado del pin cuando se oprime el pulsador (0..1) Delay: contador de ciclos antes de que comience la auto-repeticin (0..255). Si es 0, no se efectua anti-rebote ni auto-repeticin. Si es 255 se eliminan rebotes, pero no auto-repiticin Rate: valor de auto-repeticin (0..255) Bvar: variable con tamao de byte usada internamente para conteo de demoras y repeticiones. Debe ser inicializada a 0 antes de ser usada y no ser usada en cualquier lugar del programa Action: estado del pulsador al ser actuado Etiqueta: la ejecucin comienza en esta etiqueta si es cierto Action Ejemplo: inicio: button 0,0,200,100,b2,0,cont toggle 1 cont: count COUNT Pin, Period, Var Cuenta el nmero de pulsos en un Pin, durante un perodo Period, y guada el resultado en Var. Pin Pin: debe ser una constante (0..7) una variable que contenga un nmero de 0 a 15 (p.ej. B0) un numero de pin Period: valor numrico (0..65535) en ms Variable: variable tipo word, recibe el valor del conteo (0..65535) Chequea el estado de Pin mediante un bucle y cuenta las transiciones de bajo a alto. Con un oscilador de 4 MHz chequea el estado del pin cada 20 s. Con un oscilador de 20MHz chequea el estado cada 4 s. De esto, se deduce que la mayor frecuencia de pulsos que puede ser contada es de 25 KHz con un oscilador de 4 MHz y de 125 KHz con un oscilador de 20 MHz si la frecuencia tiene un ciclo til del 50% (los tiempos altos son iguales a los bajos). Ejemplo: inicio: count 1, 500, w1 debug w1 goto inicio cuenta los pulsos del pin1 en 5 segundos viasualiza los valores salta a inicio (bucle) salta a cont a menos que pin0 = 0 cambia el estado del pin1

debug DEBUG Var Visualiza la informacin contenida en la variable Var en la ventana del depurador durante la ejecucin. Var: variable con un valor previamente cargado Ejemplo: inicio: debug b1 let b1 = b1+1 pause 500 salto inicio eeprom EEPROM {location},(data,data,) Guarda constantes en un chip EEPROM. Si se omite el valor opcional Location, la primera declaracin se guarda en la direccin 0 de la EEPROM y las subsiguientes en las siguientes direcciones del mismo. Si se indica un valor Location, ste indica la direccin de comienzo para guardar los datos.. Location: es una constante numrica (0..255) que especifica donde empezar a almacenar los datos en la EEPROM. Si no existe una posicin indicada el almacenamiento contina a partir del ltimo dato introducido. Si inicialmente no se especific ninguna posicin el almacenamiento comienza en la 0. Data: son constantes (0..255) que se almacenan en la EEPROM. EEPROM solo trabaja con microcontroladores con EEPROM incorporado como el PIC16F84 y PIC16C84 , PICAXE-18A, 28, 28A, 28X. Dado que la EEPROM es una memoria no voltil, los datos permanecern intactos an sin alimentacin. Los datos se guardan en la EEPROM solo una vez, cuando el microcontrolador es programado, no cada vez que se ejecuta el programa. Se puede usar WRITE para colocar valores en la EEPROM en el momento de la ejecucuin. Ejemplo: EEPROM 5, (10,20,30) EEPROM 0, (Hello Word) end END guarda 10, 20, 30 a partir de la direccin 5 guarda el valor ASCII visualiza el valor de b1 incrementa el valor de b1 en una unidad espera de 0,5 segundos salta a inicio (bucle)

Detiene la ejecucin del proceso y entra en modo de bajo consume. Todos los pins de I/O permanecen en el estado en que se encuentran. END trabaja ejecutando una instruccin SLEEP continua dentro de un bucle. Un END, STOP GOTO deben ser colocados al final de un programa para evitar pasar del lmite de la misma u comience nuevamente.

Ejemplo: inicio: let b2 = 15 pause 2000 gosub flash let b2 = 5 pause 2000 gosub flash end flash: for b0 = 1 to b2 high 1 pause 500 low 1 pause 500 next b0 return
for next FOR contador = start TO end {STEP {-} inc} {body}

set b2 con valor 15 espera de 2 segundos salta al procedimiento flash set b2 con valor 5 espera de 2 segundos salta al procedimiento flash

define el bucle con el valor b2 salida 1 a nivel alto espera de 0,5 segundos salida 1 a nivel bajo espera de 0,5 segundos fin de bucle retorno a linea siguiente de la llamada

El bucle FOR NEXT permite a los programas ejecutar un nmero de declaraciones {body} un nmero de veces, usando una variable como contador. Debido a su complejidad y versatilidad, es mejor describirla paso a paso. El valor de start se asigna a la variable ndice: count, que puede ser una variable de cualquier tipo. Se ejecuta las instrucciones de body. Body es opcional y puede ser omitido (quizs por un bucle de demora). El valor de inc es sumado a ( restado si se especifica -) count. Si no se define un valor steep, se incrementa count en una unidad. Si count no pas end desbord el tipo de variable, la ejecucin vuelve al paso 2. Si el bucle necesita contar ms de 255 (count > 255), se debe usar una variable de tamao Word.

Ejemplo: bucle: for b0 = 1 to 20 high 1 pause 500 low 1 pause 500 next b0 pause 2000 goto bucle
forward FORWARD motor

define el bucle con repeticin de 1 a 20 salida 1 a nivel alto espera de 0,5 segundos salida 1 a nivel bajo espera de 0,5 segundos fin de bucle espera de 2 segundos salta a bucle para comienzo de nuevo

Arranca motor hacia delante


Motor: puede tomar el valor motor A o motor B Nota: salidas 4, 5 (A) y salidas 6, 7 (B) Ejemplo: inicio: forward A 5 backward A wait 5 halt A wait 5 goto inicio motor A en marcha wait espera 5 segundos motor A cambio de giro espera 5 segundos motor A parado espera 5 segundos salto a inicio

gosub GOSUB etiqueta

Salta a la subrutina indicada en etiqueta, guardando su direccin de regreso en la pila (snack). A diferencia del GOTO, cuando se llega a un RETURN, la ejecucin sigue con la declaracin siguiente al ltimo GOSUB ejecutado. Se puede usar un nmero ilimitado de subrutinas en un programa y pueden estar anidadas. En otras palabras, las subrutinas pueden llamar a otra subrutina. Cada anidamiento no debe ser mayor de cuatro niveles.

Ejemplo: inicio: let b2 = 15 pause 2000 gosub flash let b2 = 5 pause 2000 gosub flash end flash: for b0 = 1 to b2 high 1 pause 500 low 1 pause 500 next b0 return
goto GOTO etiqueta

set b2 con valor 15 espera de 2 segundos salta al procedimiento flash set b2 con valor 5 espera de 2 segundos salta al procedimiento flash

define el bucle con el valor b2 salida 1 a nivel alto espera de 0,5 segundos salida 1 a nivel bajo espera de 0,5 segundos fin de bucle retorno a linea siguiente de la llamada

La ejecucin del programa continua en la declaracin de la etiqueta. Ejemplo: inicio: high 1 pause 5000 low 1 pause 5000 goto inicio
halt HALT motor

salida 1 a nivel alto espera de 5 segundos salida 1 a nivel bajo espera de 5 segundos salta a inicio

Para el motor indicado


Motor: puede tomar el valor motor A o motor B Nota: salidas 4, 5 (A) y salidas 6, 7 (B)

Ejemplo: inicio: forward A 5 backward A wait 5 halt A wait 5 goto inicio motor A en marcha wait espera 5 segundos motor A cambio de giro espera 5 segundos motor A parado espera 5 segundos salto a inicio

high HIGH pin

Pone a nivel alto el pin especificado y lo convierte automticamente en salida. Pin puede ser una constante, 0 7, una variable que contenga un nmero de 0 7 (p. ej. B0) un nmero de pin (p. ej. PORTA.0) Ejemplo: bucle: high 1 pause 5000 low 1 pause 5000 goto bucle
i2cslave I2CSLAVE esclavo, velocidad, direccin

pone salida 1 a nivel alto espera de 5 segundos pone la salida 1 a nivel bajo espera de 5 segundos salta a comienzo de bucle repetitivo

El comando i2cslave se utiliza para configurar los pines del PICAXE y definir el tipo de i2c. Si se utiliza nicamente un dispositivo i2c, entonces generalmente solo se necesita una orden i2cslave dentro del programa. Esclavo: es la direccin del esclavo i2c. Velocidad: marca la velocidad de transmisin. I2cfast: 400KHz o I2cslow: 100KHz. Direccin: es el i2cbyte o i2sword que indica la direccin a partir de la cual se guardar la informacin. Despus de que se utilice el comando i2cslave, se pueden utilizar los comandos readi2c y writei2c para acceder al dispositivo i2c. Se pueden utilizar para leer y grabar datos de una EEPROM serie usando un interface i2c de 2 hilos, como la 24LC01B similar. Esto permite guardar datos en una memoria externa no voltil, para que sean mantenidos an sin conexin de alimentacin. Tambien se utilizan para poder comunicarse con otros dispositivoscon interface i2c, como sensores de temperatura y convertidores A/D.

Direccin esclavo La direccin del esclavo cambia para dispositivos diferentes (ver tabla inferior) del i2c. Para las EEPROM del tipo 24LCxx la direccin es %1010xxxx. Velocidad La velocidad del bus i2c se selecciona a travs de los comandos i2cfast para velocidad de 400KHz y i2cslow para 100 KHz. Direccin control Los 7 bits superiores del byte de control contienen el cdigo de control junto con la seleccin del chip e informacin adicional de direccin, dependiendo de cada dispositivo. El bit inferior es una bandera interna que indica si es un comando de lectura escritura y no se debe usar. Por ejemplo, cuando comunicamos con un 24LC01B, el cdigo de control es %1010 y no se usa la seleccin de chip, por lo que el byte de control ser %10100000 $A0. Algunos formatos de control se pueden ver en la siguiente tabla:
Dispositivo
24LC01B 24LC02B 24LC04B 24LC08B 24LC16B 24LC32B 24LC64 DS1307 MAX6953 AD5245 SRF08 CMPS03 SP03

Capacidad
EE 128 EE 256 EE 512 EE 1k EE 2k EE 4k EE 8k RTC 5x7 LED Digital Pot Sonar Compass Speech

Direccin esclavo
%1010xxxx %1010xxxx %1010xxbx %1010xbbx %1010bbbx %1010dddx %1010dddx %1101000x %101ddddx %010110dx %1110000x %1100000x %1100010x

Velocidad
i2cfast i2cfast i2cfast i2cfast i2cfast i2cfast i2cfast i2cslow i2cfast i2cfast i2cfast i2cfast i2cfast

Tamao direccin
i2cbyte i2cbyte i2cbyte i2cbyte i2cbyte i2cword i2cword i2cbyte i2cbyte i2cbyte i2cbyte i2cbyte i2cbyte

El tamao de direccin enviado (byte o Word) viene determinado por el tamao de la variable usada. Si se usa una variable con tamao byte se enva una direccin de 8 bits. Si se enva una variable de tamao Word, se enva una direccin de 16 bits. Asegurarse de utilizar una variable apropiada al dispositivo a comunicar.

ifthen if andthen iforthen IF variable ?? valor {AND/OR variable ?? valor } THEN etiqueta Estructura de comparacin condicional con salto a una direccin determinada (etiqueta) en caso de que se cumpla.

??: condicional =, <>, >=, <=, >, < Variable: valor de la comparacin Valor: variable constante Etiqueta: direccin del salto en caso de cumplir el condicional

Efecta una o ms comparaciones. Cada trmino variable puede relacionar un valor con una constante otra variable e incluye uno de los operadores listados anteriormente. IFTHEN evala la comparacin en trminos de CIERTO o FALSO. Si lo considera cierto, se ejecuta la operacin posterior al THEN. Si lo considera falso, no se ejecuta la operacin posterior al THEN. Las comparaciones que dan 0 se consideran falso. Cualquier otro valor es cierto. Ejemplo: inicio: if pin0 = 1 then flash goto inicio flash: high 1 pause 5000 low 1 goto inicio
infrain INFRAIN Espera hasta que una seal de infrarrojos sea recibida. Este comando se utiliza para esperar una seal infrarrojo nueva procedente del transmisor de infrarrojos (utiliza el protocolo de Sony). El programa se detiene hasta que reciba la seal infrarroja. El valor de la orden recibida se almacena en la variable predefinida infra.

salta a flash si el valor del pin0 es un 1 sino salta a inicio pone a valor alto la salida 1 espera de 5 segundos pone a valor bajo la salida 1 salto a inicio

Ejemplo: Inicio: infrain if infra = 1 then swon1 if infra = 2 then swon2 if infra = 3 then swon3 if infra = 4 then swoff1 if infra = 5 then swoff2 if infra = 6 then swoff3 goto inicio swon1: high 1 swon2: goto inicio swon3: high 2 goto inicio high 3 goto inicio swoff1: low1 goto inicio swoff2: low2 goto inicio swoff3: low3 goto inicio
input INPUT pin Convierte el Pin especificado en una entrada. Pin debe ser una constante entre 07, o una variable que contenga un nmero 0-7 (p. ej.: B0) o el nombre de un pin (p. ej.: PORTA.0) Ejemplo: inicio: input 1 reverse 1 reverse 1 output1 configura el pin1 como entrada configura el pin 1 como salida configura el pin1 como entrada configura el pin1 como salida

espera una nueva seal infrarroja si el valor de infra es 1 salta a swon1 si el valor de infra es 1 salta a swon2 si el valor de infra es 1 salta a swon3 si el valor de infra es 1 salta a swoff1 si el valor de infra es 1 salta a swoff2 si el valor de infra es 1 salta a swoff3

keyin KEYIN Espera hasta que se presione una tecla del teclado. Este comando se utiliza para realizar una espera hasta que se accione una tecla del teclado (conectado directamente al PICAXE, no el teclado utilizado mientras se programa). Todo procesamiento se detiene hasta que lel accionamiento se reciba. El valor de la tecla pulsada se almacena en una variable predefinida keyvalue. El valor almacenado en keyvalue estan en hexadecimal de forma que se debe tener en cuenta a la hora de programar anteponiendo el smbolo $. A continuacin se muestra en detalle el valor que le corresponde a cada tecla:
KEY A B C D E F G H I J K L M N 0 P Q R S T U V w X Y CODE 1C 32 21 23 24 2B 34 33 43 3B 42 4B 3A 31 44 4D 15 2D IB 2C 3C 2A ID 22 35 = \ BKSP SPACE TAB CAPS LSHIFT LCTR L LGU I LALT RSH F T RC TR L R GUI RALT APPS ENTER ESC Fl F2 F3 F4 F5 KEY 9 CODE 46 OE 4E 55 5D 66 29 OD 58 12 14 E0.1F 11 59 E0.14 E0.27 E0.11 E0.2F 5A 76 05 06 04 06 03 KEY [ INSERT HOME P GU P DELETE END P GDN U ARROW LARROW D ARROW R ARROW NUM KP/ KP* KPKP + KP EN KP. KP0 KP1 KP2 KP3 KP4 KP5 KP6 CODE 54 E0.70 E0.6C E0.7D E0.71 E0.69 E0.7A E0.75 E0.6B E0.72 E0.74 77 E0.4A 7C 7B 79 E0.5A 71 70 69 72 7A 6B 73 74

KEY Z 0 1 2 3 4 5 6 7 8

CODE 1A 45 16 1E 26 25 2E 36 3D 3E

KEY F6 F7 F8 F9 FIO FU F12 PRNT SCR SCROLL PAUSE

CODE 0B 83 0A 01 09 78 07 ?? 7E ??

KEY KP7 KP8 KP9 ]

CODE 6C 75 7D 5B 4C

'

52 41 49 4A

Forma de conectar el teclado al PICAXE:

Ejemplo: inicio: keyin if keyvalue = $45 then swon1 if keyvalue = $16 then swon2 if keyvalue = $26 then swon3 if keyvalue = $25 then swoff1 if keyvalue = $2E then swoff2 if keyvalue = $36 then swoff3 swon1: high 1 goto inicio swon2: high 1 goto inicio swon3: espera la activacin de una tecla pone salida 1 a valor alto pone salida 2 a valor alto pone salida 3 a valor alto pone salida 1 a valor bajo pone salida 2 a valor bajo pone salida 3 a valor bajo

high 1 goto inicio swoff1: low 1 goto inicio swoff2: low 2 goto inicio swoff3: low 3 goto inicio
keyled KEYLED mascara Activa los Leds del teclado. Mascara: es una variable/constante que especifica que leds se activarn. Este comando se utiliza activar los leds, que monitorizan ciertas funciones, del teclado que se encuentre conectado directamente el PICAXE. El valor de mascara ajusta la operacin de los leds de la siguiente forma: Bit 0: Scroll Lock (1=on, 0=off) Bit 1: Num Lock (1=on, 0=off) Bit 2: Caps Lock (1=on, 0=off) Bit 3-6: No usado Bit 7: Deshabilita Flash (1=on, 0=off)

El bit 7 si est habilitado los tres leds se encendern intermitentemente cuando el comando Kevin detecte un pulsacin de una tecla. Esta opcin permite indicarnos que la pulsacin de la tecla ha sido detectada por el PICAXE. Si se deshabilita no se indicar tal accin.

Ejemplo: inicio: keyled %10000111 pause 500 keyled %10000000 pause 500 goto inicio todos los leds encendidos pausa de 0,5 seg todos los leds apagados pausa de 0,5 seg salta a inicio

lcd LCD ({#}dato,{#}dato) LCD clear LCD line1 LCD line2 Comando para controlar el mdulo LCD con salida serie conectado al pin 7. Clear: borra la pantalla LCD. Line1 :posiciona el cursor en la linea 1 para comenzar la escritura de dato. Line2: posiciona el cursor en la linea 2 para comenzar la escritura de dato. Dato: variable/constante (0-255) que se envan a la salida.

Este seudo comando realmente analiza gramaticalmente comandos serout. Equivale em BASIC a serout 7, T2400, (datos). Muestra tems en un LCD con controlador Hitachi 44780 o equivalente. Estos LCD, usualmente, tienen un cabezal de 14 o 16 pines simples o duales en un extremo. Si el signo (#) est colocado antes de un item, la representacin ASCII para cada digito es enviada al LCD. Un programa debe esperar, por lo menos, medio segundo antes de enviar el primer comando a un LCD. Puede tomar bastante tiempo a un LCD arrancar. Los comandos son enviados al LCD, enviando un $FE seguido por el comando. Algunos comandos tiles se muestran en la siguiente tabla:
Comando $FE, 1 $FE, 2 Operacin Limpia visor Vuelve a inicio (comienzo de la primera lnea)

$FE, $0C $FE, $0E $FE, $0F $FE, $10 $FE, $14 $FE, $C0 Ejemplo: inicio:

Cursor apagado Subrayado del cursor activo Parpadeo del cursor activo Mueve cursor una posicin hacia la izquierda Mueve cursor una posicin hacia la derecha Mueve cursor al comienzo de la segunda lnea

LCD (hola) LCD line2 LCD ( amigo) pause 2000 LCD clear pause 500 goto inicio

escribe en el LCD la palabra hola posiciona cursor en la linea 2 escribe en el LCD la palabra amigo espera 2 segundos borra contenido LCD espera de 0,5 segundos salta a inicio

let {LET} variable = {-}valor ?? valor Asigna un valor a una variable. El valor puede ser una constante, otra variable o el resultado de una expresin. La palabra clave LET, por s misma, es opcional. ?? puede ser:
+ * ** / // MAX MIN & | ^ &/ |/ ^/

;add ;subtract ;multiply (returns low word of result) ;multiply (returns high word result) ;divide (returns quotient) ;divide (returns remainder) ;make less than or equal to ;make greater than or equal to ;and ;or (typed as SHIFT + \ on UK ;xor (typed as SHIFT + 6 on UK ;and not (nand) ;or not (nor) ;xor not (xnor)

Ejemplo: inicio: let b0 = b0 + 1 sound 7, (b0,50) if b0 > 50 then reset goto inicio let b0 = b0 max 10 goto inicio lookdown LOOKDOWN target,(valor0,valor1valorN),variable La declaracin LOOKDOWN busca en una lista de 8 bits los valores (value0valueN) que coincidan con un valor target. Si se encuentra, el ndice de la constante es almacenado en variable as, si el valor es el primero de la lista, variable = 0. Si es el segundo, variable = 1 y as sucesivamente. Si no se encuentra, no se toma ninguna accin y variable permanece sin cambios. Ejemplo: serin 1,N2400,b0 lookdown bo,(0123456789ABCDEF),b1 serout 0,N2400,[#b1] obtiene un carcter hex de pin1 en forma serie convierte el character hex en b0 a un valor decimal b1 enva un valor decimal al pin0 de forma serie incrementa b0 en una unidad emite sonido si la variable es superior a 50 salta a reset sino a inicio resetea b0 con un valor 10 y 10 es el mximo valor

reset:

Otro ejemplo: reset: inicio: let infra = 0 if infra > 0 then test goto inicio test: lookdown infra, (1234),b0 lookup LOOKUP offset,(dato0,dato1datoN),variable LOOKUP puede ser usado para obtener valores de una tabla de constantes de 8 bits. Si offset es cero, variable toma el valor del primer dato (dato0). Si es 1, variable toma el valor del segundo dato (dato1) y as sucesivamente. Si offset es mayor igual que el nmero de entradas en la lista de constantes, no se toma ninguna accin y variable permanece sin cambios. Ejemplo: for b0 = 0 to 5 lookup b0,(hola),b1 serout 0,N2400,[b1] Otro ejemplo: inicio: let b0 = 0 b0 + 1 lookup b0,(1234),b1 if b0 < 4 then inicio end low LOW pin Coloca el pin especificado en valor bajo y automticamente lo convierte en salida. Pin puede ser una variable/constante de 0-7. Ejemplo: inicio: high 1 pause 5000 low 1 pause 5000 goto inicio pone el pin 1 a nivel alto espera de 5 segundos pone el pin 1 a nivel bajo espera de 5 segundos salta a inicio del bucle incrementa b0 en una unidad mete el carcter ASCII 1 a 4 en b1 si b0 es menor que 4 salta a inicio sino fin de programa cuenta hasta 5 obtiene el carcter b0 de la serie y lo deja en b1 enva el carcter b1 al pin0 de forma serie mete el carcter ASCII 1 a 4 en b0 resetea la variable infra salta a reset si se detecta una nueva seal sino salta a inicio

nap NAP periodo Coloca al microcontrolador en modo de bajo consumo por perodos de tiempo reducidos. Durante este NAP, se reduce al mnimo el consumo de energa. Los perodos indicados son solo aproximados, porque el tiempo se deriva del Watchdog Timer que est controlado por R/C y puede variar de chip a chip y tambin con la temperatura. Como NAP usa el Watchdog Timer es independiente de la frecuencia del oscilador. Periodo: constante entre 0-7. El nmero de perodos est limitado a 7 y el tiempo correspondiente a cada perodo sigue la formula: (2periodo)x 18 ms
Perodo Demora (aprox.) en ms

0 1 2 3 4 5 6 7

18 36 72 144 288 576 1152 2304

Ejemplo: inicio: high 1 nap 4 low 1 nap 7 goto inicio output OUTPUT pin Convierte el Pin especificado en una salida. Pin debe ser una constante entre 07, o una variable que contenga un nmero 0-7 (p. ej.: B0) o el nombre de un pin (p. ej.: PORTA.0) Ejemplo: inicio: input 1 reverse 1 reverse 1 output1 configura el pin1 como entrada configura el pin 1 como salida configura el pin1 como entrada configura el pin1 como salida pone salida pin1 a nivel alto 4 estado de bajo consumo durante: (2 )x18ms = 288 ms pone salida 1 a nivel bajo 7 estado de bajo consumo durante: (2 )x18ms = 2304 ms salta a inicio

pause PAUSE periodo Detiene el programa por periodo milisegundos. Periodo tiene 16 bits, por lo que los retardos pueden ser hasta 65635 milisegundos (un poco ms de un minuto). No coloca al microcontrolador en modo de bajo consumo como las otras funciones de retardo (NAP y SLEEP). Inclusive, consume mayor consumo, pero es ms exacto. Tiene la misma precisin que el clock. Ejemplo: inicio: high 1 pause 5000 low 1 pause 5000 goto inicio pone el pin 1 a nivel alto espera de 5 segundos pone el pin 1 a nivel bajo espera de 5 segundos salta a inicio del bucle

peek PEEK direccion,variable Lee el registro del microcontrolador en la direccin y guarda la lectura en variable. Direccion: variable/constante que especifica la direccin del registro. Valores vlidos entre 0-255. Variable: variable donde se guarda el dato del registro. Esto permite el uso de registros no definidos por b0-b13. Es necesario tener precauciones en el uso de este comando. Para programadores inexpertos se recomienda el uso de los registros localizados entre $50 a $7F, que son registros de uso general. Los registros indicados entre las direcciones $00 a $1F y $80 a $9F, son de funcin especial, que determinan como funciona el microcontrolador. Evitar el uso de estos registros a no ser que se sepa bien lo que se hace. Las direcciones $20 a $7F y $A0 a $BF apuntan a registros de propsito general reservados para para el intrprete de instrucciones PICAXE. El uso de esos registros puede dar resultados inesperados y podra causar la no interpretacin de instrucciones. Utilizar los registros apuntados por las direcciones que van desde $50 a $7F (registros de propsito general) y de $C0 a $FF en el caso de PICAXE-28x. Ejemplo: peek 80,b1 carga el contenido del registro apuntado por la direccin 80 en la variable b1

peek, PORTA,b0

toma el estado actual de PORTA y lo coloca en b0

poke POKE direccion,variable Guarda el valor de variable en el registro del microcontrolador indicado en direccin. Direccion: variable/constante que especifica la direccin del registro. Valores vlidos entre 0-255. Variable: variable que contiene el dato a cargar en el registro especificado.

Lo indicado en el comando peek es vlido para el comando poke, en cuanto a las precauciones a tomar en su uso. Ejemplo: poke 80,b1 poke $85,0 guarda el valor de b1 en el registro 80 guarda 0 en el registro 85 en hexadecinal (set todo PORTA como salidas)

Se puede acceder directamente a registros y bits sin necesidad de utilizar PEEK y POKE. Se recomienda usar el acceso directo y no los comandos mencionados. TRISA = 0 PORTA.0 = 1
pulsin PULSIN pin,state,variable Mire el ancho del pulso en pin. Si state es cero se mide el ancho de un pulso bajo. Si state es uno, se mide el ancho de un pulso alto. El ancho medido se coloca en variable. Si el flanco del pulso no llega, el ancho del pulso es demasiado grande para ser medido, variable = 0. Si se usa uma variable de 8 bits, solo se usan los bits menos significativos de la medicin de 16 bits. Pin: variable/constante (0-7) que especifica em pin I/O que se usar. State: variable/constante (0 o 1). Configura el tipo de pulso a medir en unidades de 10s (para um cristal de 4MHz). Variable: variable (1-65536) que contiene el dato a cargar en el registro especificado. Si el intervalo de espera ocurre (.65536s), entonces el resultado ser 0. La resolucin de PULSIN depende de la frecuencia del oscilador. Si se usa un oscilador de 4 MHz, el ancho de pulso se obtiene en incrementos de 10s. Si se usa un oscilador de 20 MHz, el ancho de pulso tendr una resolucin de 2s. Definir un valor de OSC no tiene efectos sobre PULSIN. La resolucin siempre cambia con la velocidad del oscilador en uso.

set todo PORTA como salidas set a nvel alto el bit 0 de PORTA

Ejemplo: pulsin 3,1,b1 pulsout PULSOUT pin,periodo Genera un pulso en pin, con un periodo especificado. El pulso se genera activando dos veces el pin, por lo que la polaridad del pulso depende del estado inicial del pin. Pin: variable/constante (0-7) que especifica em pin I/O que se usar. Perodo: variable/constante que especifica el perodo (0-65535)em unidades de 10s (para um cristal de 4MHz). La resolucin de PULSOUT depende de la frecuencia del oscilador. Si se usa un oscilador de 4 MHz, el perodo del pulso generado estar en incrementos de 10s. Si se usa un oscilador de 20 MHz, perodo tendra una duracin de 2s. Definir un valor de OSC no tiene efectos sobre PULSOT. La resolucin siempre cambia con la velocidad del oscilador en uso. Ejemplo: inicio: pulsout 4,150 pause 20 goto inicio pwm PWM pin,duty,cicle Enva un tren de pulsos modulados en ancho por el pin indicado. Cada ciclo de PWM est compuesto de 256 pasos. El ciclo til duty para cada ciclo vara de 0 (0%) a 255 (100%). El ciclo PWM es repetido cycle veces. Pin: variable/constante (0-7) que especifica em pin I/O que se usar. Duty: variable/constante (0-255)especificando el ciclo til que puede varar de 0 (0%) a 255 (100%). Cycle: variable/constante (0-255) que especifica el nmero de ciclos que se repetir.Cada ciclo tiene un perodo de 5 ms (con un cristal de 4MHz). Cycle depende de la frecuencia del oscilador. Con un oscilador de 4 MHz, cada cycle ser de aproximadamente 5 ms de largo. Con un oscilador de 20 MHz la duracin del ciclo ser de 1 ms aproximadamente. Definir un valor de OSC no tiene efecto sobre PWM. El tiempo de cycle siempre cambia con la velocidad del oscilador en uso. Pin se convierte en salida justo antes de la generacin del pulso y vuelve a ser entrada, cuando cesa. La salida de PWM en un pin tiene mucho ruido, y no tiene forma de onda cuadrada. Es necesario usar algn tipo de filtro para convertirla en algo til. Un circuito R/C puede usarse como un simple convertidor A/D. enva un pulso por el pin 4 de 1,5 ms de duracin pausa de 20 ms salta a inicio y repite formando un bucle guarda la longitud del pulso introducido en el pin 1 en la variable b1

Ejemplo: inicio: pwm 4,127,20 pause 20 goto inicio random RANDOM variable Efecta una iteracin pseudos-aleatoria en variable. Variable: variable de 16 bits donde se almacena el nmero aleatorio. El algoritmo pseudoaleatorio usado tiene un paso de 65535 (el nico nmero que no produce es el cero). Ejemplo: inicio: random b1 let pins = b1 pause 100 goto inicio readadc READADC canal,variable El contenido del convertidor A/D (8 bits de resolucin) indicado por canal es almacenado en variable. Canal:variable/constante que especifica el canal (0-3) Variable: variable donde se almacena el byte leido. Ejemplo: inicio: readadc 1,b1 if b1 > 50 then flash goto inicio flash: high 1 pause 5000 low 1 goto inicio pone a nivel alto el pin 1 espera de 5 segundos pone a nivel bajo la salida 1 salto a inicio lee el valor y lo almacena en b1 salta a flash si b1 > 50 sino salta a inicio carga en la variable b1 un valor aleatorio pone el valor aleatorio en la salida pins espera de 0,1 s salta a inicio enva 20 pulsos por el pin 4 con un ciclo til del 50% pausa de 20 ms salta a inicio

readadc10 READADC canal,wordvariable El contenido del convertidor A/D (10 bits de resolucin) indicado por canal es almacenado en variable. Canal:variable/constante que especifica el canal (0-3) Wordvariable: variable tipo Word donde se almacena los bytes leidos.

Ejemplo: inicio: readadc 1,w1 if w1 > 50 then flash goto inicio flash: high 1 pause 5000 low 1 goto inicio readi2c READI2C location,(variable,) Lee el i2c indicado en location y lo almacena en variable(s). location: variable/constante que especifica la direccin mediante un byte del tipo Word la direccin del i2c. Variable(s): donde se almacenan los byte(s) del dato ledo. Este comando se usa para leer los datos de byte de un dispositivo i2c. Location define la direccin de inicio de la lectura de datos, aunque se logra tambin leer ms de un byte secuencialmente (si el dispositivo i2c da soporte a lecturas secuenciales). Location debe ser un byte que defina al 12cslave. Un comando del 12cslave tiene que haberse ejecutado con anterioridad de la ejecucin del readi2c. Si el hardware del i2c no fue configurado de forma correcta o el byte de localizacin no es el adecuado el valor almacenado en la variable ser 255 ($FF) indicndonos un error. pone a nivel alto el pin 1 espera de 5 segundos pone a nivel bajo la salida 1 salto a inicio lee el valor y lo almacena en w1 salta a flash si b1 > 50 sino salta a inicio

Ejemplo: Un ejemplo de cmo usar el time clock DS1307 los datos son enviados/recibidos en cdigo BCD coloca la direccin del esclavo del DS1307 12cslave %11010000, i2cslow, i2cbyte lectura de la hora y fecha y presenta en el depurador inicio: readi2c 0, (b0,b1,b2,b3,b4,b5,b6,b7) debug b1 pause 2000 goto inicio read READ location,variable Lee la EEPROM incorporada en la direccin location, y guarda el resultado en variable. location: variable/constante que especifica la direccin mediante un byte (0255). Variable: donde se almacena el byte ledo. Al usar los mdulos Stamp, la forma de almacenar los datos es desde la posicin 0 hacia arriba mientras que el almacenamiento de programa se construye hacia abajo desde la posicin 255. Al usar el PICAXE-08 y 18el almacenamiento de datos se construye hacia arriba desde la posicin 0y el almacenamiento de programa es hacia abajo desde la posicin 127. Ejemplo: inicio: for b0 = 0 to 63 read b0,b1 serout 7,T2400,(b1) next b0 inicio el bucle lee el dato de la memoria en la posicin de bo y almacena su valor en b1 transmite el valor del dato de b1 al LCD utilizando transmisin serie

readmem READMEM location,variable Lee la memoria de programa FLASH en la posicin location y lo vuelca en variable. Provee un espacio adicional de 256 bytes de almacenamiento para este comando en los dispositivos PIC 16F87x (incluyendo a PICAXE-28, 28). Este comando no est presente en el PICAXE-28X como el mdulo del i2c puede servir para EEPROMs externas mayores. location: variable/constante que especifica la direccin mediante un byte (0255). Variable: donde se almacena el byte ledo. Ejemplo: inicio: for b0 = 0 to 255 read b0,b1 serout 7,T2400,(b1) next b0 readtemp/readtemp12 READTEMP pin,variable READTEMP pin,wordvariable Lee la temperatura de un DS18B20, sensor digital de temperatura, conectado en pin y almacena su lectura en variable. Pin: es el pin de entrada del PICAXE que tiene conectado el sensor. Variable: donde se almacena el byte ledo. READTEMP: la resolucin de la lectura es de enteros de grado, y el sensor funciona de -55 C hasta +125 C. El bit 7 indicar si los valores de temperatura son positivos (0) o negativos (1). READTEMP12: (para programadores avanzados). La temperatura viene expresada con una resolucin de 0,125 C y necesita 12 bits para su representacin digital. El usuario debe interpretar los datos a travs de clculo matemtico. Ver el dataste del DS18B20 (www.dalsemi.com) para ms informacin en relacin con Data Temperatura. inicio el bucle lee el dato de la memoria en la posicin de bo y almacena su valor en b1 transmite el valor del dato de b1 al LCD utilizando transmisin serie

Ejemplo: inicio: readtemp 1,b1 if b1 > 127 then neg serout, 7, T2400, (#b1) goto inicio neg: let b1 = b1 128 ajuste del valor negativo en b1 serout 7,T2400, (-) transmite el smbolo negativo serout 7,T2400, (#b1) transmite el valor al LCD en formato serie goto inicio lee el valor del sensor en pin 1 y lo almacena en b1 chequeo si el valor medido es negativo transmite el valor al LCD en formato serie salta a inicio

readowclk READOWCLK pin Lectura de la hora indicada por un reloj de precisin DS2415 conectado en la entrada especificada por pin. Pin: es el pin de entrada (0-7) del PICAXE que tiene conectado el sensor. Este comando no esta disponible en el PICAXE-28X pero puede usarse un DS1307, reloj de precisin en tiempo real por i2c. El DS2415 es un reloj en tiempo real de precisin que opera con una nica lnea. La informacin est contenida en 4 bytes (32 bits) y es muy preciso debido al uso de un cristal de cuarzo como clock del C.I. El registro de 32 bits puede aportar la informacin de 132 aos en segundos. El dispositivo puede estar alimentado de forma independiente con 3 V. de forma que pueda trabajar an cuando el controlador principal con el PICAXE est parado. Si se utiliza sta opcin se debe utilizar la orden RESETOWCLK para activar el reloj de nuevo y de esta forma arrancar el reloj en tiempo real. El comando READOWCLK lee los 32 bits del reloj y guarda el contenido de los 32 bits en la variable b10 (LBS) a b13 (MBS), tambin conocidas como w6 y w7.

Usando variables tipo byte: o o o o Usando variables tipo Word: o o Ejemplo: inicio: resetowclk 2 bucle: readowclk 2 debug b1 pause 10000 goto bucle resetowclk RESETOWCLK pin Resetea el reloj DS2415, es decir pone a cero su contador. Pin: es el pin de entrada (0-7) del PICAXE que tiene conectado el sensor lectura del reloj en pin de entrada 2 visualiza el tiempo en depurador espera de 10 segundos repeticin de lectura y presentacin reset el reloj en pin 2 El valor b10 es el nmero de segundos El valor b11 es el nmero x 256 segundos El valor b12 es el nmero x 65536 segundos El valor b13 es el nmero x 16777216 segundos El valor en w6 es el nmero de segundos El valor en w7 es el nmero x 65536 segundos

Este comando pone a cero el tiempo en un chip reloj tipo DS2415 que est conectado a un pin de salida del PICAXE. Tambin activa el cristal del reloj. Debe usarse al comienzo de cada conteo. El mtodo de conexionado del reloj de precisin con el PICAXE se muestra a continuacin:

readowsn READOWSN pin Lectura serie de cualquier dispositivo Dallas 1-wire, conectado en el pin de entrada especificado por pin. Pin: es el pin de entrada (0-7) del PICAXE que tiene conectado el sensor. Este comando lee el valor de cualquier dispositivo Dallas de un Terminal i/o de comunicacin (1-wire) que est conectado al PICAXE en una de sus pines (especificado por pin), por ejemplo, sensor digital de temperatura: DS18B20, reloj de precisin: DS2415, iButton: DS1990A (http://www.esicomsa.com/product_1.html). Al usar un dispositivo iButton cuyo nmero serie est grabado en el chip que contiene la envoltura del iButton y ejecutar el comando readowsn se realizar la lectura del nmero seie y guardar el cdigo indicador de la familia en b6, el nmero de serie en b7..b12 y la suma de verificacin en b13. Nunca deber utilizar los registros b6 a b13 para otros propsitos durante la ejecucin del comando readowsn.

Ejemplo: inicio: let b6 = 0 reset el registro, con valor cero bucle para leer el cdigo hasta que b6 no sea igual a 0 bucle: readowsn 2 if b6 = 0 then bucle lectura serie del nmero en el pin de entrada 2 repite lectura hasta que b6 no sea 0 hace una comprobacin simple de seguridad. Lo normal es que b12 no contenga nunca el valor FF, Si el valor FF existe quiere decir que la lectura del dispositivo ya fue efectuada o a ocurrido un cortocircuito If b12 = $FF then inicio debug b1 pause 1000 goto inicio si el valor b12 es FF salta a inicio todo esta correcto as que contina presenta el nmero en el depurador espera de 1 segundo comienzo de programa

Conexiones del dispositivo iButton

return RETURN Vuelve desde una subrutina. Retoma la ejecucin en la declaracin que sigue al GOSUB que llam la subrutina.

Ejemplo: inicio: let b2 = 15 pause 2000 gosub flash let b2 = 5 pause 2000 gosub flash end flash: for b0 = 1 to b2 high 1 pause 500 low 1 pause 500 next b0 return reverse REVERSE pin Si pin es entrada, lo convierte en salida. Si es salida, lo convierte en entrada. Pin: es el pin de entrada (0-7) del PICAXE. define el bucle para el tiempo de b2 pone la salida 1 a nivel alto espera 0,5 segundos pone la salida 1 a nivel bajo espera 0,5 segundos fin del bucle vuelve a lnea siguiente de llamada asigna a la variable b2 el valor 15 espera de 2 segundos llamada a subrutina flash asigna a la variable b2 el valor 5 espera de 2 segundos llamada a subrutina flash

Ejemplo: inicio: input 1 reverse 1 reverse 1 output 1 serin SERIN pin,baudmode,(qualifier,qualifier) SERIN pin,baudmode,(qualifier,qualifier),{#}variable,{#}variable SERIN pin,baudmode ,{#}variable,{#}variable Recibe uno o ms conjunto de datos en pin, en formato Standard asncrono, usando 8 bit de datos, sin paridad y un bit stop (8N1). Pin automticamente se convierte en entrada. Pin: es un pin de entrada del PICAXE (0-7). Baudmode: es una variable/constante (0-7) que especifica el modo en el que se transferir el/los dato/s: configura pin1 como entrada configura pin 1 como salida configura pin 1 como entrada configura pin 1 como salida

T2400 T1200 T600 T300/T4800 N2400 N1200 N600 N300/N4800

true input true input true input true input inverted input inverted input inverted input inverted input

Qualifiers: son variables/constants opcionales (0-255). La lista de datos a recibir puede estar precedida por uno o ms quqlifiers encerrados entre corchetes. SERIN debe recibir estos bytes en un orden exacto, antes de recibir los datos. Si algn byte recibido no concuerda con el byte siguiente de la secuencia de calificacin, el proceso de calificacin comienza nuevamente (p.e. el prximo byte recibido es comparado con el primer byte de la lista de calificacin). Variable/s: son variables/constantes opcionales (0-255). SERIN comienza a guardar datos en la variable asociada. Si el nombre de variable es nico, el valor del carcter ASCII recibido es guardado en la variable. Si la variable es precedida por el signo #, SERIN convierte un valor decimal en ASCII y guarda el resultado en esa variable. 4800 y 9600 estn slo disponibles en el PICAXE-28X. El microcontrolador puede no llegar a seguir datagramas complicados a esa velocidad se recomienda un mximo de 2400 para un reloj de 4 MHz.

Ejemplo: inicio: for b0 = 0 to 63 serin 6,T2400,b1 write b0,b1 next b0 serout SEROUT pin,baudmode,({#}data, {#}data ) Enva uno o ms conjunto de datos en pin, en formato Standard asncrono, usando 8 bit de datos, sin paridad y un bit stop (8N1). Pin automticamente se convierte en salida. Pin: es un pin de salida del PICAXE (0-7). Baudmode: es una variable/constante (0-7) que especifica el modo en el que se transferir el/los dato/s: comienzo bucle recibe serie de datos guarda valor en b1 siguiente ciclo

T2400 T1200 T600 T300/T4800 N2400 N1200 N600 N300/N4800 OT2400 OT1200 OT600 OT300/OT4800 ON2400 ON1200 ON600 ON300/OT4800

True output True output True output True output Inverted output Inverted output Inverted output Inverted output True output True output True output True output Inverted output Inverted output Inverted output Inverted output

Always driven Always driven Always driven Always driven Always driven Always driven Always driven Always driven Open driven Open driven Open driven Open driven Open source Open source Open source Open source

Variable/s: son variables/constantes opcionales (0-255). Contienen el byte/s que se enviar por el pin de salida. Si la variable es precedida por el signo #, SEROUT convierte un valor decimal en ASCII y guarda el resultado en esa variable. Se puede enviar cadenas de texto, precedidas por (Hola).

Ejemplo: inicio: for b0 = 0 to 63 read b0,b1 serout 7,T2400,(b1) next b0 comienzo bucle leer valor y cargar en b1 transmite valor de b1 siguiente ciclo

sertxd SERTXD ({#}data, {#}data ) Enva uno o ms conjunto de datos en pin de programacin, en formato Standard asncrono, usando 8 bit de datos, sin paridad y un bit stop (8N1) a 4800 baudios.. Variable/s: son variables/constantes opcionales (0-255). Contienen el byte/s que se enviar por el pin de salida. Si la variable es precedida por el signo #, SERTXD convierte un valor decimal en ASCII y guarda el resultado en esa variable. Se puede enviar cadenas de texto, precedidas por (Hola). Ejemplo: inicio: for b0 = 0 to 63 read b0,b1 sertxd (b1) next b0 servo SERVO pin,pulse Enva un pulso por el pin indicado para el control de un dispositivo de radio control tipo servo. Pin: es un pin de salida del PICAXE (0-7). Pulse: es una variable/constante (75-225) que especifica la posicin del servo. Este comando pone el pin a nivel alto durante un indicado por pulse. tiempo (x0.01 ms) cada 20ms comienzo bucle leer valor y cargar en b1 transmite valor de b1 siguiente ciclo

Generalmente el servo de RC requiere un pulso (0.75 a 2.25ms de duracin) cada 20ms. Por consiguiente el comando servo 1,75 mover el servo a la posicin de 0 grados, con el comando servo1,225 se posicionar en el extremo opuesto 180 . Con el comando servo 1,150 colocar el servo en la posicin central. El comando servo no se puede usar al mismo tiempo que pwmout dado que comparten un contador comn. No usar un valor de pulso menor de 75 o mayor de 255, dado que esto puede causar que el servo funcione incorrectamente. Debido a las tolerancias en la fabricacin de los

servos todos los valores son aproximados y requieren un ajuste fino por experimentacin. Ejemplo: inicio: servo 4,75 pause 2000 servo 4,150 pause 2000 servo 4,225 pause 2000 goto inicio setinit SETINIT input,mask Interrupcin en funcin de ciertas condiciones de entrada. Input: es una variable/constante (0-7) que especifica las condiciones de entrada. Mask: es una variable/constante (75-225) que especifica la mscara. Este comando causa la interrupcin del cdigo en ejecucin cuando se activa un pin, previamente configurado, de interrupcin. La interrupcin es el mtodo ms rpido de atender a una peticin de paro del microcontrolador en funcin de condiciones determinadas. Es el nico tipo de interrupcin disponible en el sistema PICAXE. El pin de interrupcin se comprueba entre la ejecucin de cada linea de cdigo del programa y inclusive durante cualquier orden de pausa. Si la condicin particular de entrada es cierta, un gosub para la subrutina de interrupcin se ejecuta inmediatamente. Cuando remata la ejecucin de la subrutina de interrupcin, el programa contina en la lnea siguiente desde donde se produjo la llamada a la interrupcin del programa principal. La condicin de entrada de interrupcin es cualquier patrn de 0 y 1 en el Terminal de entrada de interrupcin, enmascarado por el byte mask (mscara). Por consiguiente cualquier bit enmascarado por un 0 en la mascara ser ignorado. Ejemplos: Para interrumpir con entrada input1 a nivel alto Setinit %00000010, % 00000010 Para interrumpir con entrada input1 a nivel bajo Setinit %00000000, % 00000010 mueve el servo a la posicin inicial 0 grados espera 2 segundos mueve el servo a la posicin central espera 2 segundos mueve el servo a la posicin final 180 grados espera 2 segundos salta a inicio y repite ciclo

Para interrumpir con entrada input0 a nivel alto, input1 a nivel alto e input2 a nivel bajo Setinit %00000011, % 00000111 Solo un patrn de entrada es admitido en cualquier momento. Para desactivar la interrupcin ejecutar una orden SETINIT con el valor 0 como byte de mscara. Notas: 1) 2) Cada programa que usa la orden setinit debe tener la correspondiente subrutina de interrupcin (termina con el correspondiente retorno al programa principal con return) al final del programa principal. Cuando ocurre una interrupcin esta ser atendida inmediatamente quedando inhabilitada cualquier interrupcin del programa principal. Si se desease ejecutar nuevamente una interrupcin , esta deber programarse dentro de la subrutina de interrupcin en ejecucin. Queda claro que despus de ser atendida una interrupcin y ejecutar la subrutina asociada quedan habilitadas las peticiones de interrupcin del programa principal. Si la condicin de interrupcin no es atendida dentro de la subrutina, una segunda llamada de interrupcin puede ocurrir inmediatamente. Despus de ser ejecutado el cdigo de la subrutina de interrupcin, la ejecucin del programa contina en la siguiente lnea del programa principal. Si la interrupcin se produce durante la ejecucin de un comando pause, despus de la ejecucin de la subrutina de interrupcin y retorno al programa principal ignorar el tiempo que restaba de la ejecucin del comando pause y continuar en la lnea siguiente. Ejemplo: setint %10000000,%10000000 activa interrupcin cuando el pin7 esta a nivel alto principal: low 1 pause 2000 goto principal interrupt: high 1 if pin7 = 1 then interrupt conmuta la salida 1 a nivel bajo espera 2 segundos repite bucle principal conmuta la salida 1 a nivel alto salta a la subrutina interrupt hasta que se cumpla la condicin indicada

3) 4)

pause 2000 espera 2 segundos setint %10000000,%10000000 reactiva la interrupcin return termina la subrutina de interrupcin y retorna al programa principal En el ejemplo, la salida 1, conectada a un LED estar apagado y se pondr a nivel alto durante 2 segundos cuando se active la interrupcin (pin 7 a nivel alto), reactivando de nuevo la interrupcin.

A continuacin se muestra una variacin del anterior ejemplo: principal: low 1 pause 2000 if pin7 = 1 then sw_on goto principal sw_on: high 1 if pin7 = 1 then sw_on pause 2000 return setfreq SETFRQ freq Establece la frecuencia interna del reloj para el microprocesador PICAXE-18X para 4 MHz (por defecto) o 8 MHz. freqt: es un keyword m4 o m8 Ejemplo: setfreq m8 frecuencia interna a 8 MHz conmuta la salida 1 a nivel alto salta a la subrutina sw_on hasta que se cumpla la condicin indicada espera 2 segundos termina la subrutina de interrupcin y retorna al programa principal conmuta la salida 1 a nivel bajo espera 2 segundos repite bucle principal

El cambio no ocurre hasta que el interruptor de arranque se active de nuevo, y el valor es almacenado en memoria interna siendo, ahora, el cambio permanente. sleep SLEEP seconds Coloca al microcontrolador en modo de bajo consumo (duerme) por un periodo de tiempo indicado en seconds segundos. Los retardos pueden ser de hasta 65535 segundos (aprox. 18 horas). seconds: variable/constante que especifica la duracin del sleep (0-65535) SLEEP usa el WatchDog Timer, por lo que es independientemente de la frecuencia del oscilador utilizado. La resolucin es de aproximadamente 2,3 s y la exactitud de aproximadamente un 99,9%, aunque puede variar de acuerdo al dispositivo y la temperatura.. El consumo se reduce en una relacin 1/100.

Ejemplo: inicio: high 1 sleep 10 low 1 sleep 100 goto inicio symbol SYMBOL symbolname = value Asigna un symbolname (smbolo identificativo) con un valor value que lo identifica con ms claridad en la elaboracin e interpretacin del cdigo del programa. Symbolname: es una cadena de texto que debe comenzar con un carcter literal despus se puede utilizar los caracteres numricos (0..9) Value: es una variable que dan valor al nuevo smbolo Ejemplo: symbol LED_ROJO = 7 symbol CONTADOR = B0 define una constante symbol define una constante symbol salida 1 a nivel alto duerme durante 23 segundos aproximadamente salida 1 a nivel bajo duerme 230 segundos aproximadamente repite programa indefinidamente

let CONTADOR = 200 precarga CONTADOR con el valor 200 inicio: high LED_ROJO pause CONTADOR low LED_ROJO pause CONTADOR goto inicio sound SOUND pin,(note,duration,note duration) Genera un tono y/o ruido blanco en el pin especificado. Pin se configura automticamente como salida. Pin: es una variable/constante (0-7) que especifica el pin i/o a utilizar. Note(s): es una variable o constante (0-255) que especifica la frecuencia del sonido a emitido. o Note 0: silencio o Note (1-127): tonos o Note (128-255): ruido blanco Duration: es una variable/contante (0-255) que determina la duracin de la nota, en incrementos de 12 ms. salida 7 a nivel alto pausa de 0,2 segundos salida 7 a nivel bajo pausa de 0,2 seguundos repite programa indefinidamente

Los tonos y el ruido blanco estn en una escala ascendente (p.e. 1 y 128 son las frecuencias menores, 129 y 266 las mayores). Note 1 es aproximadamente 78,74 Hz y note 127 es aproximadamente 10000Hz. SOUND entrega como salida ondas cuadradas con nivel TTL. Gracias a las caractersticas del micro PIC, se puede manejar un altavoz a travs de un condensador. El valor del condensador debe ser determinado en funcin de las frecuencias a usar y la carga del altavoz. Altavoces piezoelctricos se pueden conectar directamente. Ejemplo: inicio: let b0 = b0 + 1 sound 7,(b0,50) goto inicio swith on SWITH ON, pin SWITHON, pin Configura pin como salida a nivel alto. Pin: es una variable/constante (0-7) que especifica el pin i/o a utilizar. Ejemplo: inicio: switch on 7 wait 5 switch off 7 wait 5 goto inicio swith off SWITH OFF, pin SWITHOFF, pin Configura pin como salida a nivel bajo. Pin: es una variable/constante (0-7) que especifica el pin i/o a utilizar. configura pin 7 como salida a nivel alto espera 5 segundos configura pin 7 como salida a nivel bajo espera 5 segundos repite programa indefinidamente incrementa b0 configura y emite sonido por pin 7 repite programa indefinidamente

Ejemplo: inicio: switch on 7 wait 5 switch off 7 wait 5 goto inicio toggle pin TOGGLE pin Invierte el estado del pin especificado. Pin es configurado automticamente como salida. Pin: es una variable/constante (0-7) que especifica el pin i/o a utilizar. Ejemplo: inicio: toggle 7 pause 1000 goto inicio wait WAIT seconds Pausa de ejecucin del cdigo del programa de seconds segundos. Seconds: es una constante (0-65) que especifica la duracin de la pausa en segundos. Ejemplo: inicio: switch on 7 wait 5 switch off 7 wait 5 goto inicio write WRITE Address,value Graba valores value en la EEPROM incorporada, en la direccin especificada por Address. Address: es una variable/constante que especifica el byte de la direccin de memoria (0-255). configura pin 7 como salida a nivel alto espera 5 segundos configura pin 7 como salida a nivel bajo espera 5 segundos repite programa indefinidamente invierte salida 7 espera 1 segundo repite programa indefinidamente configura pin 7 como salida a nivel alto espera 5 segundos configura pin 7 como salida a nivel bajo espera 5 segundos repite programa indefinidamente

Value: es una variable/constante que indica el valor del dato a escribir en la memoria. Al usar los mdulos STAMP, el almacenamiento de datos es hacia arriba de 0 mientras el almacenamiento de programas se el construye hacia abajo de 255. Al usar el PICAXE-08 y 18, almacenamiento de datos se construye hacia arriba de la direccin 0 mientras el almacenamiento de programas se construye hacia debajo de la direccin 127. La posicin de 255(127) de ms alto menos est disponible para el usuario para el almacenamiento de datos. Al programar el PICAXE-18A, 28, 28A, 28X esta orden es la que se traz un mapa para la memoria FLASH separada (la posicin de programa est separada) de datos. Por consiguiente comprobar el lmite superior de la memoria de datos, como lo 28 y 28A tenga 64 bytes de memoria de datos (posiciones vlido 0-63), el 28X tiene 128 bytes y el 18A, 18X tienen los bytes 256 completos. La duracin de la grabacin es de 10 ms aproximadamente. Ejemplo: inicio: for b0 = 0 to 63 serin 6,T2400,b1 write b0,b1 next b0 writemem WRITEMEM Address,value Graba valores value en la EEPROM interna, en la direccin especificada por Address. Address: es una variable/constante que especifica el byte de la direccin de memoria (0-255). Value: es una variable/constante que indica el valor del dato a escribir en la memoria. Los PIC16F87X (incluidos los PICAXE-28, 28A) poseen un espacio adicional de almacenamiento de 256 bytes. Este comando no est disponible en el PICAXE-28X utilizando en su lugar una EEPROM externa utilizando la tecnologa i2c. Ejemplo: inicio: for b0 = 0 t0 255 serin 6,T2400,b1 writemem b0,b1 next b0 comienzo bucle recibe los datos va serie escribe valor dato en b1 siguiente valor comienzo del bucle recibe el dato via serie por pin 6 a 2400 baudios y almacena en variable b1 escribe el valor del dato en memoria

writei2c

WRITEI2C Address,(variable,) Graba valores value en la EEPROM interna, en la direccin especificada por Address.

Address: es una variable/constante que especifica el byte de la direccin de memoria (0-255). Variable: es una variable que contiene el dato byte(s) para ser grabados. Esta orden se usa para escribir datos para el dispositivo i2c. Address define la direccin del inicio de los datos de escritura, cabe la posibilidad de escribir ms de un byte secuencialmente (si el dispositivo del i2c soporta escritura secuencial tener cuidado al usar EEPROMS que a menudo disponen de limitaciones de escritura). Se debe tener en cuenta que la mayora de las EEPROMS requieren unos 10ms para efectuar la escritura del dato, con lo cual se deber tener en cuenta este retraso cuando se programe la ejecucin del comando i2cwrite. Si no se tiene en cuenta este tiempo de retardo en la grabacin los datos pueden corromperse. Antes de usar este comando se debe haber utilizado previamente el comando i2cslave. Si el hardware del i2c no esta correctamente configurado, o se han equivocado los datos del comando i2cslave, no se generar ningn error. Por ello se debe asegurarse que los datos han sido correctamente grabados por la orden readi2c. Ejemplo: Ejemplo de como usar el timer (reloj en tiempo real) DS1307 Los datos son enviados/recibidos en formato BCD Se deben definir los symbol: seconds, mins, etc(p.e. symbol seconds = b0) La direccin determinada del esclavo del DS1307 i2cslave %11010000, i2cslow, i2cbyte Escribir la hora y fecha con 11:59:00 y 25/12/05 Inicio: let seconds =$00 let mins =$59 let hour =$11 let day =$03 let date =$25 let month =$12 let year =$03 let control = %00010000 00 en formato BCD 59 en formato BCD 11 en formato BCD 03 en formato BCD 25 en formato BCD 12 en formato BCD 03 en formato BCD habilitar salida a 1 Hz

writei2c 0,(seconds, mins, tour, day, dat, month, year,control) end

El siguiente listado da un breve resumen de los diferentes comandos disponibles para los microcontroladores PICAXE. Comandos PICAXE (vlidos para todos los tamaos): Salida Sonido Entrada Serie Flujo de Programa Bucles Matemticas Variables Memoria de datos Tiempos de retardo Miscelaneos high, low, toggle, pulsout, let pins = sound if...then, readadc, pulsin, button serin, serout goto, gosub, return, branch for...next let (+, -, *, **, /, //, max, min, &, |, ^, &/, |/, ^/ ) if...then, random, lookdown, lookup eeprom, write, read pause, wait, nap, sleep, end symbol, debug

Comandos especficos del PICAXE-08: Configuracin Ent/Sal PWM input, output, reverse, let dirs = pwm

Comandos especficos del PICAXE-18/18A: RAM Memoria de datos de servo Infrarrojo Interrupcin Temperatura Reloj de 1 cable Teclado peek, poke writemem, readmem Control servo (18A nicamente) infrain (18A nicamente) setint (18A nicamente) readtemp (18A nicamente) readowclk, resetowclk (18A nicamente) keyin, keyled (18A nicamente)

Nmero de serie de 1 cable readowsn (18A nicamente)

Comandos especficos del PICAXE-28/28A/28X: RAM Control de Servo Infrarrojo Interrupcin Temperatura Reloj de 1 cable Teclado I2C peek, poke servo infrain setint (28A / 28X nicamente) readtemp (28A / 28X nicamente) readowclk, resetowclk (28X nicamente) keyin, keyled (28X nicamente) i2cin, i2cout, i2cfamily (28X nicamente)

Nmero de serie de 1 cable readowsn (28X nicamente)

INSTRUCCIONES EN ENSAMBLADOR: Nemnico Operandos BYTE-ORIENTED FILE REGISTER OPERATIONS ADDWF f,d ANDWF f,d CLRF f CLRW COMF d DECF f,d DECFSZ f,d INCF f,d INCFSZ f,d IORWF f,d MOVF f,d MOVWF f MOVFW f NOP RLF d RRF f,d SUBWF f,d SWAPF f,d XORWF f,d BIT-ORIENTED FILE REGISTER OPERATIONS BCF f,d BSF f,d BTFSC f,d BTFSS f,d LITERAL AND CONTROL OPERATIONS ADDLW k ANDLW k CALL k CLRWDT GOTO k IORLW k MOVLW k RETFIE RETLW k RETURN SLEEP SUBLW k XORLW k Donde: f= file register name k= value of literal b= bit number (0-7) d= result position (W or f) Descripcin Add W and f AND W and f Clear f Clear W Complement f Decrement f Decrement f, Skip if 0 Increment f Increment f, Skip if 0 Inclusive OR with f Move f Move W to f Move f to W No Operation Rotate Left f through Carry Rotate Right f through Carry Substract W from f Swap nibbles in f Exclusive OR W with f Bit Clear f Bit Set f Bit Test f, Skip if Clear Bit Test f, Skip if Set Add literal and W AND literl with W Call Subroutine Clear Watchdog Timer Go to address Inclusive OR literal with W Move literal to W Return from interrupt Return with literal in W Return from Subriutine Go into standby mode Substract W from literal Exclusive OR literal with W

CONTACTOS: Software

La ltima version del software de compilacin/simulacin/programacin: Programming Editor La podrs encontrar en : www.picaxe.co.uk Tambin encontrars foros sobre proyectos diversos y soporte tcnico.

Direccin de contacto Revolutin Education Ltd 4 Old Dairy Business Centre, Melcombe Road, Bath, BA2 3LR http://www.rev-ed.co.uk/

ANEXO2: Esquemas electrnicos Conexionado tpico de un PICAXE-08:

Aplicacin PICAXE-08: Cyberpet: Esquema

Diagrama de entradas/salidas:

Placa de Circuito Impreso

Conexionado para la programacin del Cyberpet

Para la construccin del circuito se necesitar:

Conexionado tpico de un PICAXE-18:

Conexionado tpico de un PICAXE-28:

Circuitos electrnicos de aplicacin con PICAXE Interface tpico de amplificacin para dispositivo de salida:

Control de motores a travs de un Darlington Driver en C.I.:

Control de salida con rel:

El transistor se elegir en funcin de la corriente mxima de la bobina del rel. Un BD135 (IC mx: 0,5A) es vlido para la mayora de los tipos de rel.

Control directo de un motor de consumo elevado con MOSFET:

Control de salida para un LED:

Control de un sistema indicador Bicolor con LEDS (Rojo, Verde):

Control de una salida para una lmpara incandescente de baja tensin: El transistor se elegir en funcin de la corriente nominal de la lmpara. Un BD135 (IC mx: 0,5A) es vlido para la mayora de las lmparas de baja tensin.

Control de una salida para un zumbador: Vlido el verstil transistor: BD140

Control de una salida para un altavoz piezoelctrico o electrodinmico de baja potencia:

Control de una salida para motor de bajo consumo (solar):

Vlido el verstil transistor: BD140

Para reducir los ruidos parsitos que producen la conmutacin de las escobillas (ruidos el telfono y barras en TV) se recomienda soldar en paralelo con los bornes de conexin un condensador cermico de 220nF.

Control de dos motores con un Driver en C.I. inteligente: Para su correcto manejo consultar Datashet.

Control de un motor con tensiones diferentes de alimentacin del circuito de control automatizado y control de potencia:

Este sistema asla elctricamente el circuito de control del circuito de potencia.

Control de la inversin de giro de un motor:

Control de un motor paso a paso (PAP) unipolar:

Control de un motor paso a paso (PAP) bipolar:

Control de un servomotor:

Control de un mdulo de conteo:

Para incrementar conteo: Pulsout 1,100 Para resetear poner conectar una salida del PICAXE al pin 2 (Reset)

Control de un display:

Con este C.I. tenemos la posibilidad de resetear el conteo a travs del pin 1. Poniendo en estado alto el pin 1 en Display se pone a 0.

Control de dos Displays.

Control de un solenoide (cerraduras electrnicas):

Control de electrovlvula (sistemas electroneumticos):

Control de dispositivos de entrada (pulsador):

Salida 1 al accionar el pulsador

Salida 0 al accionar el pulsador

Control de dispositivos de entrada (pulsador con accin determinada):

Indicador de accin despus de la activacin del pulsador segn el resultado (ver cdigo de ejemplo). Comprobar que al pulsar 5 veces el pulsador el LED se apaga.

Control de dispositivos de entrada (resistencia variable):

En funcin de la posicin del potencimetro se iluminarn los LEDS 1, 2 y 3.

Control de dispositivos de entrada (LDR):

Control de dispositivos de entrada (NTC):

Smbolos:

Caractersticas de PICAXE:

Descripcin de la funcin de cada pin en el PICAXE-08:

Terminal 1 2 3 4 5 6 7 8

Descripcin Alimentacin positiva (+V) Entrada Serie Pin 4 Pin 3 Pin 2 Pin 1 Pin 0 Negativo (GND)

Notas De 3V 5V. Admite (4x1,5V) Usada para la descarga de programas Entrada o Salida (E/S) Entrada siempre (E) Entrada o Salida (E/S) Entrada o Salida (E/S) y entrada analgica Salida siempre (S). Tambien se una para salida serie Conexin a la tensin de 0V

Tipo de PICAXE PICAXE-08

N Pines 8

Memoria (lneas) 40

Pines 5

Salidas 1-4

Entradas 1-4

A/D (b-baja) 1b

Memoria Datos 128-prog

Interrupciones -

ANEXO3: Introduccin a la programacin

1. INTRODUCCIN A LA PROGRAMACIN.
Los pasos a seguir a la hora de elaborar un programa deberan ser los siguientes: Hacer un estudio del problema: datos necesarios, posibles soluciones, errores... Realizar un anlisis del proceso que seguiremos para solucionar el problema. Elaborar un pseudo-cdigo, es decir, un programa en el que las rdenes estaran expresadas en nuestro propio idioma y no en un lenguaje de programacin. Crear el cdigo en un determinado lenguaje. Probar el programa y depurar los errores. 1.1. Anlisis del proceso.

Antes de comenzar a escribir el cdigo de nuestro programa (sea en el lenguaje que sea) lo primero que debemos realizar es un anlisis del proceso que queremos realizar. Habitualmente este anlisis se expresa en forma de organigrama empleando los smbolos que podemos ver en la figura de la derecha. Supongamos que deseamos crear un programa que realice una divisin de dos nmeros. Lgicamente los pasos que deben seguirse seran los siguientes: Pedir el dividendo. Pedir el divisor. Efectuar la operacin. Mostrar el resultado Estos pasos mostrador en forma de organigrama podran tener el siguiente aspecto:

Entrada por teclado

Proceso

Salida por
pantalla

Toma de
decisin

Programa para dividir

Pedir dividendo

Este diagrama de flujo tiene un pequeo inconveniente y es que sera posible que el usuario intentar dividir entre 0, con lo que se generara un error. Podramos evitarlo si planteamos el programa de la siguiente forma:

Pedir divisor

Programa para dividir

Dividir

Pedir dividendo

M ostrar
resultado

Pedir divisor

Divisor= 0?

Mostrar
mensaje de error

Actividad 1: Dibuja el organigrama de un programa que resuelva ecuaciones de segundo grado con soluciones dentro de los nmeros reales.

Dividir

Mostrar
resultado

1.2.

Pseudo-cdigo.

El pseudo-cdigo sirve para hacer un programa, no vlido en ningn lenguaje particular pero que servir para una posterior codificacin en cualquiera de ellos. Conociendo el significado de cada uno de los smbolos empleados en los organigramas, crear el pseudo-cdigo es algo sencillo. Partiendo del anterior organigrama nuestro primer programa podra ser algo as: Pedir dividendo Pedir divisor Si divisor = 0 entonces Mostrar ERROR Ir a Pedir divisor En otro caso Calcular cociente Calcular resto Mostrar cociente Mostrar resto Actividad 2: Escribe el pseudo-cdigo de un programa que resuelva ecuaciones de segundo grado con soluciones dentro de los nmeros reales.

1.3.

Manipulacin de la Informacin. a) Tipos de datos: numricos, caracteres y booleanos. Cuando

creamos un programa ste deber trabajar con datos. La forma de manipular y tratar estos datos puede depender del tipo de lenguaje de programacin que estemos empleando, pero en general todos suelen dividir los datos en tres grandes grupos: numricos, caracteres y boolenaos. Numricos: Como su nombre indica hacen referencia a datos que representan un determinado valor numrico. Los tipos numricos suelen dividirse en grupos segn distintos criterios. Por una parte tenemos los tipos enteros y los tipos decimales. Los primeros se usan para trabajar con nmeros que no tienen parte fraccionaria, mientras que los segundos son tiles en caso de que esa parte s exista. Al tratar los nmeros enteros hay que hacer otra divisin: con signo y sin signo. Los primeros siempre son positivos, mientras que los segundos son positivos y negativos. Caracteres: En los programas es habitual tratar con datos como el nombre de una persona, su direccin o su empresa. stos no son nmeros sino sucesiones de caracteres. En realidad los caracteres son tratados por el ordenador como combinaciones de bits, es decir como combinaciones de unos y ceros. La diferencia con un dato numrico est en que cuando el ordenador sabe que esa combinacin de bits representa un caracter no la interpreta como un nmero sino que lo consulta una tabla para ver que caracter representa esa combinacin de unos y ceros. La tabla de caracteres ms conocida es la llamada ASCII. En ella las combinaciones de bits equivalentes a los nmeros 32 a 126 tienen asociado un caracter visible. Booleanos: Aparte de nmeros y caracteres, prcticamente todos los lenguajes cuentan con otros tipos de datos capaces de representar de distintas maneras las combinaciones de bits que se almacenan en las celdillas de memoria. Uno de estos tipos es el booleano, que slo puede contener dos valores posibles: verdadero y falso. Este tipo de dato se utiliza para representar datos que suelen tener dos estados. Tienen permiso de conducir? Est el interruptor abierto?.

Actividad 3: Indica a qu tipo de datos de los vistos anteriormente perteneceran los siguientes. DNI NIF Estado de un interruptor Velocidad del viento Provincia de residencia Valor de una resistencia Nota de un examen Nota de la evaluacin Repetir curso

En el caso concreto de la programacin con picaxe, no manejaremos datos de tipo carcter, slo numricos y bolanos.

1.4.

Constantes y variables.

Cada celdilla de memoria de un ordenador tiene asignada una direccin, un nmero que sirve para hacer referencia al dato que contiene dicha celdilla. Aunque la mayora de los lenguajes de programacin disponen de los elementos necesarios para poder trabajar con direcciones de memoria, lo ms usual es utilizar una representacin simblica, un nombre o identificador, ya que las personas trabajamos mucho mejor con palabras que con nmeros. En cualquier lenguaje de programacin actual podemos asociar un identificador, a una celdilla o conjunto de celdillas de memoria, de tal forma que a partir de ese momento podemos usar dicho identificador en lugar de las direcciones correspondientes. Realmente el enlace entre los identificadores simblicos y las direcciones de memoria lo efectuara el compilador o intrprete que utilizsemos, de tal manera que nosotros, como programadores, podramos olvidarnos de las direcciones fsicas de las celdillas en que estn contenidos nuestros datos. Al crear un identificador, para as poder acceder a una o ms celdillas de memoria y trabajar con ellas, la mayora de lenguajes nos permitirn declarar ese identificador como una constante o como una variable. Una constante toma un valor inicial que ya no podr modificarse durante la ejecucin del programa. Un valor como el del nmero podr alojarse en la memoria utilizando una constante ya que no cambiar a lo largo del programa. En contraposicin, una variable es un identificador mediante el cual podrn efectuarse operaciones de lectura y escritura de las celdillas de memoria que representa. Si decidisemos usar un identificador para poder alojar en una celdilla de memoria la temperatura, que vamos tomando mediante un equipo de medida, deberamos usar una variable, ya que el valor de esta ir cambiando de cuando en cuando. Algunos lenguajes de programacin, como por ejemplo Pascal, exigen que declaremos todas las variablesque vamos a emplear al principio del programa, mientras que otros permiten declarar variables en cualquier punto del programa como sucede en la variante de BASIC empleada para programacin con PICAXE.

Utilizacin de variables en programacin de PICAXE. En el Basic empleado por los PICAXE se deben nombrar las variable empleando la letra b seguida de un valor numrico: b0, b1, b2 hasta b13. Como puede este sistema hace difcil recordar el significado de cada variable podemos emplear el comando symbol al inicio de cada programa para asignar nombre distintos a las variables. Por ejemplo: symbol symbol symbol symbol contador = b0 estado = b1 entrada1= b9 salida2 = b5 empleamos la

Para asignar un valor a una variable instruccin let de la siguiente forma: let nombrevariable = valor numrico ejemplos: let b0 = 3 let contador = 5

Tambin se puede modificar el valor de una variable mediante operadores matemticos de la siguiente forma: let contador = contador + 2 De esta forma incrementamos el valor de la variable contador en dos unidades cada vez que se ejecute esta instruccin.

1.5.

Operandos y operadores Para conseguir que un programa haga algo til, aparte de almacenar y recuperar valores de la memoria tambin ser necesario manipular esos valores con el fin de obtener resultados. Supn que tienes que calcular el total de una factura. Deberas tomar los importes parciales almacenados en varias celdillas de memoria y luego sumarlos para obtener un total. Con el fin de manipular los datos o tomarlos como base para actuar de alguna manera se crean expresiones que pueden ser de distintos tipos: aritmticas, relacionales y lgicas principalmente. En dichas expresiones intervienen dos elementos fundamentalmente: los operandos y los operadores. El ejemplo ms simple lo constituira una multiplicacin: operando resultado = 20 * 20

operador Si ejecutas esta instruccin obtendrs el resultado de la operacin. Como hemos dicho antes los operadores se agrupan bsicamente en tres categoras: aritmticos, relacionales y lgicos. Veamos algunos de los ms habituales en cada una de estas categoras: Aritmticos Suma Resta Multiplicacin Divisin Relacionales < Menor > Mayor <> Distinto = Igualdad Lgicos Si O Negacin

+ * /

And Or Not

1.6.

Control de flujo de un programa.

Actualmente todos los ordenadores funcionan en base a una arquitectura conocida como Neumann, llamada as en honor a su creador, el matemtico Louis von Neumann. Lo revolucionario de la idea de Neumman, propuesta en los aos 40 cuando todava no existan microprocesadores, est en la forma de instruir al ordenador acerca de lo que debe hacer. Hasta ese momento los ordenadores eran mquinas con un programa fijo encargado de realizar una tarea concreta, de tal manera que la nica entrada por parte de los usuarios eran los datos que, tras ser procesador, generaban unos resultados. Es como funciona hoy en da una calculadora. La idea de von Neumman era radicalmente distinta: el programa ejecutado por el ordenador no sera un concepto fijo, sino que podra introducirse en su memoria igual que se introducan hasta ese momento los datos. De esta forma los ordenadores comenzaron a utilizar la arquitectura von Neumman y se convirtieron en mquinas multipropsito. Ejecucin del cdigo. Cuando se pone en marcha la ejecucin de un programa, el proceso que sigue el ordenador es, bsicamente, el siguiente: se toma una instruccin, se procesa y ejecuta, se toma la siguiente instruccin y as sucesivamente. Si un programa se ejecutase siempre secuencialmente, de principio a fin, lo cierto es que sera complicado lograr algo ms que resultados simples. Para lograr que un programa pueda ser til, este debe ser flexible, ejecutarse de distinta forma en funcin de algunas variables. Son necesarias dos estructuras bsicas en programacin: los condicionales y los bucles. A continuacin aprenderemos algo ms sobre ellos.

Estructuras condicionales Todos los lenguajes de programacin cuentan con una estructura condicional simple, con una salida afirmativa y otra negativa como la representada en la figura. Planteamos una condicin, si sta se cumple (then) el programa ejecuta una serie de instrucciones, en caso contrario (else) el
Then

if "condicin"

Else

programa ejecuta otras distintas. En el caso del lenguaje Basic usado por los Picaxe no existe la clusula else. Si la condicin se cumple se ejecuta la accin indicada, en caso contrario se contina con el programa. Ejemplo de un programa en BASIC: symbol pulsador = input3 inicio: if pulsador is on then apagar if pulsador is off then encender apagar: low 4 goto inicio encender: wait 2 high 4 goto inicio Actividad 3: El programa del ejemplo tiene un pequeo fallo. Sabes cul es?. Cmo lo solucionaras? Actividad 4: Escribe un programa para controlar una luz en funcin de un pulsador. Si el pulsador est abierto la luz estar apagada, si el pulsador est cerrado la luz estar encendida. Al soltar el pulsador la luz permanecer encendida durante 3 segundos ms. La condicional IF tambin se puede combinar con los operadores lgicos AND y OR para fijar ms de una condicin a la vez. Ejemplo: if pin0 = 0 and pin1 = 0 and pin2 = 1 then enciende

Actividad 5: Escribe un programa que permita emplear el PICAXE como una puerta lgica OR de dos entradas. Actividad 6: Escribe un programa que simula el funcionamiento de un timbre. Mientras accionemos el pulsador sonar un sonido de dos tonos diferentes. Al soltar el pulsador se detiene el sonido.

Bifurcaciones. Tanto las condicionales como los bucles, segn hemos podido ver, lo que hacen es desviar la ejecucin del programa desde un punto hasta otro. Es lo que se conoce como una bifurcacin en el flujo de ejecucin de un programa. Los saltos, no Then if Resolver 2 "condicin" obstante, estn controlados por el condicional o el propio Else bucle, no siendo nosotros, de forma Salto explcito explcita, los que Resolver 1 indicamos a dnde hay que pasar el control del programa. Los saltos explcitos, de un punto a otro del programa, pueden utilizarse en situaciones donde sea necesario cambiar de un proceso a otro totalmente distinto. En BASIC esto podemos hacerlo de una forma muy simple. Basta con escribir el nombre del procedimiento al que queramos saltar. Ejemplo de un programa en BASIC: output 0 principal: let b2 = 0 gosub parpadea wait 2 let b2 = 4 gosub parpadea wait 2 goto principal

parpadea: for b1 = 1 to 3 high b2 pause 500 low b2 pause 500 next b1 return

Actividad 7: Escribe un programa que permita controlar un faro que debe emitir dos grupos de destellos 3 y 5 destellos separados 2 segundos entre si. Actividad 8: Escribe un programa para controlar la velocidad de parpadeo de un led en funcin del estado de un pulsador. Si el pulsador esta accionado parpadea deprisa, en caso contrario parpadea despacio.

Estructuras de repeticin. Gracias a las estructuras condicionales ya podemos controlar qu sentencias de nuestro programa son ejecutadas en cada caso, de tal manera que dicha ejecucin no es completamente secuencial. Con una condicin (If, Si) podemos saltarnos la ejecucin de una o ms sentencias, pero en realidad no nos sirve si precisamos la realizacin reiterada de una o ms sentencias. Supn que deseamos realizar un programa para que la tortuga avance y gire hasta que se cumpla una determinada condicin. Podemos hacerlo simplemente con una condicional?. La respuesta es no. Necesitamos una nueva estructura conocida como bucle. Un bucle estar formado por una o ms sentencias que deben repetirse, para lo cual se delimitan con las rdenes adecuadas para hacer posible la ejecucin reiterada. Generalmente un bucle siempre tiene asociada una expresin condicional cuyo resultado verdadero o falso, condiciona que el bucle se siga ejecutando o no. El tipo de bucle ms comn, existente en todos los lenguajes de programacin, tiene una sintaxis similar a esta: mientras condicional sentencias La instruccin que debemos usar con nuestro PICAXE es la siguiente: for nombrevariable = valor to valor step incremento acciones a ejecutar next nombrevariable

Ejemplo: symbol contador = b0 inicio: for contador = 1 to 10 high 4 wait 2 low 4 wait 3 next contador end En este ejemplo se repetirn contenidas dentro del bucle. 10 veces las instrucciones

Actividad 9: Escribe un programa que genere 5 tonos que se incrementen secuencialmente mediante el altavoz piezoelctrico conectado al pin 5 del PICAXE-08. Actividad 10: Modifica la actividad 4 de forma que al soltar el pulsador la luz parpadee 5 veces antes de apagarse. 2.

Potrebbero piacerti anche