Académique Documents
Professionnel Documents
Culture Documents
1
Sumario club 161_ArtTapa 10/03/2019 11:11 a. m. Página 2
Editorial
director
2
Cap 1 - PICAXE 9/6/11 10:03 AM Página 3
CAPÍTULO 1
Los microcontroladores PICAXE, mas que
ser considerados como una serie de cir-
cuitos integrados fáciles de programar,
constituyen la integración de todo un sis-
tema en el cual están involucrados, a
parte de los dispositivos electrónicos (los
propios microcontroladores PICAXE), el
software para programarlos (entorno de
programación Programming Editor y apli-
cación Logicator).
La ventaja que se tiene al utilizar los
microcontroladores del sistema PICAXE es
que, aun sin tener conocimientos, se puede aprender de una manera muy fácil, ya que uti-
liza un lenguaje BASIC muy sencillo, además de contar también con la posibilidad de pro-
gramarlos con diagramas de flujo.
En este capítulo explicaremos qué son los PICAXE, cómo podemos realizar fácilmente diseños
de sistemas que los contengan, qué tipos de PICAXE podemos encontrar y cómo se usa el
entorno de programación
Un PIC es un microcontrolador que precisa un entorno de desarrollo (el MPLAB) para editar programas,
simularlos, convertir el programa en un archivo hexadecimal y realizar la simulación que verifique que
está todo bien. Luego, se precisa un cargador para “descargar” el programa en la memoria del PIC, y
por último se debe quitar el PIC del cargador y colocarlo en el circuito donde va a funcionar.
Un PICAXE “no precisa nada de todo eso...” es un PIC al que se le ha grabado un programa interno (firm-
ware) para que pueda ser “cargado” en la misma placa donde va a funcionar por medio de un soft-
ware gratuito y en el que los programas pueden escribirse en BASIC o en diagrama de flujo.
Desde que el primer microprocesador vio la luz del mundo (el 4004), y cuya única y principal operación
era una suma de 1 bit, se comenzó con una carrera tecnológica que lejos de ver el fin, día a día va
logrando cosas inimaginables, tal es el caso de los microcontroladores que vendrían a ser el ejemplo
resumido y en miniatura, de una computadora personal (PC).
Un microcontrolador del sistema PICAXE puede ser de 8, 18, 28 o 40 terminales o más (figura 1), inter-
3
Cap 1 - PICAXE 9/6/11 10:03 AM Página 4
4
Cap 1 - PICAXE 9/6/11 10:03 AM Página 5
5
Cap 1 - PICAXE 9/6/11 10:03 AM Página 6
6
Cap 1 - PICAXE 9/6/11 10:03 AM Página 7
7
Cap 1 - PICAXE 9/6/11 10:03 AM Página 8
COM real, es decir, que no sea un dispositivo HID, ya que en ese caso no le va a servir.
“PICAXE” es un sistema que emplea un micro fácil de programar que utiliza un lenguaje BASIC muy sim-
ple, el cual la mayoría de los estudiantes pueden aprender rápidamente. Los microcontroladores (con
memoria FLASH) pueden ser programados una y otra vez sin la necesidad de un costoso programador
PIC. El sistema no necesita de ningún programador, borrador o complejo sistema electrónico. El pro-
grama puede escribirse en BASIC o por medio de un diagrama de flujo y se carga mediante una cone-
xión de tres cables conectada al puerto serie de la computadora. El sistema PICAXE consiste en tres
componentes principales:
8
Cap 1 - PICAXE 9/6/11 10:03 AM Página 9
FIGURA 12 - PARA PODER UTILIZAR UN SISTEMA PICAXE CON UNA COMPUTADORA A TRAVÉS DEL PUERTO USB SE DEBE
EMPLEAR UN CONVERSOR DE PUERTO COMO EL MOSTRADO EN LA FIGURA Y CUYA CONSTRUCCIÓN SE EXPLICÓ EN SABER
ELECTRÓNICA Nº 221.
EL EDITOR DE PROGRAMAS
9
Cap 1 - PICAXE 9/6/11 10:03 AM Página 10
10
Cap 1 - PICAXE 9/6/11 10:03 AM Página 11
11
Cap 1 - PICAXE 9/6/11 10:03 AM Página 12
De 8 terminales (PICAXE-08),
De 14 terminales (PICAXE-14),
De 18 terminales (PICAXE-18),
De 20 terminales (PICAXE-20),
De 28 terminales (PICAXE-28) y
De 40 terminales (PICAXE-40).
12
Cap 1 - PICAXE 9/6/11 10:03 AM Página 13
Hace aproximadamente 6 años que comenzamos a escribir publicaciones sobre el sistema PICAXE aquí
en Saber Electrónica, y a la fecha algunos de los microcontroladores PICAXE que al inicio les presenta-
mos en diversos proyectos, ya se encuentran descontinuados o sustituidos por otros de reciente comer-
13
Cap 1 - PICAXE 9/6/11 10:03 AM Página 14
KITS PICAXE
14
Cap 1 - PICAXE 9/6/11 10:03 AM Página 15
15
Cap 1 - PICAXE 9/6/11 10:03 AM Página 16
Los mencionados son sólo algunos de los proyectos que hemos publicado en Saber Electrónica como
“montajes destacados” y que puede conseguir en forma de kits, por razones de espacio no podemos
mencionarlos a todos ellos. Sugerimos visitar nuestra web para más información. ☺
16
Cap 1 - PICAXE 9/6/11 10:03 AM Página 17
Cap 1 - PICAXE 9/6/11 10:03 AM Página 18
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 19
CAPÍTULO 2
“PICAXE” es un sistema de microcontro-
ladores fácil de programar ya sea
usando diagramas de flujo o emple-
ando lenguaje BASIC, el cual la mayoría
de las personas puede aprender rápi-
damente, dado su nivel de interaccio-
nar con su lenguaje. En los tomos 7, 16
y 29 de la colección Club Saber
Electrónica hablamos sobre PICAXE y
dimos varios proyectos comentados uti-
lizando en Programing Editor pero hasta
ahora no hemos programado en BASIC,
tema que abordaremos a continuación. En forma sintética, el lenguaje que se implementa,
es un sencillo diálogo muy intuitivo, que da órdenes muy precisas empleando un juego de
comandos limitados.
El microcontrolador PIC, es un circuito integrado que contiene memoria, unidades procesadoras y circui-
tos de entrada/salida, en una sola unidad. Digamos que es muy similar a un ordenador o computadora
PC, pero en formato pequeño. El microcontrolador PICAXE, es un sencillo microcontrolador PIC, que tiene
por característica, tener alojado dentro de su memoria, un pequeño firmware que permite ser progra-
mado bajo lenguajes más sencillos que el Assembly. Como ya sabrán, los microcontroladores son com-
prados en “blanco” y luego son programados con un programa específico de control. Una vez progra-
mado, este microcontrolador es introducido en algún producto para cumplir el rol de trabajo de contro-
lador. Es sabido, que estos diminutos circuitos integrados, tienen una inteligencia limitada por nosotros mis-
mos a la hora de ejecutar una acción; pues, según se lo programe, se delega solo la responsabilidad de
la orden impartida. Por ejemplo, si nosotros programamos a este microcontrolador para que ejecute la
tarea de monitorear y administrar el funcionamiento de un motor a explosión como lo que podemos ver
en un automóvil, éste sólo hará lo que le dijimos por intermedio de las instrucciones de programación, y
no esperen que este haga otra cosa que no le hallamos enseñado en su rutina de control. Hoy en día, se
suele aplicar microcontroladores en los desarrollos electrónicos, por que estos pueden reemplazar a un
gran número de partes separadas, o incluso a un circuito electrónico completo. Algunas de las ventajas
obtenidas con el uso de microcontroladores en el diseño de productos son:
19
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 20
EL SISTEMA PICAXE
El sistema “PICAXE” es un sistema de microcontrolador fácil de programar que utiliza un lenguaje BASIC
muy simple, el cual la mayoría de las personas pueden aprender rápidamente dado su nivel de inter-
accionar con su lenguaje. Ya hemos dado las características sobresalientes de este sistema en capítu-
los anteriores de esta obra pero no está demás resumir los rasgos sobresalientes del sistema PICAXE.
En forma sintética, el lenguaje que se implementa, es un sencillo diálogo muy intuitivo, que da órdenes
muy precisas… como ejemplo, podría
darles este ejemplo citado en la figura 1.
En la rutina de dicha figura, lo único que
hice, fue programar el microcontrolador
con un diálogo sencillo, en inglés, pero
muy deducible para aquellos que estén
flojos con este idioma.
Prácticamente, lo único que le ordené al
microcontrolador, es que monitoree la
entrada numero cero (input cero), y en
caso de tener algún estado definido (un
alto o un bajo, o sea, un 1 o un 0 lógico),
éste actúe dando como resultado una
acción determinada. Internamente, estas
líneas de programación, funcionan de la
siguiente manera dentro del microcontro-
lador:
Siempre, la rutina se lee y se ejecuta
desde la primer línea para abajo, salvo FIGURA 1 - RUTINA EN BASIC PARA PROGRAMAR UN PICAXE
20
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 21
lice y compare el
“SALTE” A OTRA INSTRUCCIÓN O SUBRUTINA.
estado de la
entrada cero con el valor pre establecido y en caso de ser positivo el
resultado tiene que saltar e ir al sub programa “encendido”, figura 3.
En el caso de que la comparación de “cero”, el microcontrolador
FIGURA 2 - EL PROGRAMA CON-
21
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 22
Esta obra está diseñada para que el lector pueda realizar sus prácticas tanto con la placa entrenadora
y sus módulos correspondientes, como así también poder realizar simulaciones en el laboratorio virtual
Proteus, con sus librerías y diagramas de circuitos del laboratorio para que puedan saber cómo se va a
comportar el circuito casi como si lo efectuáramos con nuestra placa entrenadora física. Si bien este
laboratorio virtual es una gran herramienta virtual; debemos remarcar que posee algunos errores meno-
res que pueden complicarnos algunos diseños y o simulaciones.
Los errores encontrados hasta el momento son:
USANDO COMENTARIOS
Usar comentarios en un programa, aunque sea perfectamente obvio para todos ustedes, puede ser una
herramienta extra que el día de mañana, le puede ayudar a comprender por qué implementó una
acción en su rutina, además, hay que tener en cuenta que si lo compartimos, alguien más puede leerlo
y puede no tener idea de lo que Ud. ha querido hacer.
Cabe aclarar que los comentarios usan espacio en el archivo fuente (.bas) pero no lo hacen en la
memoria del PICAXE, ya que éstos no son subidos junto a la rutina de programación.
Implementar un bloque de comentarios en el comienzo del programa y antes de cada sección del
código, puede describir cuál es la función de la rutina que tenemos, o bien, podemos describir con más
detalles cada línea de nuestro programa.
Para reconocer los comentarios, podemos dirigirnos a nuestra sección configuración del software, y en
la pestaña “editor” seleccionamos preferencias de colores en la sintaxis.
Con esta ultima acción, podremos diferenciar en nuestras rutinas los comandos, los comentarios con un
color distinto. Los comentarios en el programa comienzan con un apóstrofe (‘) o punto y coma (;) y con-
tinúa hasta el final de la línea. Es decir, en una línea, todo lo que está después del apóstrofe (‘) o punto
22
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 23
USO DE SYMBOL
Uso de Constantes
Las llamadas constantes, pueden ser creadas de manera similar a las variables. Puede que sea más con-
veniente usar un nombre para la constante en lugar de implementar un número como constante. Si el
valor u operando de la “constante” necesita ser cambiada, únicamente se modifica en algún lugar del
programa donde se define la constante en lugar de modificar cada parte del programa en la que inter-
viene. Dentro de las constantes, no pueden guardarse datos variables. Las constantes declaradas pue-
23
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 24
DESIGNACIÓN DE VARIABLES
24
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 25
La tabla 1 representa un breve resumen de los diferentes comandos disponibles para los microcontrola-
dores PICAXE.
Veremos a continuación la estructura y el significado de algunos de los comandos básicos que se
emplean para programar un PICAXE y
cómo se los emplea.
GOTO
25
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 26
GOSUB
Este comando tiene como función saltar a la subrutina indicada en la etiqueta, guardando su dirección
de regreso en la memoria pila (stack). A diferencia del GOTO, cuando se llega a un RETURN, la ejecución
sigue con la declaración siguiente al último GOSUB ejecutado. Se puede usar un número ilimitado de
subrutinas en un programa y pueden estar anidadas. En otras palabras, las subrutinas pueden llamar a
otras subrutinas. Cada anidamiento no debe ser mayor de cuatro niveles. Como ejemplo, cuando nos-
otros ejecutamos GOSUB, salta el programa a una etiqueta, y cuando llega al comando RETURN, vuelve
a la siguiente línea de donde partió con el comando GOSUB. La figura 7 muestra un ejemplo de uso de
este comando.
26
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 27
El bucle FOR … NEXT permite a los programas ejecutar un número de declaraciones tantas veces como
se lo defina, usando una variable como contador. Este comando es ideal para acortar líneas de pro-
gramas repetitivas. Para tener una idea
de su potencial, sea el siguiente pro-
grama que permite el parpadeo de un
Led conectado en una salida del PICAXE
cinco veces:
symbol led1= 7
ejemplo1:
high led1
pause 1000
low led1
pause 1000
high led1
pause 1000
low led1
pause 1000
high led1
pause 1000
low led1
pause 1000
high led1
pause 1000
low led1
pause 1000
high led1
pause 1000
low led1
pause 1000
end
FIGURA 7 - GOSUB ES SIMILAR A GOTO PERO GUARDA LA
DIRECCIÓN DONDE ESTABA EN EL STACK.
27
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 28
28
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 29
LOW
Es el comando contrario a HIGH y se usa para poner una salida en estado bajo (“0” lógico) o desactivar
dicha salida.
Veamos cómo funcionan los comandos high y low en el ejemplo mostrado en la figura 10: Simplemente
se pone un “1” lógico en el PIN 1 del microcontrolador, se detiene el programa durante 5 segundos, luego
se pone un “0” lógico en el PIN 1, nuevamente se tiene una espera de 5 segundos y el programa vuelve
al inicio. Es decir, se trata de un programa que activa y desactiva la pata del micro correspondiente al
PIN1 en períodos de 5 segundos en cada estado.
INPUT
OUTPUT
29
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 30
FIGURA 11 - LA CONFIGURACIÓN DE LOS PUERTOS, COMO ENTRADAS O SALIDAS, SE PUEDE HACER CON LOS COMANDOS
IMPUT Y OUTPUT.
Nota: en este ejemplo, cité ambas maneras en las que podemos definir o nombrar un puerto de entrada
o salida. Cuando simule esta rutina, verá que el software las reconoce a ambas como lo mismo y no
genera ningún conflicto.
END
Este comando tiene como objeto detener la ejecución del proceso y el microcontrolador no sigue eje-
cutando el programa hasta que lo reiniciemos o bien, hasta que no le demos la instrucción manual de
volver a comenzar con su ciclo.
30
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 31
ciones son:
PROGRAMA Y QUE EL MICRO QUEDE EN LA CONDICIÓN DE BAJO
CONSUMO.
= (igual que)
>= (mayor o igual que)
> (mayor que)
< (menor que)
<= (menor o igual que)
<> (no es igual que)
& (función lógica AND)
or (función lógica OR)
Estas son sólo algunas de las comparaciones a las que pueden responder estos comandos.
El principio básico de estos tres comandos son la de establecer una pregunta (IF...) sobre el estado de un
puerto determinado; compara, lee el estado, evalúa en términos de VERDADERO o FALSO y en el caso
de ser cierto, se ejecuta la operación a la que refiere el THEN (entonces...).
Si lo considera falso, no se ejecuta la operación posterior al THEN y prosigue con la lectura de la siguiente
línea. Veamos algunos ejemplos:
if…then
if input1 =1 then action3
31
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 32
if…and…then
if input1 =1 and input0= 1 then action2
FIGURA 13 - EJEMPLO DE USO DEL COMANDO IF... THEN
Aquí se dice que si la entrada 1 es igual
a 1 y la entrada 0 es igual a 1, entonces
el programa sigue ejecutándose en la
etiqueta “action2”. Si la entrada 1 y/o la
entrada 0 es igual a cero se sigue eje-
cutando el programa normalmente.
if…or…then
if input1 =1 or input 0 = 1 then action3
if…or…then gosub
if input1 =1 then gosub action3 if input2
=0 then actionx
32
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 33
PAUSE
Este comando, es implementado para generar retardos en los saltos entre líneas y ejecución del código
del programa. Ya lo hemos visto en algunos ejemplos anteriores, pero ahora lo presentamos “formal-
mente”. En la siguiente rutina se está indicando que se ponga en “1” el PIN 1, luego que se mantenga
asi durante 5 segundos (5.000 milisegundos), posteriormente se indica que se ponga un “0” en el PIN 1
durante otros 5 segundos y que vuelva a comenzar el programa:
inicio:
high 1
pause 5000
low 1
pause 5000
goto inicio
Como especificación del tiempo de retardo está dada en “milisegundos”, en una estructura de 16 bits,
los retardos pueden ser de hasta 65635 milisegundos (66 segundos).
WAIT
Este comando, al igual que el anterior, es implementado para generar retardos en los saltos entre líneas y
ejecución del código del programa. La única diferencia es que PAUSE establece unidades expresadas en
milisegundos y WAIT en segundos. Técnicamente decir WAIT 1 o decir PAUSE 1000 es lo mismo. Por lo dicho,
el programa que vimos en la explicación del comando PAUSE se puede expresar de la siguiente manera:
inicio:
high 1
wait 5
low 1
wait 5
goto inicio
33
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 34
RETURN
INFRAIN
34
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 35
READADC
35
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 36
PWM
Este comando solo puede ser implementado en los microcontroladores PICAXE 08 y 08M (en otros
PICAXE no funciona) y su función es enviar un tren de pulsos modulados en un ancho definido por el pin
de salida seleccionado. Cada ciclo del PWM (Pulse Width Modulation -Modulación del ancho del pulso),
puede tener una resolución dada a nuestro gusto y necesidad, es decir, podemos ampliar tanto el
“duty”, como el “cycle”, reduciendo o ampliando así el ancho del pulso. Entendemos como “duty”, al
momento en que tenemos un estado alto por un tiempo determinado la señal del PWM y “cycle”, al
momento en que se repite el “duty”.
El “duty” para cada ciclo puede variar en valores comprendidos entre 0 (0%) y 255 (100%). El cycle del
PWM puede estar definido entre 0 y 255 repeticiones; pero hay que tener en cuenta que el “cycle”
depende de la frecuencia del oscilador. Con esto último quiero explicarles que por ejemplo con un osci-
lador de 4MHz, cada cycle será de aproximadamente 5 ms de largo. Con un oscilador de 20MHz la
duración del ciclo será de 1 ms aproximadamente.
Definir el valor del oscilador mediante la implementación de un comando especial que veremos mas
adelante, no tiene efecto sobre el comando PWM.
El PICAXE 08 emplea sus puertos como entrada y salida, según lo configuremos nosotros pero cuando
empleamos el comando PWM, el puerto se convierte en salida justo antes de la generación del pulso y
vuelve a ser entrada, cuando cesa. La salida de PWM tiene mucho ruido, y no tiene forma de onda cua-
36
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 37
EEPROM
El comando EEPROM, nos guarda datos en la memoria no volátil de nuestro microcontrolador. Dado que
la EEPROM es una memoria no volátil, los datos permanecerán intactos aún sin alimentación.
Si se omite el valor opcional de la posición de memoria, la primera declaración se guarda en la direc-
ción 0 de la EEPROM y las subsiguientes en las siguientes direcciones del mismo. Si se indica un valor de
posición, éste indica la dirección de comienzo para guardar los datos. La estructura de la instrucción es
la siguiente:
EEPROM {posición},(dato)
“Posición (location)” es una constante numérica de 0 a 255 que específica donde se debe empezar a
almacenar los datos en la EEPROM. Como mencionamos anteriormente, si no existe una posición indi-
cada, el almacenamiento continúa a partir del último dato introducido. Si inicialmente no se especificó
ninguna posición, el almacenamiento comienza en la posición 0.
“Dato (data)” puede ser una constante alfanuméricas de hasta 256 caracteres. Cada carácter del valor
numérico o palabras son almacenados en las posiciones de la EEPROM que van desde la posición “0”
hasta la “255”. Este comando y esta diversidad en la estructura física del microcontrolador, solo la pode-
mos encontrar en los
microcontroladores
PICAXE-18A, 28, 28A y 28X.
Los datos que son guarda-
FIGURA 21 - EEPROM PERMITE ESCRIBIR DATOS EN POSICIONES DE MEMO- dos en la EEPROM solo una
vez y esto ocurre cuando el
RIA INTERNA DEL MICRO.
microcontrolador es pro-
gramado, no cada vez
que se ejecuta el pro-
grama. Para el caso de
tener que armar una rutina
donde necesitamos guar-
dar en tiempo real determi-
nados datos en la EEPROM
se puede usar la instrucción
FIGURA 22 - PARA ESCRIBIR LA PALABRA “MARTIN” SE REQUIEREN 6 POSI-
CIONES DE MEMORIA.
37
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 38
38
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 39
FIGURA 24 - RUTINA QUE EMPLEA EL COMANDO EEPROM PARA ESCRIBIR LA FRASE “MARTIN TORRES” Y
QUE LUEGO SE PUEDE ENVIAR A UN DISPLAY.
o comando WRITE para colocar los valores en la EEPROM en el momento de la ejecución. La figura 21
muestra un ejemplo de uso de esta instrucción. Note que la segunda línea está indicando que guarde
la palabra “Martín” a partir de la dirección de memoria 0. Ahora bien cuando guardamos una palabra
en la dirección 0, no significa que la integridad de la palabra o frase se guarde en esa posición sola-
mente.
El primer carácter o letra se guarda en la dirección cero y el resto de las letras o caracteres se almace-
nan en las direcciones siguientes en el correspondiente binario según el código ASCII, tal como muestra
la figura 22. Cabe aclarar que para la conversión de caracteres a su correspondiente binario, según el
código ASCII, se puede emplear una tabla como la mostrada en la figura 23.
SI nosotros queremos guardar otro mensaje, tenemos que tratar de que no ocupemos un espacio ya
usado por otra palabra. Un método sencillo es ir anotando en una tabla como la mostrada en la figura
22 las letras y las distintas direcciones de la EEPROM donde están guardadas, ya que luego, para poder
tener esas palabras, ejecutaremos comandos tales como “for…next”, los cuales apuntará a dichas posi-
ciones de memoria.
En la figura 24 tenemos un ejemplo de una rutina que se puede utilizar para visualizar frases en un display
de cuarzo líquido. La instrucción:
Indica que a partir de la posición 6 se guarde la frase “Martin Torres” (las comillas no cuentan), lo que equi-
vale al uso de 13 posiciones de memoria (“Martin” ocupa 6 posiciones, “Torres” ocupa 6 posiciones y el
espacio intermedio ocupa la restante), es decir, se usa desde la posición 6 hasta la posición 18 (expre-
sado en binario).
I2CSLAVE
I2C es un bus de comunicaciones en serie. Su nombre viene de Inter-Integrated Circuit (Circuitos Inter-
Integrados). La versión 1.0 data del año 1992 y la versión 2.1 del año 2000, su diseñador es Philips. La velo-
cidad es de 100kbits por segundo en el modo estándar, aunque también permite velocidades de
3.4Mbit/s. Es un bus muy usado en la industria, principalmente para comunicar microntroladores y sus peri-
39
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 40
SDA: datos
SCL: reloj
GND: tierra
El comando I2CSLAVE se utiliza para configurar los pines del PICAXE y definir el tipo de I2C que se emple-
ará como hardware funcional (sensores - conversores A/D-módulos conversores o digitalizadores con
memoria propia) o bien, alguna memoria EEPROM adicional. Si se utiliza únicamente un dispositivo I2C,
entonces generalmente solo se necesita una orden I2CSLAVE dentro del programa.
El orden en que escribimos este comando en un programa es el siguiente:
40
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 41
Dirección esclavo: La dirección del esclavo cambia para dispositivos diferentes (vea la tabla de la figura
25). Para las EEPROM del tipo 24LCxx la dirección es %1010xxxx.
Velocidad: La velocidad del bus I2C se selecciona a través de los comandos I2CFAST para velocidad de
400kHz y I2CSLOW para 100kHz.
Dirección control: Los 7 bits superiores del byte de control contienen el código de control junto con la
selección del chip e información adicional de dirección, dependiendo de cada dispositivo. El bit inferior
es una bandera interna que indica si es un comando de lectura o escritura y no se debe usar.
Por ejemplo, cuando comunicamos al PICAXE con una memoria 24LC01B, el código de control es %1010
y no se usa la selección de chip, por lo que el byte de control será: %10100000 o $A0, tal como se puede
observar en la tabla de la figura 25.
NOTA: El tamaño de dirección enviado (byte o Word) viene determinado por el tamaño de la variable
usada. Si se usa una variable con tamaño byte se envía una dirección de 8 bits. Si se envía una variable
de tamaño Word, se envía una dirección de 16 bits. Asegurarse de utilizar una variable apropiada al dis-
positivo a comunicar.
READI2C
Este comando se usa para leer los datos almacenados de un dispositivo I2C, lee la dirección determi-
nada en el dispositivo I2C y lo almacena en una variable establecida. El orden en que escribimos este
comando en un programa es el siguiente:
“Dirección (Location)” especifica la dirección del I2C mediante un byte del tipo Word.
“Variable(s)” establece dónde se almacenan los bytes del dato leído.
Dirección o Location, define la dirección de inicio de la lectura de datos, aunque se logra también leer
más de un byte secuencialmente (si el dispositivo I2C da soporte a lecturas secuenciales). Dirección o
Location debe ser un byte que defina al 12cslave. Un comando del 12cslave tiene que haberse ejecu-
tado con anterioridad de la ejecución del readi2c. Si el hardware del I2C no fue configurado de forma
correcta o el byte de localización no es el adecuado el valor almacenado en la variable será 255 ($FF)
indicándonos un error. Veamos el siguiente ejemplo de cómo usar el time clock DS1307, donde los datos
son enviados/recibidos en ‘código BCD coloca la dirección del esclavo del DS1307 12cslave %11010000,
‘i2cslow, i2cbyte lectura de la hora y fecha y presenta en el depurador:
Inicio:
readi2c 0, (b0,b1,b2,b3,b4,b5,b6,b7)
debug b1
pause 2000
goto inicio
41
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 42
READ
En este ejemplo podemos ver cómo transmitir un dato a un módulo display de la empresa Revolution
Educations. Tenga en cuenta que estos display vienen con un microcontrolador que contiene un
pequeño firmware de control por lo que el programa no funciona en cualquier display de LCD.
42
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 43
Con este comando podemos grabar valores en la EEPROM incorporada en el microcontrolador (en la
EEPROM interna), en una dirección especificada.
El orden del registro guardado, es como explicamos anteriormente cuando ejemplificamos el comando
EEPROM, comienza en una dirección dada, y el resto de los caracteres son almacenados en los espa-
cios que están a continuación. Por lo dicho, hay que tener precaución si queremos borrar y refrescar un
valor dado en determinada posición, ya que si nos equivocamos en la posición de inicio del registro u
donde termina, podemos borrar pedazos de otros datos.
Este comando tiene la siguiente sintaxis:
WRITEI2C
Graba valores en un dispositivo externo con EEPROM, en una dirección especificada. La sintaxis de este
comando es la siguiente:
43
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 44
READOWSN
readowsn pin
44
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 45
Permite visualizar la información contenida en la variable Var en la ventana del depurador durante la eje-
cución. Esta instrucción, en el programa, se debe escribir de la siguiente manera:
debug Var
debug b1
SERTXD
Envía uno o más conjunto de datos al pin de programación, en formato “standard asíncrono”, usando 8
bit de datos, sin paridad y un BIT de stop (8N1) a 4800 baudios. Este comando nos puede servir para escri-
bir mensajes en nuestro terminal de programación, sin la necesidad de usar una interfase o convertidor
de código como el integrado MAX232. En la figura 30 podemos ver la estructura de un programa que
vuelca los datos directamente sobre una pantalla de LCD serie.
FIGURA 30 - CON EL COMANDO SERTXD SE PUEDEN VOLCAR DATOS EN UN DISPLAY DE LCD SERIAL.
Como puede observar, el orden en que escribimos este comando en un programa es:
45
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 46
PULSIN
Este comando tiene como función observar el ancho de un pulso en un PIN de entrada o salida deter-
minado. Si la opción “estado” tiene el valor cero, se mide el ancho de un pulso bajo. Si la opción “estado”
tiene el valor uno, se mide el ancho de un pulso alto. El ancho o duración medido del pulso así sea con
lógica negativo o positiva, se guarda en la variable que queramos establecer (b1, b2, etc.).
Si el flanco del pulso nunca aparece, ó si el ancho del pulso es demasiado grande para ser medido, el
valor de esta variable será igual a cero. Si se usa una variable de 8 bits, solo se usan los bits menos sig-
nificativos de la medición de 16 bits.
La estructura o sintaxis de la instrucción es la siguiente:
“Pin” es una variable o constante (0-7) que especifica el pin de entrada o salida que se usará.
“Estado” es una variable o constante con los valores 0 ó 1. Estos valores, configuran el tipo de pulso a
medir en unidades de 10µs (para un cristal de 4MHz).
“Variable” define un registro específico para almacenar el dato obtenido.
La resolución del comando PULSIN depende de la frecuencia de los osciladores, ya sea internos (RC) u
externos. Si se usa un oscilador de 4MHz, el ancho de pulso se obtiene en incrementos de 10µs. Si se usa
un oscilador de 20MHz, el ancho de pulso tendrá una resolución de 2µs. La resolución siempre cambia
con la velocidad del oscilador en uso. Por ejemplo, si en un programa escribimos:
pulsin 3,1,b1
Esta instrucción guarda la longitud del pulso introducido en el pin 3 en la variable b1.
PULSOUT
Genera un pulso en un pin determinado, con un tiempo o período específico. El pulso se genera acti-
vando dos veces el PIN, por lo que la polaridad del pulso depende del estado inicial del PIN.
Orden en que escribimos este comando en un programa:
46
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 47
Pulsout 4,150
Estamos indicando que por el PIN 4 enviaremos un pulso de duración “150” lo que implica que si usamos
un oscilador de 4MHz, como la unidad de duración es de 10µs, significa que por el PIN 4 estaremos
enviando un pulso de 1500µs (1,5ms).
Tenga en cuenta que a mayor velocidad del oscilador, más tráfico de datos podemos mover.
Tanto PULSIN como PULSOUT son comandos ideales para comunicación entre microcontroladores, ya sea
por intermedio de infrarrojos o radiofrecuencia. También nos dan la solución ideal para poder ampliar
nuestras entradas digitales a un máximo ilimitado, y que podemos establecer en nuestra rutina que deter-
minado pulso signifique un dato determinado, y que otra cierta cantidad de pulsos represente otro dato
determinado.
SERIN
Este comando se usa para recibir uno o más conjuntos de datos en un PIN de entrada determinado, en
formato “standard asíncrono”, usando 8bit de datos, sin paridad y un bit de stop (8N1). Veamos el orden
en que escribimos este comando en un programa:
“Pin” establece el PIN de entrada del PICAXE usado para recibir los datos.
“Baudmode” especifica el modo en el que se transferirán el o los datos, de acuerdo con los siguientes
valores:
“Variable/s” establece que el comando SERIN comience a guardar datos en la variable asociada (w0,
w1, b1, b2, etc.). Si el nombre de “variable” está sola o sea, si hay un sólo punto establecido para alma-
cenar los datos entrantes, el valor del carácter ASCII recibido es guardado en esa variable. Si la variable
es precedida por el signo #, el comando SERIN convierte un valor decimal en ASCII y guarda el resultado
en esa variable. Por ejemplo, si en un programa escribo las sentencias:
Serin 6,T2400,b1
47
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 48
SEROUT
Envía uno o más conjuntos de datos a un pin de salida, en formato “standard asíncrono”, usando 8 bit
de datos, sin paridad y un bit stop (8N1). La sintaxis con la que se escribe este comando en un programa
es la siguiente:
Variable/s: Este dato, establece la variable o variables que contienen los datos a enviar. Si la variable es
precedida por el signo #, el comando SEROUT convierte un valor decimal en ASCII y guarda el resultado
en esa variable. Se puede enviar cadenas de texto, precedidas por comillas y encerradas en parénte-
sis, por ejemplo: (“Hola”). La figura 32 muestra un ejemplo de uso de este comando en una rutina.
SETINT
48
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 49
“Input” es una variable o constante que establece las condiciones de entrada y nos dice qué entrada
es la que va actuar en el efecto de interrupción.
“Mask” es una variable/constante (75-225) que especifica la máscara. La máscara es la función que se
tiene que cumplir para ejecutar la interrupción.
El PIN de interrupción se comprueba entre la ejecución de cada línea de código del programa e, inclu-
sive, durante cualquier orden de pausa.
Si la condición particular de entrada de interrupción se cumple (es cierta), se ejecuta un “gosub” para la
subrutina de interrupción inmediatamente. Cuando termina la ejecución de la subrutina de interrupción,
el programa continúa en la línea siguiente desde donde se produjo la llamada a la interrupción del pro-
grama principal.
La condición de entrada de interrupción es cualquier patrón de “0” y “1” en el “terminal de entrada de
interrupción”, enmascarado por el byte mask (máscara). Por consiguiente, cualquier bit enmascarado por
un “0” en la mascara será ignorado. Veamos el siguiente ejemplo:
Para interrumpir con entrada input0 a nivel alto, input1 a nivel alto e input2 a nivel bajo
Setint %00000011, % 00000111
Se admite sólo un patrón de entrada en cualquier momento. Para desactivar la interrupción se debe eje-
cutar una orden SETINT con el valor “0” como byte de máscara.
NOTAS:
1) Cada programa que usa la orden SETINT debe tener la correspondiente subrutina de interrupción (ter-
mina con el correspondiente retorno al programa principal con RETURN) al final del programa principal.
2) Cuando ocurre una interrupción, será atendida inmediatamente quedando inhabilitada cualquier inte-
rrupción del programa principal. Si se desease ejecutar nuevamente una interrupción deberá progra-
marse dentro de la subrutina de interrupción en ejecución. Queda claro que después de ser atendida
una interrupción y ejecutar la subrutina asociada quedan habilitadas las peticiones de interrupción del
programa principal.
3) Si la condición de interrupción no es atendida dentro de la subrutina, una segunda llamada de inte-
rrupción puede ocurrir inmediatamente.
4) Después de ser ejecutado el código de la subrutina de interrupción, la ejecución del programa conti-
49
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 50
BRANCH
Causa que el programa salte a una posición diferente, basada en una variable indexada. La etiqueta
que especifica la dirección, debe estar en la misma etiqueta de la subrutina que contiene la instrucción
BRANCH (al igual que FOR…NEXT). La sintaxis de este comando es la siguiente:
“Offset” es una variable/constante que especifica qué dirección usar (0, 1…n).
“direcciones” son etiquetas que especifican a donde ir (a donde debe saltar).
La figura 34 muestra una rutina que incluye este comando.
50
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 51
Este comando, me brindó la solución en varias oportunidades en las cuales la fuente de alimentación me
fallaba por ser muy sencilla y tener, a su vez, una muy alta distorsión armónica en la línea de alimentación.
Si bien uno puede suponer en teoría que con una resistencia de 10kΩ en la entrada o implementando opto-
acopladores podemos suprimir o acondicionar las señales entrantes, en este caso el problema se origina en
la propia fuente y, por mas que hagamos intentos, vamos a tener problemas de lectura.
COUNT
Cuenta el número de pulsos en un PIN, durante un período (Period) y guarda el resultado en Var (variable).
El orden en que escribimos este comando en un programa es el siguiente:
“Pin” debe ser una constante (0..7) ó una variable que contenga un número de 0 a 15 (B0, por ejemplo)
ó un numero de PIN.
51
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 52
SERVO
Envía un pulso por el PIN de salida establecido para el control de un dispositivo de radio control tipo servo.
Aclaremos que no necesariamente tiene que ser para un radio control. En mi caso, lo implemente alám-
bricamente. La sintaxis de programación es la siguiente:
servo pin,pulse
52
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 53
Genera un tono y/o ruido blanco en el PIN especificado. PIN se configura automáticamente como salida.
El orden en que escribimos este comando en un programaes el siguiente:
sound pin,(nota,duración,nota,duración…)
NOTA: En caso de implementar el MODULO Sound IN-OUT, debe verificar que esté realizando las conexio-
nes en el terminal de salida del módulo.
El principal obstáculo cuando se toca música en un microcontrolador PIC es el limitado espacio de
memoria . Todos los chips PICAXE tienen un comando SOUND para hacer ruidos, sin embargo, el número
de notas y velocidad de reproducción o “tempo”, es muy limitado ya que el dato del comando SOUND
consume toda la memoria de programa disponible. .
oPara resolver esto, el PICAXE-08M tiene el comando nuevo TUNE para reproducir música . El comando
53
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 54
READTEMP - READTEMP12
Este comando, lee la temperatura de un sensor digital de temperatura DS18B20 conectado en una
entrada analógica y almacena su lectura en una variable dada. La sintaxis del parámetro de progra-
mación es la siguiente:
readtemp pin,variable
readtemp12 pin,wordvariable
“Pin” designa la pata del puerto de entrada analógica del PICAXE donde estará conectado el sensor.
“Variable” designa la posición donde se almacena el byte leído.
READTEMP: la resolución de la lectura es de “enteros” de grado y el sensor funciona desde -55ºC hasta
+125ºC. El bit 7 indicará si los valores de temperatura son positivos (0) o negativos (1).
READTEMP12: Para programadores avanzados. La temperatura viene expresada con una resolución de
0,125ºC y necesita 12 bits para su representación digital. El usuario debe interpretar los datos a través de
cálculo matemático. Para saber más sobre el uso de esta instrucción debe consultar la hoja de datos
del DS18B20 (www.dalsemi.com).
La rutina de ejemplo mostrada en la figura 39 solo es válida si tenemos el módulo LCD de Revolutions
Actions. Para saber cómo funciona, puede realizar la práctica de simulación en el “Programming Editor”,
tal como venimos explicando en esta obra.
54
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 55
PWMOUT
Este comando, genera una salida PWM continua usando el módulo interno del microcontrolador y solo
puede ser empleado cuando el microcontrolador tenga una salida específica para esta función.
Este comando, es diferente al comando PWM que vimos anteriormente, ya que PWMOUT funciona hasta
que otra orden de PWMOUT sea indicada. Este comando resulta eficiente para el control de velocidades
de un motor, en proyectos de sistemas X10 y en comunicaciones.
Sencillamente, para detener la orden PWMOUT, tan solo debemos enviar otra orden con un valor en
period = 0. La sintaxis de esta instrucción es la siguiente:
“Pin” define la pata de salida en la que se generarán los pulsos (siempre es 3 en el PICAXE-18X, 2 en el
PICAXE-08M y 1 ó 2 en los PICAXE 28X/40X).
“Period” es una variable/constante (0-255) que especifica el período del pulso.
“Duty” es una variable/constante (0-1023) que especifica el ciclo de trabajo de la señal PWM.
A los fines de referencia, las fórmulas de cálculo para saber cuál es la frecuencia de los pulsos produci-
dos y el ciclo de actividad son las siguientes:
SETFREQ
Establece la frecuencia interna del reloj para el microprocesador PICAXE-18X para 4MHz (por defecto) o
para 8MHz. La forma en que se escribe la instrucción es:
setfreq freq
Por ejemplo:
setfreq m4 'frecuencia interna a 4MHz
setfreq m8 'frecuencia interna a 8MHz
55
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 56
SLEEP
Coloca al microcontrolador en modo de bajo consumo (duerme) por un período de tiempo indicado
en seconds segundos. Los retardos pueden ser de hasta 65535 segundos (aproximadamente 18 horas).
La sintaxis de programación es la siguiente:
sleep seconds
La instrucción SLEEP usa el WatchDog Timer, por lo que es independiente de la frecuencia del oscilador
utilizado. La resolución es de aproximadamente 2,3 segundos y la exactitud es de aproximadamente un
99,9%, aunque puede variar de acuerdo al dispositivo y la temperatura. El consumo se reduce en una
relación 1/100.
Los dados hasta aquí son la mayoría de los comandos que acepta PICAXE, no son todos, existen otros
específicos que serán explicados cuando se empleen en aplicaciones especiales. ☺
56
Cap 2 - Trabajando con PICAXE 9/6/11 10:19 AM Página 58
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 59
CAPÍTULO 3
Hemos visto en qué consiste el
sistema PICAXE y ya sabemos
cuáles son los comandos para
poder programarlo en BASIC,
además, en el Nº 16 de esta
colección “Club Saber
Electrónica”, explicamos cómo
se programa un PICAXE por
medio de diagramas de flujo
utilizando el Programing Editor.
Resta ahora comenzar a pro-
gramar en BASIC utilizando lo
aprendido en el capítulo 2 de esta obra, tema del que nos ocuparemos a continuación.
APRENDIENDO A PROGRAMAR
PICAXE
INTRODUCCIÓN
Para que un microcontrolador desarrolle una tarea mediante la ejecución del programa que tiene gra-
bado en su memoria, es preciso que el mismo esté alimentado y posea componentes externos que
permitan su funcionamiento. Normalmente se emplean resistencias, diodos emisores de luz, capacito-
res, buzzers piezoeléctricos (zumbadores), interruptores, etc.
El objetivo de este texto es que Ud. utilice al microcontrolador PICAXE como un elemento multipro-
pósito y le saque “el mayor jugo posible”.
Antes de explicar cómo se puede realizar la prueba de los componentes que trabajan con el micro-
controlador, daremos algunas consideraciones generales sobre las fuentes de energía que usaremos
para alimentar a nuestro circuito.
59
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 60
60
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 61
Un Diodo Emisor de Luz (LED) es un componente electrónico que emite luz cuando la corriente pasa a
través de él. Un LED es un tipo de diodo especial. Un diodo es un componente que sólo permite el flujo
de corriente en una dirección.
Al utilizar un diodo, el mismo debe estar conectado en la dirección correcta. La pata positiva (ánodo) de
un LED es más larga que la pata negativa (mostrada por una barra en el símbolo). La pata negativa tam-
bién posee un extremo plano en la cubierta plástica del LED. En la figura 2 se puede observar el aspec-
to y el símbolo de un led.
61
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 62
Este programa debe encender y apagar el LED (conectado al pin de salida 0) una vez por segundo.
Para realizar esta primera práctica, ejecute el utilitario “Editor de Programa” según lo descrito en este mis-
mo capítulo; luego, escriba el programa anterior, conecte la placa entrenadora con el PICAXE coloca-
do, asegúrese que el jumper correspondiente esté en el lado de programación, conecte uno de los leds
de la placa en la salida “0”, descargue el programa (asegúrese que el entrenador esté bien conectado
por medio del cable al puerto serial de la PC), luego corra el jumper a la posición salida y vea si obtie-
ne el funcionamiento deseado.
Si el LED no funciona verifique:
1. que el LED esté conectado en la salida “0” (por medio de un simple cablecito).
2. que se esté utilizando la resistencia correcta en la placa entrenadora y que el LED esté en el sentido
correcto.
3. que se esté utilizando el número de pin correcto dentro del programa.
4. que todos los componentes estén bien soldados.
Para la prueba, se puede emplear también el circuito de una mascota virtual (figura 4) dado que será
uno de los proyectos que presentaremos más adelante.
El programa de la tabla 1 enciende y apaga 15 veces al LED conectado al pin de salida 0 utilizando
una técnica de programación BASIC llamada “bucle for...next” (esta técnica no puede utilizarse con or-
ganigramas).
______________________________________________________________
Tabla 1: Programa para encender y apagar un led 15 veces
Main:
For b1 = 1 to 15 ;inicio de un bucle
High 0 ;se pone en alto la salida “0”
Pause 500 ;se hace una pausa de 1/2 seg.
Low 0 ;se pone en estado bajo la salida “0”
Pause 500 ;se hace una pausa de 1/2 seg.
Next b1 ;se continúa con el bucle hasta que termine
End ; fin del programa
________________________________________________________________
El número de veces que el código debe repetirse se almacena en la memoria del chip PICAXE utilizan-
do una “variable” llamada b1 (el PICAXE tiene 14 variables nombradas de b0 a b13). Una variable es un
62
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 63
63
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 64
Main:
Sound 2, (65,100)
Sound 2, (78,100)
Sound 2, (88, 100)
Sound 2, (119, 100)
Go to main
Este programa hará que el zumbador (conectado al pin de salida 2) haga 4 sonidos diferentes (valores
65, 78, 88, 119), siguiendo el diagrama de flujo de la figura 6.
“main” (del inglés “principal), es una etiqueta que dice que está por em-
pezar el programa.
“sound 2” es una instrucción que dice que el PICAXE genere un sonido y
lo emita por la salida 2, cuya frecuencia dependerá del primer número
que está entre paréntesis en la instrucción y su valor puede ser cualquie-
ra entre 0 y 127.
De la misma mamera que antes, podemos probar este programa, utili-
zando el entrenador propuesto en este capítulo y conectando el zumba-
dor en la salida 2. Ejecute el utilitario “Editor de Programa”; luego, escriba
el programa anterior, conecte la placa entrenadora con el PICAXE colo-
cado, asegúrese que el jumper correspondiente esté en el lado de pro-
gramación, conecte el zumbador en la salida “2”, descargue el progra-
FIGURA 6 ma (asegúrese que el entrenador esté bien conectado por medio del ca-
ble al puerto serial de la PC), luego corra el jumper a la posición salida y
vea si obtiene el funcionamiento deseado.
Si el zumbador no funciona verifique:
1. Que el valor del sonido (primer número en el paréntesis) esté entre 0 y 127.
2. Que se esté utilizando el número de pin correcto dentro del programa.
3. Que todas las conexiones estén bien soldadas.
64
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 65
El programa BASIC mostrado en la tabla 2 utiliza un bucle for...next para emitir 120 sonidos diferentes, uti-
lizando la variable b1 para almacenar el valor (tono) del comando sound.
El número almacenado en la variable b1 aumenta 1 en cada bucle (1-2-3-etc.); por lo tanto, al utilizar la
variable b1 en la posición del tono, la nota se cambia en cada bucle. El programa de la tabla 3 realiza
la misma tarea, pero en orden inverso (contando el tono en cuenta regresiva).
_____________________________________________________________________
Tabla 2
Main:
For b1 = 1 to 120 step-1 ,iniciar un bucle for … next
Sound 2, (b1, 50) ,emita un sonido con el tono b1
Next b1 , siguiente b1
End ,fin del programa
_____________________________________________________________________
Tabla 3
Main:
For b1 = 120 to 1 step-1 ,iniciar un bucle for … next
Sound 2, (b1, 50) ,emita un sonido con el tono b1
Next b1 ,siguiente b1
End ,fin del programa
_____________________________________________________________________
Le aconsejamos que baje de Internet el programa para trabajar con PICAXE y realice sus propios “ejem-
plos”. Si no tiene los programas para trabajar con los microcontroladores PICAXE, puede bajarlos sin car-
go de nuestra web: www.webelectronica.com.mx, haciendo clic en el ícono password e ingresando la
clave: “picaxe212”.
65
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 66
66
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 67
67
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 68
FIGURA 11
68
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 69
analógico (un número entre 0 y 255) dentro de la variable b1. Una vez que este número está en la varia-
ble b1, el mismo se puede probar para ver si es mayor que 100 ó mayor que 50. Si es mayor que 100
la salida 4 se enciende, si está entre 50 y 100 se enciende la salida 0, y si es menor de 50 ambas salidas
se apagan.
De esta manera culminamos este capítulo “presentación” de los microcontroladores PICAXE. Veamos
ahora cómo trabajar con los PICAXE-18.
69
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 70
Algunas de las aplicaciones que utilizan microcontroladores incluyen artefactos domésticos, sistemas de
alarma, equipo médico, subsistemas de automóviles y equipo electrónico de instrumentación.
Algunos automóviles modernos contienen más 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 programación en lengua-
je C. Sin embargo, debido a la complejidad de este lenguaje, es muy difícil, para estudiantes muy jóve-
nes de bachillerato, el uso adecuado de dicho lenguaje.
Algunas veces es difícil recordar cuáles pines están conectados a cuáles dispositivos. El comando sym-
bol puede, en estos casos, ser utilizado al inicio del programa para renombrar las entradas y salidas. No-
te que este programa asume la conexión de un timbre externo al pin de salida 7. Ver tabla 5.
_______________________________________________________________________
TABLA 5
70
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 71
Recuerde que los comentarios [explicaciones posteriores al símbolo de apóstrofe (‘)] facilitan mucho la
comprensión de cada línea del programa. Estos comentarios son ignorados por la computadora al des-
cargar un programa al PICAXE. “Todo lo que en una línea está después de (‘) es ignorado por el pro-
grama”.
Las etiquetas (“main:” en el programa de la tabla 5) pueden ser cualquier palabra (con la excepción de
palabras claves como por ejemplo “switch”) pero DEBEN empezar con una letra. Cuando la etiqueta es
definida por primera vez debe llevar al final el símbolo de dos puntos (:). Esto indica a la computadora
que la palabra es una nueva etiqueta.
Este programa utiliza el comando wait. Los comandos wait y pause se utilizan para crear retardos o tiem-
pos muertos. Sin embargo, el comando wait puede ser utilizado únicamente con segundos enteros mien-
tras que pause se puede utilizar para retardos más cortos (el mismo se asigna en milésimas de segundo).
Al comando wait se le pueden asignar números del 1 al 65, los cuales deben escribirse después del co-
mando. Al comando pause se le pueden asignar números entre 1 y 65535.
Es una buena técnica de programación usar tabulaciones (o espacios) al inicio de líneas sin etiquetas de
manera que los comandos estén alineados. El término “espacios en blanco” es utilizado por programa-
dores para definir tabulaciones, espacios y líneas en blanco. Dichos “espacios en blanco”, utilizados co-
rrectamente, hacen al programa mucho más fácil de leer y entender (vea las tabulaciones que hemos
hecho en el programa de la tabla5; en la primera columna ponemos etiquetas o definimos variables, en
la segunda columna colocamos las instrucciones y en la tercera columna están los comentarios que fa-
cilitan la comprensión del programa).
NOTA: Algunas versiones antiguas de lenguaje BASIC utilizan “números de línea” en vez de etiquetas pa-
ra trabajar con los comandos goto. Desafortunadamente, este sistema puede ser muy inconveniente ya
que si el programa es modificado posteriormente agregando o eliminando líneas, todos los números de
línea posteriores deben ser modificados. El sistema de etiquetas, utilizado en la mayor parte de las versio-
nes modernas de lenguaje BASIC, supera este problema automáticamente.
El “cerebro” del sistema PICAXE es el microcontrolador de 18 pines PIC16F627. Este PIC posee un progra-
ma que ha sido grabado para convertirlo en un elemento del sistema PICAXE (se llama PICAXE-18).
Aunque los microcontroladores son relativamente baratos (algunos microcontroladores cuestan menos
de 2 dólares), los mismos son dispositivos muy complejos que contienen miles de transistores, resistencias
y otros componentes electrónicos.
El microcontrolador PICAXE almacena sus programas (firmware) en su memoria FLASH “no volátil”. La ven-
taja de esta memoria es que no pierde el programa descargado cuando la fuente de alimentación (ba-
terías) es desconectada del circuito (cuando las baterías son reconectadas el programa se inicia nueva-
mente). Sin embargo, cuando desee reprogramar el PICAXE, puede descargar un nuevo programa; es-
ta acción borra el viejo programa almacenado en la memoria y almacena el nuevo programa en la me-
moria de programa. La memoria sólo permite el almacenamiento de un programa a la vez.
Tome en cuenta que no es posible sacar el programa fuera de la memoria del PICAXE para “leer-
lo”; por ende, si desea guardar el código de un programa para utilizarlo posteriormente debe guar-
71
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 72
El microcontrolador contiene además de la memoria ROM (Read Only Memory - Memoria de sólo lec-
tura), memoria temporal RAM (Random Access Memory - Memoria de Acceso Aleatorio).
La memoria RAM es una memoria “temporal” utilizada para almacenar información mientras el progra-
ma es ejecutado. La misma es utilizada normalmente para almacenar respuestas de sumas matemáti-
cas que el microcontrolador hace mientras está trabajando. Esta memoria es “volátil”, lo cual significa
que tan pronto las baterías son desconectadas, la información almacenada en la misma se pierde.
Hay 14 bytes de memoria temporal disponibles y los mismos son denominados desde b0 a b13 dentro
de los programas.
La figura 16 muestra el circuito básico PICAXE-18. El resistor de 4k7 (4700Ω), conectado en el pin 4, se
usa como resistencia de “pull-up” para quitar al micro del estado de reset. Si desea colocar un sistema
de reset, debe conectar un interruptor o pulsador entre el pin 4 y masa (tierra, gnd) de modo que al ser
presionado se produzca el estado de reset del micro.
El microcontrolador PICAXE está preprogramado con un firmware de carga que permite la descarga di-
recta de programas con el cable suministrado de sólo tres terminales. Los microcontroladores PIC comu-
nes no tienen este progra-
ma y por ende no pueden
ser programados mediante
el sistema PICAXE.
El microcontrolador PICA-
XE-18A es casi idéntico al
microcontrolador PICAXE-
18 estándar, pero es ligera-
mente más costoso ya que
tiene el doble de capaci-
dad de memoria (aproxi-
madamente 80 líneas de
programación BASIC en
vez de 40) y salidas analó-
gicas de alta resolución (en
vez de baja resolución).
El sistema PICAXE utiliza
una interfaz al puerto serie FIGURA 16
72
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 73
NOTA: Hoy las computadoras portátiles ya no tienen puerto serial y, en ese caso, debe usar un adapata-
dor (vea el capítulo 1), por otro lado, a mayor parte de las computadoras de escritorio tienen dos puer-
tos serie, normalmente denominados COM1 y COM2. El software “Editor de Programación (Programming
Editor)” debe ser configurado con el puerto al cual el microcontrolador está conectado. Para ello, en el
menú desplegable seleccione Ver -> Opciones -> Puerto Serie, para elegir el puerto serie correspon-
diente en su computadora.
Si ya compró un cable de sistema PICAXE armado y utiliza una computadora que posee el antiguo co-
nectador de puerto serie de 25 pines, utilice un adaptador 9-25 para poder conectar el cable PICAXE de
9 pines. Estos adaptadores pueden ser comprados en cualquier tienda (casa) especializada en compu-
tadoras. Pero también, Ud. puede armar el cable siguiendo las instrucciones que le daremos oportuna-
mente.
Con frecuencia, es útil repetir una parte de un programa varias veces, por ejemplo al encender/apagar
sucesivamente un diodo LED (Light Emitting Diode, Diodo emisor de luz). En estos casos un bucle for…next
puede ser utilizado. El programa de la tabla 6 enciende y apaga 15 veces el diodo LED conectado al
pin de salida 7. El número de veces que el código debe ser repetido es almacenado usando la variable
b0 (el PICAXE tiene 14 variables de 1 byte para uso general, nombradas de b0 a b13 en la memoria RAM
del chip PICAXE). Estas variables pueden ser renombradas usando el comando symbol con el fin de ha-
cerlas más fácil de recordar.
_______________________________________________________________________
TABLA 6
main:
73
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 74
Note nuevamente cómo los espacios en blanco han sido utilizados para mostrar claramente todos los
comandos contenidos entre los comandos for y next.
_____________________________________________________________________________________
TABLA 7
74
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 75
Intente seguir el programa para ver si puede comprenderlo; si no lo logra.... no se preocupe, recién es-
tamos empezando.
Los timbres emiten un sonido cuando están conectados a una fuente de alimentación.
Este sonido, usualmente, está “fijo” a una frecuencia determinada; así, los timbres pueden emitir un solo
“tono”. Los zumbadores electrónicos usan un tipo de sistema y pueden ser utilizados para emitir sonidos
en diferentes tonos al proveerlos con una salida de diferentes frecuencias.
El sistema PICAXE puede crear automáticamente sonidos de diferentes frecuencias utilizando el coman-
do sound (ver tabla 8).
_____________________________________________________________________________________
TABLA 8
main:
sound 6, (50,100) 'emitir un sonido en salida 6 con frecuencia 50 y longitud 100
sound 6, (100,100) 'emitir un sonido en salida 6
sound 6, (120,100) 'emitir un sonido en salida 6
pause 1000 'esperar 1 segundo
goto main 'saltar al inicio del programa (main)
_____________________________________________________________________________________
Para probar este programa se debe instalar un zumbador electrónico en el tablero tutorial (entrenador).
Para hacer esto, ubique los conectores del zumbador, marcados con la palabra PIEZO (figuras 19 y 20).
Luego suelde el cable rojo al agujero marcado “+” y el cable negro al agujero marcado “-”.
75
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 76
76
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 77
Un sensor digital es un simple sensor del tipo “interruptor” que sólo puede estar en dos posiciones: encen-
dido ó apagado. Algunos ejemplos de sensores digitales comunes son:
· Microinterruptores
· Interruptores de botón de presión e interruptores oscilantes
· Interruptores de lengüeta
_____________________________________________________________________________________
TABLA 12
main: 'hacer etiqueta llamada “main”
if input6 is on then flash 'si la entrada 6 (Input 6) está encendida ir
'a “flash” sino ir a “main”
goto main
flash: 'hacer etiqueta llamada “flash”
high 7 'encender salida 7 (output 7)
pause 2000 'esperar 2 segundos
low 7 'apagar salida7
goto main 'ir a “main”
_____________________________________________________________________________________
En este programa las tres primeras líneas forman un bucle continuo. Si la entrada está apagada el pro-
grama se reiniciará una y otra vez.
Una vez que el interruptor es presionado, el programa salta a la etiqueta llamada “flash”. El programa lue-
go activa la “salida 7” por dos segundos antes de regresar nuevamente a “main”.
Note cuidadosamente la ortografía en la línea del comando if…then – entrada6 (input6) es una sola pa-
labra (sin espacios en blanco). Note también que únicamente se debe escribir la etiqueta posterior al co-
mando then – no se permite ninguna otra palabra aparte de la etiqueta.
77
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 78
78
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 79
De esta manera damos por terminada la edición de este texto. Aclaramos que en este capítulo hemos
hecho referencia al PICAXE-18 porque en el tomo del Club Nº 29 trabajamos con el PICAXE-08.
Si Ud. desea descargar el curso programado con Test de Evaluación, asistencia por Internet y Diploma
avalado por importantes Instituciones, siga las instrucciones que brindamos en la página 2.. ☺
79
Cap 3 - Aperendiendo a Programar 9/6/11 10:23 AM Página 80
APÉNDICE
http://diwo.bq.com/course/aprende-robotica-y-programacion-con-bitbloq-2
Saber Electrónica 81
APÉNDICE
82 Saber Electrónica
Robótica para Niños, Adolescentes y Adultos
Saber Electrónica 83
APÉNDICE
84 Saber Electrónica
Robótica para Niños, Adolescentes y Adultos
Saber Electrónica 85
APÉNDICE
86 Saber Electrónica
Robótica para Niños, Adolescentes y Adultos
Saber Electrónica 87
APÉNDICE
88 Saber Electrónica
Robótica para Niños, Adolescentes y Adultos
Saber Electrónica 89
APÉNDICE
90 Saber Electrónica
3ª de forros 2.qxd 9/5/11 12:54 PM Página 3ªFo1
4ª de forros.qxd 9/5/11 12:55 PM Página 4ªFo1