Apuntes
Apuntes
Apuntes
Sistema PICAXE
1/141
El microcontrolador PIC (microcontrolador programable) es a menudo descrito como un "ordenador en un chip". Es un circuito integrado que contiene memoria, unidades procesadoras y circuitos de entrada/salida, en una sola unidad. Los microcontroladores son comprados en "blanco" y luego programados con un programa especfico de control. Una vez programado, este microcontrolador es introducido en algn producto para hacerlo ms inteligente y fcil de usar. A manera de ejemplo, un horno de microondas puede utilizar un solo microcontrolador para procesar informacin proveniente del teclado numrico, mostrar informacin para el usuario en la pantalla y controlar los dispositivos de salida (motor de la mesa giratoria, luz, timbre y magnetrn).
Un microcontrolador puede a menudo reemplazar a un gran nmero de partes separadas, o incluso a un circuito electrnico completo. Algunas de las ventajas obtenidas con el uso de microcontroladores en el diseo de productos son: aumento en la confiabilidad debido al menor nmero de partes reduccin en los niveles de existencia ya que un microcontrolador reemplaza varias partes simplificacin del ensamblaje del producto y productos finales ms pequeos gran flexibilidad y adaptabilidad del producto ya que las funciones del producto estn programadas en el microcontrolador y no incorporadas en el hardware electrnico rapidez en modificaciones y desarrollo del producto mediante cambios en el programa del microcontrolador, y no en el hardware electrnico
Algunas de las aplicaciones que utilizan microcontroladores incluyen artefactos domsticos, sistemas de alarma, equipo mdico, subsistemas de automviles y equipo electrnico de instrumentacin. Algunos automviles modernos contienen mas de treinta microcontroladores - utilizados en una amplia variedad de subsistemas desde el control del motor hasta el cierre a control remoto! En la Industria, los microcontroladores son usualmente programados utilizando programacin en lenguaje C. Sin embargo, debido a la complejidad de este lenguaje, es muy difcil para estudiantes muy jvenes de bachillerato el uso adecuado de dichos lenguajes.
2/141
El sistema PICAXE
El sistema "PICAXE" es un sistema de microcontrolador fcil de programar que utiliza un lenguaje BASIC muy simple, el cual la mayora de los estudiantes pueden aprender rpidamente. El sistema PICAXE explota las caractersticas nicas de la nueva generacin de microcontroladores de bajo costo FLASH. Estos microcontroladores pueden ser programados una y otra vez sin la necesidad de un costoso programador PIC. El poder del sistema PICAXE radica en su sencillez. No necesita de ningn programador, borrador o complejo sistema electrnico - el microcontrolador es programado (con un simple programa en BASIC o un diagrama de flujo) mediante una conexin de tres alambres conectada al puerto serie del ordenador. El circuito operacional PICAXE utiliza nicamente tres componentes y puede ser ensamblado fcilmente en un tablero experimental para componentes electrnicos, en una placa corriente o en una placa PCB. EL sistema 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 sistema PICAXE-18 provee 8 salidas y 5 entradas. Las caractersticas principales del sistema PICAXE son las siguientes: bajo costo, circuito de fcil construccin hasta 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 simple y fcil de aprender editor de diagramas de flujo incluido puede ser programado tambin mediante el software "Crocodile Technology" extenso nmero de manuales gratuitos y foro de apoyo en lnea tablero experimental tutorial y tutoriales incluidos paquete de control remoto infrarrojo disponible paquete de servocontrolador disponible
3/141
El programa comenzar a ejecutarse en el PICAXE automticamente. Sin embargo, el programa puede ser reiniciado en cualquier momento presionando el interruptor de reinicio.
4/141
2. Listado de componentes: Parte CT1 TB1 R1 R2 C1 IC2 PIC H1 H2 TB1 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
3. Caractersticas PICAXE08:
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 -
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, tal y como figura en la imagen).
5/141
5. El software de programacin: El software de programacin que se utilizar para programar, compilar y transferir es el diseado por Revolucin Educacin Ltd es de uso libre (para uso exclusivo en educacin). Para instalarlo basta con ejecutar el archivo: Programming Editor.msi, o bien introducir el CDROM y seguir las instrucciones. Antes de poder probar nuestro 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 microcontrador ( en esta primera prctica ser PICAXE08). Conectaremos en cable de programacin entre PC y Entrenador. Escribiremos el cdigo del programa de prueba y se lo enviaremos al microcontrolador.
6/141
Sistemas de control programado. Sistema PICAXE Comenzaremos con la configuracin del software: Al arrancar 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 Puerto Serie seleccionaremos el que utilizaremos (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 nuestro caso el: PICAXE-08.
Ahora corresponde realizar la edicin del cdigo, compilacin y programacin. Para poder comunicar nuestras intenciones al microcontrolador debemos hacerlo siguiendo el siguiente protocolo: Edicin del cdigo del programa: se puede realizar de dos mtodos diferentes: o Mediante flujogramas: es un mtodo ms sencillo pero bastante limitado en sus posibilidades de programacin. No
7/141
Sistemas de control programado. Sistema PICAXE cabe la posibilidad de reutilizar parte de los flujogramas en otros programas. o Mediante cdigo de alto nivel como BASIC o C. 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 muchas aplicaciones. Una vez editado el cdigo del programa, bien utilizando comandos o bien flujogramas, deberemos codificarlo al lenguaje que utilizan los microcontroladores, o sea 1 y 0 . La aplicacin encargada de realizar esa transformacin recibe el nombre de compilador. Por ltimo deberemos enviar esa informacin a la memoria de programa del microcontrolador, el dispositivo encargado de realizar esa operacin recibe el nombre de programador o loader.
La ventaja del software y la BIOS que contienen los microcontroladores PIC del sistema 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 manejarlos diferentes dispositivos que permiten realizar la programacin del PIC. 6. Vamos a realizar nuestra primera programacin y comprobacin de su correcto funcionamiento con un sencillo programa, se trata de encender y apagar un led de forma intermitente conectado a la salida de nuestra placa de prototipos. El programa lo realizaremos primeramente en cdigo BASIC y posteriormente mediante flujogramas. ********************************************************************** ********* 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, que se pueden ir estudiando en el capitulo 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 ello arranquemos la aplicacin Programming Editor y escribimos las lineas del cdigo de la aplicacin o bien utilizar 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 tan sencillo de aprendizaje y puesta en marcha 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 y como figura el 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).
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 ha salido bien, el Led parpadear intermitentemente con una candencia de un segundo.
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 organigrama:
Seleccin de componente Seleccin de rea Zoom de rea Lnea de conexin Interconexin de organigramas Subrutina
Otras opciones
Crear etiquetas
Seleccin de componente: utilizar este comando 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: utilizar este comando 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 la tcnica de 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
Sistemas de control programado. Sistema PICAXE Lnea de conexin: utilizar este comando 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 sed utiliza cuando el organigrama es muy complejo y ste se puede simplificar en bloques ms sencillos, utilizndolo posteriormente para la interconexin de los mismos de forma correspondiente. Etiqueta: utilizar este comando 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 organigramas: Para dibujar un organigrama 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 correcta. 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. Editar el cdigo si lo requiere. Uniendo bloques: Para unir bloques, se debe acercarlos uno al otro hasta que se junten. Otra opcin es dibujar lneas entre los mismos usando el comando lnea en la barra de herramientas. Notar 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 lnea.
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
12/141
Sistemas de control programado. Sistema PICAXE 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 Organigrama (men Ver Opciones Organigrama). Notar 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 organigramas al PICAXE: Los organigramas no se descargan directamente al microcontrolador. Primero el organigrama es convertido en un programa BASIC, el cual luego es cargado al PIC. Para convertir un organigrama seleccionar "Convertir" en el men Organigrama; el programa BASIC del organigrama 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. Notar que es posible convertir y descargar rpidamente un organigrama presionando dos veces la tecla F5.
13/141
Sistemas de control programado. Sistema PICAXE 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 organigramas 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.
Flujograma:
14/141
Sistemas de control programado. Sistema PICAXE Prctica 2: Encendido y apagado de forma intermitente de un led conectado al pin 3 del PICAXE08 (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
Flujograma:
15/141
Sistemas de control programado. Sistema PICAXE Prctica 3: Encendido y apagado alternativamente 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
Flujograma:
16/141
Sistemas de control programado. Sistema PICAXE 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
Flujograma:
17/141
Sistemas de control programado. Sistema PICAXE 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: high 0 wait 2 low 0 goto inicio 'enciende LED pin 7 'encendido durante un retardo de 2 segundos 'apagado LED pin 7 'si la entrada 3 es "1" salta a subrutina led sino a inicio 'salto a inicio
Flujograma:
18/141
Sistemas de control programado. Sistema PICAXE Prctica 6: Tenemos conectada una 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).
19/141
Sistemas de control programado. Sistema PICAXE Prctica 7: Tenemos conectada una 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 '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
'**** Accin lmite mx ***** maximo: high 0 low 4 goto inicio 'encender LED1 'apagar LED2
Flujograma:
20/141
Sistemas de control programado. Sistema PICAXE Prctica 8: Tenemos conectada una LDR en el pin 6 (Entrada: Pin1) del PICAXE-08. Deberemos 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
21/141
Sistemas de control programado. Sistema PICAXE 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
22/141
Premisas: 23/141
Final de carrera superior Final de carrera inferior Sensor Presencia vehculo Control Motor Control Motor Semforo Rojo Semforo Verde
(1 en programacin) (1 en programacin) (1 en programacin) Ver cuadro Ver cuadro (high ilumina, low no ilumina) (high ilumina, low no ilumina)
24/141
Cdigo del programa 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
25/141
26/141
'*********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.***
27/141
Sistemas de control programado. Sistema PICAXE 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
28/141
Control de un Semforo
No siempre es necesario disear y construir nuevos proyectos para abordar el control de sistemas automticos, sino que en muchos casos podemos reciclar proyectos de otros cursos para ahorrar tiempo y materiales. En este caso hemos partido de un semforo de pinzas construido por un grupo de alumnos de 3 de E.S.O. y que hemos programado mediante el empleo de un PICAXE08. El primer problema que encontramos al emplear un PICAXE08 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.
29/141
Como podemos observar incluye un parpadeo en la luz verde de los peatones que indica el cambio a rojo.
30/141
Esquema:
PCB:
31/141
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
32/141
Cantidad 1 1 1 3 1 1 1 1 1 1 1 1 1 1
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
33/141
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
34/141
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
35/141
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
36/141
Sistemas de control programado. Sistema PICAXE 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.
37/141
Sistemas de control programado. Sistema PICAXE 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.
38/141
Sistemas de control programado. Sistema PICAXE 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.
39/141
Sistemas de control programado. Sistema PICAXE Cada byte de la nota est codificado en 8 bits tal y como se muestra en la figura.
40/141
Sistemas de control programado. Sistema PICAXE 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.
41/141
Diagrama de bloques:
Esquema electrnico:
42/141
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 cuande se cargue el programa deberemos ajustar el jumper correctamente, al igual que para ejecutar el programa.
43/141
44/141
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. 45/141
Esquema electrnico:
46/141
' Si la luz es baja salta a bucle rpido if pin3 = 0 then rapido low 0 low 1 low 2 pause 500 ' LEDS off
' 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
47/141
48/141
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.
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
49/141
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
inicio: pause 500 bucle: serout 7,N2400, (253,1,Jugador1= pause 1000 serout 7,N2400, (253,1,Jugador2= pause 500 goto bucle ) )
50/141
inicio: pause 500 bucle: serout 7,N2400, (1) pause 10 serout 7,N2400, (2) pause 500 goto bucle
inicio: pause 500 bucle: 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.
51/141
52/141
53/141
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
54/141
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
55/141
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 56/141
Anexo A:
Cuadro de caracteres memorizados en la CGRAM del mdulo LCD
57/141
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.
58/141
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)
59/141
Control del motor: 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
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
60/141
61/141
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 goto inicio 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 salta hasta la direccin indicada en inicio
62/141
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 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
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.
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.
63/141
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.
64/141
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
65/141
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 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
66/141
67/141
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)
68/141
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.
69/141
Sistemas de control programado. Sistema PICAXE 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 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 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
for next FOR contador = start TO end {STEP {-} inc} {body}
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.
70/141
Sistemas de control programado. Sistema PICAXE Ejemplo: bucle: for b0 = 1 to 20 high 1 pause 500 low 1 pause 500 next b0 pause 2000 goto bucle 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
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.
71/141
Sistemas de control programado. Sistema PICAXE 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 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 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
La ejecucin del programa continua en la declaracin de la etiqueta. Ejemplo: inicio: high 1 pause 5000 low 1 pause 5000 goto inicio salida 1 a nivel alto espera de 5 segundos salida 1 a nivel bajo espera de 5 segundos salta a inicio
72/141
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. 73/141
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.
74/141
ifthen ifandthen 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 pone a valor alto la salida 1 espera de 5 segundos pone a valor bajo la salida 1 salto a inicio salta a flash si el valor del pin0 es un 1 sino salta a 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.
75/141
Sistemas de control programado. Sistema PICAXE 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 goto inicio swon2: high 2 goto inicio swon3: high 3 goto inicio swoff1: low1 goto inicio swoff2: low2 goto inicio swoff3: low3 goto inicio 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
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
76/141
77/141
KEY Z 0 1 2 3 4 5 6 7 8
CODE 1A 45 16 1E 26 25 2E 36 3D 3E
CODE 0B 83 0A 01 09 78 07 ?? 7E ??
CODE 6C 75 7D 5B 4C
'
52 41 49 4A
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
78/141
Sistemas de control programado. Sistema PICAXE 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
79/141
$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
80/141
;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 reset: let b0 = b0 max 10 goto inicio resetea b0 con un valor 10 y 10 es el mximo valor incrementa b0 en una unidad emite sonido si la variable es superior a 50 salta a reset sino a 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
81/141
Otro ejemplo: reset: let infra = 0 inicio: 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 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 salta a reset si se detecta una nueva seal sino salta a inicio resetea la variable infra
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
82/141
0 1 2 3 4 5 6 7
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
83/141
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
84/141
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 set todo PORTA como salidas set a nvel alto el bit 0 de PORTA
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.
85/141
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.
86/141
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
87/141
Ejemplo: inicio: readadc 1,w1 if w1 > 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 w1 salta a flash si b1 > 50 sino salta a 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.
88/141
89/141
90/141
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.
91/141
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
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:
92/141
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
93/141
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 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
reverse REVERSE pin Si pin es entrada, lo convierte en salida. Si es salida, lo convierte en entrada.
94/141
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:
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.
95/141
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:
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).
96/141
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 tiempo (x0.01 ms) cada 20ms indicado por pulse. 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 comienzo bucle leer valor y cargar en b1 transmite valor de b1 siguiente ciclo
97/141
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
98/141
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.
99/141
Establece la frecuencia interna del reloj para el microprocesador PICAXE-18X para 4 MHz (por defecto) o 8 MHz.
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.
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.
100/141
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) salida 7 a nivel alto pausa de 0,2 segundos salida 7 a nivel bajo pausa de 0,2 seguundos repite programa indefinidamente
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.
101/141
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 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
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.
102/141
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
103/141
104/141
105/141
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 Control de servo Infrarrojo Interrupcin Temperatura peek, poke writemem, readmem servo (18A nicamente) infrain (18A nicamente) setint (18A nicamente) readtemp (18A nicamente)
Nmero de serie de 1 cable readowsn (18A nicamente) Reloj de 1 cable Teclado readowclk, resetowclk (18A nicamente) keyin, keyled (18A nicamente)
Comandos especficos del PICAXE-28/28A/28X: RAM Control de Servo Infrarrojo Interrupcin Temperatura peek, poke servo infrain setint (28A / 28X nicamente) readtemp (28A / 28X nicamente)
Nmero de serie de 1 cable readowsn (28X nicamente) Reloj de 1 cable Teclado I2C readowclk, resetowclk (28X nicamente) keyin, keyled (28X nicamente) i2cin, i2cout, i2cfamily (28X nicamente)
106/141
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 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
Donde: f= file register name k= value of literal b= bit number (0-7) d= result position (W or f)
107/141
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/
108/141
Sistemas de control programado. Sistema PICAXE ANEXO2: Esquemas electrnicos Conexionado tpico de un PICAXE-08:
109/141
Diagrama de entradas/salidas:
110/141
Sistemas de control programado. Sistema PICAXE Para la construccin del circuito se necesitar:
111/141
112/141
113/141
Sistemas de control programado. Sistema PICAXE Circuitos electrnicos de aplicacin con PICAXE Interface tpico de amplificacin para dispositivo de salida:
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.
114/141
Sistemas de control programado. Sistema PICAXE Control directo de un motor de consumo elevado con MOSFET:
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.
115/141
Sistemas de control programado. Sistema PICAXE Control de una salida para un zumbador: 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.
116/141
Sistemas de control programado. Sistema PICAXE Control de un motor con tensiones diferentes de alimentacin del circuito de control automatizado y control de potencia:
117/141
118/141
Para incrementar conteo: Pulsout 1,100 Para resetear poner conectar una salida del PICAXE al pin 2 (Reset)
119/141
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.
120/141
121/141
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.
122/141
Sistemas de control programado. Sistema PICAXE Control de dispositivos de entrada (resistencia variable):
123/141
124/141
125/141
126/141
Sistemas de control programado. Sistema 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
N Pines 8
Memoria (lneas) 40
Pines 5
Salidas 1-4
Entradas 1-4
A/D (b-baja) 1b
Interrupciones -
127/141
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:
Proceso
Salida por
pantalla
Toma de
decisin
128/141
Sistemas de control programado. Sistema PICAXE 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 dividendo
Pedir divisor
Dividir
Pedir dividendo
Pedir divisor
M ostrar
resultado
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
M ostrar
resultado
129/141
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.
130/141
Sistemas de control programado. Sistema PICAXE 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?. 131/141
Sistemas de control programado. Sistema PICAXE 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.
132/141
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 variables que 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.
133/141
Sistemas de control programado. Sistema 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.
134/141
Sistemas de control programado. Sistema PICAXE 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
135/141
1.6.
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.
136/141
Sistemas de control programado. Sistema PICAXE Estructuras condicionales Todos los lenguajes de programacin if cuentan con una estructura condicional "condicin" simple, con una salida afirmativa y otra negativa como la representada en la figura. Else Planteamos una condicin, si sta se cumple (then) el programa ejecuta una serie de instrucciones, en caso contrario (else) el 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 137/141
Then
Sistemas de control programado. Sistema PICAXE 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 138/141
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.
139/141
Sistemas de control programado. Sistema PICAXE 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
140/141
Sistemas de control programado. Sistema PICAXE 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 10 veces las instrucciones contenidas dentro del bucle.
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.
141/141